Node.js 应用程序未在 AWS Elastic Beanstalk 上运行

标签 node.js amazon-web-services amazon-elastic-beanstalk

我什至无法成功 Basic Express deployment tutorial on AWS Elastic Beanstalk .

问题

  • 我一步步按照教程进行操作
  • 运行 eb deploy 时,命令成功运行。但是,该应用程序未运行
  • 在 AWS Elastic Beanstalk Web 控制台上,我的实例正在以严重状态运行。错误是以下服务未运行:应用程序
  • 通过 SSH 连接 EC2 实例(在 64 位 Amazon Linux/4.7.1 上运行的 Node.js)时,npmnode 命令均不可用。我通过 Web 控制台或 EB CLI 重新创建了环境,命令仍然不可用
  • 检查eb日志时,/var/log/nodejs/nodejs.log为空

问题:有人知道它是关于什么的或者有人遇到过类似的情况吗?

尝试

我已经尝试过:

  • 通过 EB CLI 或上传 zip 存档进行部署
    • 仅部署相关代码(使用 .ebignore)
    • 使用 dist/ 文件夹和 node_modules/ 部署代码
  • 使用 npm start 命令添加 .ebextension/some_config.config
  • 更改配置中 NodeJs 的版本
  • 在启动命令中设置npm install && npm start,因为我最初认为缺少依赖项

更新

  • 2019 年 2 月 1 日

    我实际上使用了react-boilerplate然后打开an issue 。部署似乎成功(CLI 中没有错误),但实例没有响应,并且出现“实例中没有数据”错误。

  • 2019 年 2 月 15 日

    我可以成功部署 react 样板。主要问题是许可。查看答案。

日志

/var/log/eb-activity.log:

[2019-01-16T18:40:23.987Z] INFO  [3216]  - [Application deployment app-c0e5-190116_192242@8/StartupStage1] : Starting activity...
[2019-01-16T18:40:23.988Z] INFO  [3216]  - [Application deployment app-c0e5-190116_192242@8/StartupStage1/AppDeployEnactHook] : Starting activity...
[2019-01-16T18:40:23.988Z] INFO  [3216]  - [Application deployment app-c0e5-190116_192242@8/StartupStage1/AppDeployEnactHook/01stop_xray.sh] : Starting activity...
[2019-01-16T18:40:26.103Z] INFO  [3216]  - [Application deployment app-c0e5-190116_192242@8/StartupStage1/AppDeployEnactHook/01stop_xray.sh] : Completed activity. Result:
  Executing: if ( initctl status xray | grep start ); then initctl stop xray; fi
  xray start/running, process 2277
  xray stop/waiting
[2019-01-16T18:40:26.103Z] INFO  [3216]  - [Application deployment app-c0e5-190116_192242@8/StartupStage1/AppDeployEnactHook/02start_xray.sh] : Starting activity...
[2019-01-16T18:40:26.208Z] INFO  [3216]  - [Application deployment app-c0e5-190116_192242@8/StartupStage1/AppDeployEnactHook/02start_xray.sh] : Completed activity.
[2019-01-16T18:40:26.208Z] INFO  [3216]  - [Application deployment app-c0e5-190116_192242@8/StartupStage1/AppDeployEnactHook/10stop.sh] : Starting activity...
[2019-01-16T18:40:27.617Z] INFO  [3216]  - [Application deployment app-c0e5-190116_192242@8/StartupStage1/AppDeployEnactHook/10stop.sh] : Completed activity. Result:
  + /opt/elasticbeanstalk/containerfiles/ebnode.py --action stop-all
  status: Unknown job: nodejs
  status: Unknown job: nodejs
  status: Unknown job: nginx
  status: Unknown job: nginx
  status: Unknown job: httpd
  status: Unknown job: httpd
  Not using a reverse proxy
  Did not find to find status of init job. Assuming stopped.
  Did not find to find status of init job. Assuming stopped.
  Did not find to find status of init job. Assuming stopped.
  Did not find to find status of init job. Assuming stopped.
  Did not find to find status of init job. Assuming stopped.
  Did not find to find status of init job. Assuming stopped.
[2019-01-16T18:40:27.617Z] INFO  [3216]  - [Application deployment app-c0e5-190116_192242@8/StartupStage1/AppDeployEnactHook/20clean.sh] : Starting activity...
[2019-01-16T18:40:27.708Z] INFO  [3216]  - [Application deployment app-c0e5-190116_192242@8/StartupStage1/AppDeployEnactHook/20clean.sh] : Completed activity. Result:
  ++ /opt/elasticbeanstalk/bin/get-config container -k app_base_dir
  + EB_APP_BASE_DIR=/var/app
  + rm -rf /var/app
[2019-01-16T18:40:27.708Z] INFO  [3216]  - [Application deployment app-c0e5-190116_192242@8/StartupStage1/AppDeployEnactHook/30app_deploy.sh] : Starting activity...
[2019-01-16T18:40:28.071Z] INFO  [3216]  - [Application deployment app-c0e5-190116_192242@8/StartupStage1/AppDeployEnactHook/30app_deploy.sh] : Completed activity. Result:
  ++ /opt/elasticbeanstalk/bin/get-config container -k app_base_dir
  + EB_APP_BASE_DIR=/var/app
  ++ /opt/elasticbeanstalk/bin/get-config container -k app_staging_dir
  + EB_APP_STAGING_DIR=/tmp/deployment/application
  ++ /opt/elasticbeanstalk/bin/get-config container -k app_deploy_dir
  + EB_APP_DEPLOY_DIR=/var/app/current
  ++ /opt/elasticbeanstalk/bin/get-config container -k app_user
  + EB_APP_USER=nodejs
  + mkdir /var/app
  + mv /tmp/deployment/application /var/app/current
  + chown -R nodejs:nodejs /var/app/current
