使用 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
或者我需要更复杂的过程才能实现吗?
我们用来初始启动服务器的命令是
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
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
完全没有必要这样做。没有理由手动启动 Apache;一旦它作为系统服务安装,Ubuntu 将在重启或崩溃时自动启动它。
您应该反思为什么您觉得需要专门为 Apache 执行此操作,而不是您依赖的任何其他系统服务,例如数据库。
您最好使用 mod_wsgi-express 的 --setup-only
选项或 Django 集成来生成配置而不是 运行 它。然后按照别人说的,集成到系统服务管理器中。
启动和停止Apache/mod_wsgi实例的两个命令是apachectl start
和apachectl 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 方式足够新,这里的任何人都不太可能真正了解它。
我和我的团队正在 运行 建立一个基于 Django 的服务器,并使用 mod_wsgi 到 运行 Apache 服务器。项目结束后我们将不再处理这个项目,所以我尝试设置 cronjob 类似的功能来检查 apache 服务器是否已关闭(系统重启或电源故障),如果已关闭,将重新启动服务器我。我找到了有关如何检查 apache 服务器是否关闭并在关闭时重新启动服务器的文档,但我们的服务器使用 https,因此我们的启动命令非常冗长。
我可以简单地使用这些示例中提供的功能吗:
https://askubuntu.com/questions/277389/cron-job-to-restart-apache
或者我需要更复杂的过程才能实现吗?
我们用来初始启动服务器的命令是
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
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
完全没有必要这样做。没有理由手动启动 Apache;一旦它作为系统服务安装,Ubuntu 将在重启或崩溃时自动启动它。
您应该反思为什么您觉得需要专门为 Apache 执行此操作,而不是您依赖的任何其他系统服务,例如数据库。
您最好使用 mod_wsgi-express 的 --setup-only
选项或 Django 集成来生成配置而不是 运行 它。然后按照别人说的,集成到系统服务管理器中。
启动和停止Apache/mod_wsgi实例的两个命令是apachectl start
和apachectl 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 方式足够新,这里的任何人都不太可能真正了解它。