如何在 CodeDeploy 完成部署后保留应用程序 运行
How to keep application running after CodeDeploy finishes deployment
我正在尝试自动执行我的应用程序的部署过程,但是我似乎无法弄清楚如何让 CodeDeploy 在完成设置后不终止我的应用程序。我认为这是我在 appstart.sh 中启动我的应用程序的方式的问题,我发现最好的是使用 nohup,它即使在注销后也不应该终止应用程序,但它似乎也没有成功.
当前的脚本是:
appstart.sh:
#!/bin/bash
/scripts/start_server.sh > /dev/null 2> /dev/null < /dev/null &
start_server.sh:
#!/bin/bash
nohup dotnet run --project /var/project/WebServer/WebServer.fsproj &
appspec.yml 勾:
hooks:
ApplicationStart:
- location: scripts/appstart.sh
timeout: 300
runas: root
我已经尝试了六种启动应用程序的方法,但它似乎总是在 CodeDeploy 完成部署后关闭。如果我在部署后通过 SSH 进入实例并使用 nohup 手动启动应用程序,那么即使在注销后它也能正常运行,所以它似乎是我不理解的 CodeDeploy 的一些交互。
部署后保留 WebServer 运行 的一种方法是使用部署将其转变为带有 systemd 的服务。这通常是一个更好的设计,因为通过自动重启和 Syslog 控制提高了应用程序的弹性。
我正在尝试自动执行我的应用程序的部署过程,但是我似乎无法弄清楚如何让 CodeDeploy 在完成设置后不终止我的应用程序。我认为这是我在 appstart.sh 中启动我的应用程序的方式的问题,我发现最好的是使用 nohup,它即使在注销后也不应该终止应用程序,但它似乎也没有成功.
当前的脚本是:
appstart.sh:
#!/bin/bash
/scripts/start_server.sh > /dev/null 2> /dev/null < /dev/null &
start_server.sh:
#!/bin/bash
nohup dotnet run --project /var/project/WebServer/WebServer.fsproj &
appspec.yml 勾:
hooks:
ApplicationStart:
- location: scripts/appstart.sh
timeout: 300
runas: root
我已经尝试了六种启动应用程序的方法,但它似乎总是在 CodeDeploy 完成部署后关闭。如果我在部署后通过 SSH 进入实例并使用 nohup 手动启动应用程序,那么即使在注销后它也能正常运行,所以它似乎是我不理解的 CodeDeploy 的一些交互。
部署后保留 WebServer 运行 的一种方法是使用部署将其转变为带有 systemd 的服务。这通常是一个更好的设计,因为通过自动重启和 Syslog 控制提高了应用程序的弹性。