【问题标题】:Using a Cron Job to check if my mod_wsgi / apache server is running and restart使用 Cron 作业检查我的 mod_wsgi / apache 服务器是否正在运行并重新启动
【发布时间】:2024-12-18 20:50:02
【问题描述】:

我和我的团队正在运行基于 Django 的服务器,并使用 mod_wsgi 来运行 Apache 服务器。项目结束后我们将不再从事此项目,因此我正在尝试设置 cronjob 类似的功能来检查 apache 服务器是否已关闭(系统重新启动或电源故障),如果已关闭,将重新启动服务器我。我找到了有关如何检查 apache 服务器是否已关闭并重新启动服务器的文档,但我们的服务器使用 https,因此我们的启动命令非常冗长。

我可以简单地使用这些示例中提供的功能吗:

https://askubuntu.com/questions/277389/cron-job-to-restart-apache

https://www.digitalocean.com/community/tutorials/how-to-use-a-simple-bash-script-to-restart-server-programs

或者我需要一个更复杂的过程来实现这一点?

我们用来初始启动服务器的命令是

python manage.py runmodwsgi --host 0.0.0.0 --port 8001 --https-port 8000 --ssl-certificate(证书位置)--server-name(域名)

我是 Linux 的新手,我同时使用 Mod-wsgi 和 Apache,因此非常感谢任何帮助。

【问题讨论】:

    标签: linux django apache cron mod-wsgi


    【解决方案1】:

    我想这不是解决这个问题的好方法。

    我建议您使用 monit (https://mmonit.com/)。这是检查服务的酷程序。

    apt-get install monit
    

    Apache 重启配置指令:

    check process httpd with pidfile /var/run/httpd.pid
      group apache
      start program = "/etc/init.d/httpd start"
      stop program = "/etc/init.d/httpd stop"
      if failed host 127.0.0.1 port 80
      protocol http then restart
      if 5 restarts within 5 cycles then timeout
    

    【讨论】:

      【解决方案2】:

      您最好使用 mod_wsgi-express 的 --setup-only 选项或它的 Django 集成来生成配置但不运行它。然后就像其他人提到的,将其集成到系统服务管理器中。

      用于启动和停止 Apache/mod_wsgi 实例的两个命令是 apachectl startapachectl stop,其中 apachectl 是在使用附加的 --setup-only 选项运行时生成的。

      将其作为系统服务运行时,还要确保使用--server-root 选项为生成的配置指定更持久的位置。不要使用/tmp 下的默认值,如果运行临时开发会话以外的任何内容,因为某些 Linux 系统会删除/tmp 下的文件,导致一段时间后开始失败。

      此外,由于在服务管理器下它通常以 root 身份启动,特别是如果需要监听端口 80,请确保使用 --user--group 选项来指定 Python Web 应用程序的用户/组应该运行。

      阅读:

      有关用于生成配置的--setup-only 选项和start-server 命令的更多详细信息。因为您使用的是 Django 集成,所以您需要使用 --setup-only 选项。

      如需更多信息帮助,请将您的问题提交至 mod_wsgi 邮件列表。运行 Apache/mod_wsgi 的 mod_wsgi-express 方式足够新,这里的任何人都不太可能真正了解它。

      【讨论】:

      • 那么我会简单地使用相同的命令,但其中包含仅设置命令吗?对于如何将其集成到系统服务管理器中,我也有些困惑。我访问了您提供的链接,但我不明白运行 setup-only 命令后的下一步是什么。
      • 由于 * 不是论坛,我建议您在 mod_wsgi 邮件列表中提问。否则你需要等到我写一篇关于将 mod_wsgi-express 集成到系统启动脚本中的博客文章。这可能会在接下来的几周内发生。
      【解决方案3】:

      根本没有必要这样做。没有理由手动启动 Apache;一旦它作为系统服务安装,Ubuntu 将在重新启动或崩溃时自动启动它。

      您应该反思为什么您认为需要专门为 Apache 执行此操作,而不是您依赖的任何其他系统服务,例如数据库。

      【讨论】:

        最近更新 更多