我正在使用AWS codedeploy部署我的网站。 我的应用程序停止步骤如下所示:
ApplicationStop: - location: deploymet/codedeploy/commands/application-stop/remove-self-from-loadbalancer.sh timeout: 600 runas: root
这个脚本看起来像这样:
source ~/.bashrc cd /var/www/html/laravel if [ "$LARAVEL_ENV" = "production" ] then php artisan deployment:remove-self-from-loadbalancer --env=$LARAVEL_ENV fi
手动运行脚本需要一秒钟左右的时间,但部署运行时会挂起并在30秒后失败,并将Script at specified location: deploymet/codedeploy/commands/application-stop/remove-self-from-loadbalancer.sh failed to complete in 30 seconds抛出Script at specified location: deploymet/codedeploy/commands/application-stop/remove-self-from-loadbalancer.sh failed to complete in 30 seconds 。
使用的源将env设置为生产,并且我可以看到预期的效果:在部署开始后,几乎立即从负载平衡器中删除服务器。
据我所知,这个超时不应该发生,直到10分钟后。 为什么这么快发生?
我们能够解决这个问题。 仔细阅读文件 ,我的同事提出了一个build议。 CodeDeploy代理将最新的成功部署安装存储在/opt/codedeploy-agent/deployment-root/some-dir/some-other-dir 。 在下一次部署期间,存储在那里的appspec和脚本将用于部署的第一步。 所以我们必须login到每台服务器,然后转到该目录,然后手动更改appspec中的超时值。