我的小组和我正在运行一个基于Django的服务器,并使用mod_wsgi来运行Apache服务器。结束后我们将不会处理这个项目,所以我试图设置cronjob类似的功能来检查apache服务器是否已经关闭(系统重启或电源故障),如果有,将重启服务器我。我找到了关于如何检查apache服务器是否已关闭并重新启动服务器的文档,但是我们的服务器使用https,因此我们的启动命令非常详细。
我可以简单地使用这些示例中提供的功能:
https://askubuntu.com/questions/277389/cron-job-to-restart-apache
或者我是否需要一个更复杂的过程来实现这一目标?
我们用于初始启动服务器的命令是
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,所以非常感谢任何帮助。
答案 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 start
和apachectl 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专门执行此操作,而不是您依赖的任何其他系统服务,例如数据库。