我正在尝试使用pm2进程管理器在生产EC2服务器上启动一个node.js应用程序。
当我通过ssh登录实例并运行
然而,我想从名为
以下是将脚本添加到每个部署中并调用pm2 start的位置:appspec.yml
当我从ssh运行脚本并将脚本设置为使用ubuntu运行时,我作为ubuntu登录。为什么在从终端启动pm2和从启动挂钩脚本启动pm2之间会有任何差异?以下是直接从ssh运行的情况:
当我通过ssh登录实例并运行
pm2 start app.js
时,PM2可以正常启动并访问所有环境变量。一切都很好。然而,我想从名为
applicationstart.sh
的Codedeploy钩子脚本中运行pm2 start app.js
,但应用程序因缺少所有环境变量而失败,并显示errored
状态。
![enter image description here](https://istack.dev59.com/2vqJr.webp)
version: 0.0
os: linux
files:
- source: /
destination: /home/ubuntu/teller-install
hooks:
AfterInstall:
- location: scripts/afterinstall.sh
timeout: 1000
runas: root
ApplicationStart:
- location: scripts/applicationstart.sh
timeout: 300
runas: ubuntu
这是应用程序启动脚本:
#!/bin/bash
echo "Running Hook: applicationstart.sh"
cd /home/ubuntu/teller-install/Server/
pm2 start app.js
exit 0
当我从ssh运行脚本并将脚本设置为使用ubuntu运行时,我作为ubuntu登录。为什么在从终端启动pm2和从启动挂钩脚本启动pm2之间会有任何差异?以下是直接从ssh运行的情况:
如果需要解决问题,我可以提供任何必要的信息。谢谢!