使用 Cron 作业检查我的 mod_wsgi / apache 服务器是否为 运行 并重新启动

Using a Cron Job to check if my mod_wsgi / apache server is running and restart

我和我的团队正在 运行 建立一个基于 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 运行modwsgi --host 0.0.0.0 --port 8001 --https-port 8000 --ssl-certificate (证书位置) --server-名称(域名)

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

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

我推荐你使用 monit (https://mmonit.com/)。这是用于检查服务的很酷的程序。

apt-get install monit

A​​pache 重启配置指令:

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

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

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

您最好使用 mod_wsgi-express 的 --setup-only 选项或 Django 集成来生成配置而不是 运行 它。然后按照别人说的,集成到系统服务管理器中。

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

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

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

阅读:

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

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