[2019-01-16T18:40:28.071Z] INFO  [3216]  - [Application deployment app-c0e5-190116_192242@8/StartupStage1/AppDeployEnactHook/40config_deploy.sh] : Starting activity...
[2019-01-16T18:40:28.166Z] INFO  [3216]  - [Application deployment app-c0e5-190116_192242@8/StartupStage1/AppDeployEnactHook/40config_deploy.sh] : Completed activity. Result:
  ++ /opt/elasticbeanstalk/bin/get-config container -k config_staging_dir
  + EB_CONFIG_STAGING_DIR=/tmp/deployment/config
  ++ ls /tmp/deployment/config
  + for i in '$(ls $EB_CONFIG_STAGING_DIR)'
  ++ sed -e 's/#/\//g'
  ++ echo '#etc#init#nodejs.conf'
  + FILE_NAME=/etc/init/nodejs.conf
  + /bin/cp /tmp/deployment/config/#etc#init#nodejs.conf /etc/init/nodejs.conf
[2019-01-16T18:40:28.166Z] INFO  [3216]  - [Application deployment app-c0e5-190116_192242@8/StartupStage1/AppDeployEnactHook/50start.sh] : Starting activity...
[2019-01-16T18:40:29.600Z] INFO  [3216]  - [Application deployment app-c0e5-190116_192242@8/StartupStage1/AppDeployEnactHook/50start.sh] : Completed activity. Result:
  + /opt/elasticbeanstalk/containerfiles/ebnode.py --action start-all
  nodejs start/running, process 3648
  Not using a reverse proxy
[2019-01-16T18:40:29.600Z] INFO  [3216]  - [Application deployment app-c0e5-190116_192242@8/StartupStage1/AppDeployEnactHook/60monitor_pids.sh] : Starting activity...
[2019-01-16T18:40:29.914Z] INFO  [3216]  - [Application deployment app-c0e5-190116_192242@8/StartupStage1/AppDeployEnactHook/60monitor_pids.sh] : Completed activity. Result:
  + '[' -d /etc/healthd ']'
  ++ /opt/elasticbeanstalk/bin/get-config optionsettings --namespace aws:elasticbeanstalk:container:nodejs --option-name ProxyServer
  + PROXY_SERVER=none
  + case "$PROXY_SERVER" in
  + rm -rf /var/elasticbeanstalk/healthd/proxy.pid
  + /opt/elasticbeanstalk/bin/healthd-track-pidfile --name application --location /var/run/nodejs.pid
[2019-01-16T18:40:29.914Z] INFO  [3216]  - [Application deployment app-c0e5-190116_192242@8/StartupStage1/AppDeployEnactHook/70restart_healthd.sh] : Starting activity...
[2019-01-16T18:40:32.351Z] INFO  [3216]  - [Application deployment app-c0e5-190116_192242@8/StartupStage1/AppDeployEnactHook/70restart_healthd.sh] : Completed activity. Result:
  + '[' -d /etc/healthd ']'
  ++ /opt/elasticbeanstalk/bin/get-config optionsettings --namespace aws:elasticbeanstalk:container:nodejs --option-name ProxyServer
  + PROXY_SERVER=none
  + '[' -f /etc/healthd/config.yaml ']'
  + case "$PROXY_SERVER" in
  + /opt/elasticbeanstalk/bin/healthd-configure --appstat-log-path '' --appstat-unit '' --appstat-timestamp-on ''
  + /opt/elasticbeanstalk/bin/healthd-restart

最佳答案

主要遇到的问题:

  1. 未安装 DevDependency
  2. 权限问题

解决方案:

  1. 使用 NPM_USE_PRODUCTION: false 环境变量,因为默认情况下 AWS 使用生产配置
  2. .npmrc 中添加 unsafe-perm=true 作为 magic solution
<小时/>

有关 https://github.com/react-boilerplate/react-boilerplate/issues/2566 的更多详细信息

关于Node.js 应用程序未在 AWS Elastic Beanstalk 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54224947/

相关文章:

database - AWS ElastiCache 与 RDS 只读副本

amazon-web-services - AWS Elastic Beanstalk-Docker与Packer

node.js - 在分数上使用 zscan

node.js - NPM - 错误 : Cannot find module '../'

amazon-web-services - AWS CloudFront 返回错误 NoSuchBucket 并将其自己的域名作为存储桶名称

amazon-web-services - AWS Elastic Beanstalk 环境请求关联 "instance profile"

nginx - Elastic Beanstalk 上的 WebSockets 与 Docker

javascript - TypeError : key must be a string, 存在 GCP 文件类型错误的缓冲区或对象

javascript - 如何在循环中顺序运行请求?

MySQL vs Cassandra 用于 AWS ec2 上的读取密集型 Web 服务