我什至无法成功 Basic Express deployment tutorial on AWS Elastic Beanstalk .
问题
- 我一步步按照教程进行操作
- 运行
eb deploy
时,命令成功运行。但是,该应用程序未运行 - 在 AWS Elastic Beanstalk Web 控制台上,我的实例正在以严重状态运行。错误是
以下服务未运行:应用程序
- 通过 SSH 连接 EC2 实例(在 64 位 Amazon Linux/4.7.1 上运行的 Node.js)时,
npm
和node
命令均不可用。我通过 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
最佳答案
主要遇到的问题:
- 未安装 DevDependency
- 权限问题
解决方案:
- 使用
NPM_USE_PRODUCTION: false
环境变量,因为默认情况下 AWS 使用生产配置 - 在
.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/