【问题标题】:Node JS app is crashing on AWS EC2 instanceNode JS 应用程序在 AWS EC2 实例上崩溃
【发布时间】:2021-10-19 11:43:32
【问题描述】:

我已经使用 codedeploy 服务在 ec2 上部署了应用程序,但应用程序崩溃并显示以下错误消息:

Script at specified location: scripts/start_server failed to complete in 100 seconds

下面是我的 appspec.yml 文件:

version: 0.0
os: linux
files:
  - source: /
    destination: /tmp/
hooks:
  AfterInstall:
     - location: scripts/install_dependencies
       timeout: 100
       runas: root
  ApplicationStart:
     - location: scripts/start_server
       timeout: 100
       runas: root

install_dependencies

cd /tmp/

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
. ~/.nvm/nvm.sh
nvm install node

npm install

start_server

cd /tmp/

node server.js

有人告诉我我做错了什么。

【问题讨论】:

    标签: amazon-web-services amazon-ec2 aws-code-deploy


    【解决方案1】:

    您的部署因为这个node server.js 而挂起。这将启动您的应用程序,仅此而已。它永远不会完成,因此 CodeDeploy 会超时等待它完成。

    解决此问题的一种方法是通过systemd 启动您的应用程序。因此,您必须创建一个systemd 单元文件。有很多例子:

    其他方式可能涉及使用pm2forever 运行您的应用程序。

    【讨论】:

    • 谢谢,它现在工作正常我已经使用了 PM2,但它只在 http:// 端口上工作,而不是在 https:// 上工作,即使我已经将 https:// 包含在我的安全组中,以便从任何地方访问。
    • @Digvijay 很高兴它起作用了。对于 https,您需要在实例上使用 nginx 设置正确的 ssl 证书,或者在其前面使用负载均衡器。
    • @Digvijay 没问题。您尝试设置 nginx 或获取负载均衡器(更容易),如果有困难,请使用相关信息提出新问题。对于有效的 SSL 证书,您还需要自己的域。
    • 我也尝试过在 aws beanstalk 上部署节点应用程序,但它无法访问并在此处显示错误是存在一些解决方案但我没有清除的链接。如果你能帮助我,这里是链接stackoverflow.com/questions/67508414/…
    猜你喜欢
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    相关资源
    最近更新 更多