【问题标题】:How to restart my python app automatically in AWS CodeDeploy如何在 AWS CodeDeploy 中自动重启我的 python 应用程序
【发布时间】:2021-05-01 18:52:55
【问题描述】:

我对我的 botMain.py 文件进行了一些更改。 CodeDeploy 成功,但更改在应用程序中无效。所以,我编辑了我的 RunMyBot.sh 文件,但仍然没有任何变化。

appspec.yml

version: 0.0
os: linux
files:
  - source: /
    destination: /home/mybot
hooks:
  AfterInstall:
    - location: scripts/install_dependencies.sh
      timeout: 300
      runas: root
  ApplicationStart:
    - location: scripts/RunMyBot.sh
      timeout: 300
      runas: root

RunMyBot.sh(新)

#!bin/bash

sudo /usr/bin/pm2 restart myBot
nohup python3 botMain.py & /dev/null 2> /dev/null < /dev/null &

RunMyBot.sh(旧)

serverfile="/lib/systemd/system/mypythonservice.service"
echo "[Unit]" > $serverfile
echo "Description=My Python Service" > $serverfile
echo "After=multi-user.target" >> $serverfile

echo "[Service]" >> $serverfile
echo "Type=idle" >> $serverfile
echo "ExecStart=/usr/bin/python /home/mybot/botMain.py" >> $serverfile
echo "Restart=on-failure" >> $serverfile

echo "[Install]" >> $serverfile
echo "WantedBy=multi-user.target" >> $serverfile
cat $serverfile

sudo chmod 644 /lib/systemd/system/mypythonservice.service

sudo systemctl daemon-reload

sudo systemctl enable mypythonservice.service

我的实例用户数据中也有相同的服务器文件脚本,所以我从 RunMyBot.sh 中删除了它

【问题讨论】:

    标签: python amazon-web-services amazon-ec2 aws-code-deploy


    【解决方案1】:

    在部署新版本应用之前,您必须停止现有nohup。您可以通过将ApplicationStop 部分添加到您的appspec.yml 来做到这一点。

    我认为旧的设置更好,尽管一开始似乎更难设置。使用旧设置,您只需 restart 您的守护进程。

    【讨论】:

    • 我认为旧设置不起作用。只有当我稍后在 cli 中使用 nohup 命令时,该应用程序才会永远运行。但我没有删除守护程序脚本。现在,我在 ApplicationStop 的脚本中添加了以下代码 - #!bin/bash nohup_id = ps -ef |grep nohup kill -9 $nohup_id 但它仍然无法正常工作
    • @DeadPool 你有日志吗?为什么它不起作用?有什么错误吗?
    • 部署状态显示为成功,所以没有错误。我不知道如何检查 codedeploy 中的日志。即使部署成功,我也不确定它是考虑我的新代码还是我的旧工作代码。
    • @DeadPool 你必须登录到实例并从内部检查。
    【解决方案2】:

    您可以使用 BeforeInstall 挂钩停止正在运行的服务,然后在 VM 中部署新代码。之后,您就可以启动您的服务了。

    AppSpec 示例:https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-19
      • 1970-01-01
      • 2013-02-18
      • 2012-02-17
      • 2021-07-19
      • 2011-07-05
      相关资源
      最近更新 更多