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

时间:2015-04-02 00:43:13

标签: linux django apache cron mod-wsgi

我的小组和我正在运行一个基于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(certificate Location) - server-name(Domain Name)

我对Linux很新,同时使用Mod-wsgi和Apache,所以非常感谢任何帮助。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

最好使用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邮件列表。 mod_wsgi-express运行Apache / mod_wsgi的方式已经足够新了,以至于这里的任何人都不太可能真正了解它。

答案 2 :(得分:0)

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

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