通过 Bitbucket 管道部署到 AWS 时如何启动节点服务器?

问题描述 投票:0回答:1

我正在使用 Bitbucket 管道将我的 Node 应用程序部署到运行 Linux 的 EC2 实例。我创建了一个脚本来启动我的应用程序:

# Source nvm and load Node.js environment for root user
export NVM_DIR="/home/ec2-user/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

# Navigate to the API directory
cd /api

# Start the node server
npm start

我从 AppSpec.yml 中调用该脚本,如下所示:

hooks:
  AfterInstall:
      - location: deploy/nodestart.sh
        timeout: 30
        runas: root

管道执行失败。通过AWS控制台我可以看到应用程序的启动实际上成功了,但是Node服务器的启动是一个阻塞事件。脚本挂起,然后超过超时,被终止,然后部署失败。

如何与部署异步启动 Node,以便部署干净地终止?谢谢您的建议!

AWS Console Log

node.js amazon-web-services bitbucket-pipelines aws-code-deploy bitbucket-aws-code-deploy
1个回答
0
投票

最终,我将其设置为作为服务运行,并在 /etc/systemd/system 中包含 lcapi.service 定义文件。

我将其复制作为管道部署的一部分。这些命令启用服务,重新加载操作系统的新服务定义,然后启动服务。

systemctl启用/etc/systemd/system/lcapi.service systemctl 守护进程重新加载 systemctl 启动 lcapi.service

有关设置 Linux 服务的更多信息,请参阅:https://natancabral.medium.com/run-node-js-service-with-systemd-on-linux-42cfdf0ad7b2

© www.soinside.com 2019 - 2024. All rights reserved.