我有一个使用Node.js编写的应用程序,正在通过Codeship自动部署到CodeDeploy AWS部署系统中。
在部署过程中,我在appspec.yml中设置了当前运行的Web应用程序停止运行。一旦部署完成,我希望Web应用程序再次启动。
os: linux
files:
- source: /
destination: /var/www/app2
hooks:
AfterInstall:
- location: bash_scripts/stop_forever.sh
runas: ec2-user
ApplicationStart:
- location: bash_scripts/start_forever.sh
runas: ec2-user
然而,我尚未能够使这两个脚本成功地从appspec.yml文件中通过部署被调用。
我在AWS部署代理日志中看到的当前错误是:
Error CodeScriptMissing
Script Name /var/scripts/stop_forever.sh
MessageScript does not exist at specified location: /var/scripts/stop_forever.sh
Log TailLifecycleEvent - ApplicationStop
这似乎是指旧版本的appspec.yml文件,该文件尝试在不同位置运行这些脚本。尽管我已经更改了部署包中appspec.yml文件的内容,但每次部署时仍然出现相同的错误消息。
除了上面列出的appspec.yml文件外,我还尝试进行以下更改:
- 不为每个钩子列出runas参数
- 引用已部署目录中的脚本
- 引用已部署目录之外的脚本
- 最初将version参数设置为0.0
不幸的是,在appspec.yml故障排除方面,网上几乎没有任何信息,除了AWS文档。
我做错了什么非常明显的事情吗?
sudo service codedeploy-agent status
这是用来检查状态的命令。还有 AWS 文档。https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-linux.html - Santosh