使用结构和管理程序部署Web应用程序 – SIGHUP导致服务器终止

使用结构和管理程序部署Web应用程序 – SIGHUP导致服务器终止,第1张

概述我们正在使用supervisor来部署 python Web应用程序.部署时,Web应用程序通过buildout安装在服务器上,使用collective.recipe.supervisor创建运行管理程序的脚本.在脚本脚本部署过程结束时调用此脚本.问题是当部署脚本完成时,会向进程发送一个SIGHUP信号,这会导致管理程序重新启动(按照此行: https://github.com/Superviso 我们正在使用supervisor来部署 python Web应用程序.部署时,Web应用程序通过buildout安装在服务器上,使用collective.recipe.supervisor创建运行管理程序的脚本.在脚本脚本部署过程结束时调用此脚本.问题是当部署脚本完成时,会向进程发送一个SIGHUP信号,这会导致管理程序重新启动(按照此行: https://github.com/Supervisor/supervisor/blob/master/supervisor/supervisord.py#L300),但由于某种原因,Web应用程序终止后不会重新启动.以下后面没有日志输出:

2012-10-24 15:23:51,510 WARN received SIGHUP indicating restart request2012-10-24 15:23:51,511 INFO waiting for app-server to dIE2012-10-24 15:23:54,650 INFO waiting for app-server to dIE2012-10-24 15:23:57,653 INFO waiting for app-server to dIE2012-10-24 15:24:00,657 INFO waiting for app-server to dIE2012-10-24 15:24:01,658 WARN killing 'app-server' (28981) with SIGKILL2012-10-24 15:24:01,659 INFO stopped: app-server (terminated by SIGKILL)

所以我有两个问题.第一个是,有人知道为什么主管重启SIGHUP?我找不到任何解释,并且没有可以关闭此行为的命令行选项.第二个问题是,我们如何解决我们面临的问题?我们尝试使用nohup启动主管,但仍然收到SIGHUP.奇怪的是,当我登录服务器,手动启动主管并注销时,不会发生这种情况.

以下是buildout生成的supervisor脚本:

#!/usr/bin/python2.6import syssys.path[0:0] = ['/home/username/.buildout/eggs/supervisor-3.0b1-py2.6.egg','/home/username/.buildout/eggs/meld3-0.6.9-py2.6.egg','/home/username/.buildout/eggs/distribute-0.6.30-py2.6.egg',]import sys; sys.argv.extend(["-c","/home/username/app_directory/parts/supervisor/supervisord.conf"])import supervisor.supervisordif __name__ == '__main__':sys.exit(supervisor.supervisord.main())

以下是supervisor的配置文件,也是由buildout生成的:

[supervisord]childlogdir = /home/username/app_directory/var/loglogfile = /home/username/app_directory/var/log/supervisord.loglogfile_maxbytes = 50MBlogfile_backups = 10loglevel = infopIDfile = /home/username/app_directory/var/supervisord.pIDumask = 022nodaemon = falsenocleanup = false[unix_http_server]file = /home/username/app_directory/supervisor.sockusername = usernamepassword = apasswdchmod = 0700[supervisorctl]serverurl = unix:///home/username/app_directory/supervisor.sockusername = usernamepassword = apasswd[rpcinterface:supervisor]supervisor.rpcinterface_factory=supervisor.rpcinterface:make_main_rpcinterface[program:app-server]command = /home/username/app_directory/bin/gunicorn --bind 0.0.0.0:5000 app:wsgiprocess_name = app-serverdirectory = /home/username/app_directory/binpriority = 50redirect_stderr = falsedirectory = /home/username/app_directory

我们不想在真正理解问题之前安装修补版本的主管,因此任何信息都将受到高度赞赏.

提前致谢

解决方法 在SIGHUP上重新启动或重新加载是linux系统编程中的常见做法.问题是为什么你在部署结束后获得SIGHUP.由于supervisor正确守护自身(因为你可以启动并注销并且它可以工作),重新加载信号可以通过构建机器人发送给主管,指示webapp需要重新启动,因为代码已经改变.

因此,主管启动应用程序关闭,以便使用新代码启动应用程序.但应用程序不会在给定的超时时间内停止,并且主管决定应用程序挂起并用SIGKILL杀死它.

要解决问题,您需要教导应用程序在主管要求时关闭.

总结

以上是内存溢出为你收集整理的使用结构和管理程序部署Web应用程序 – SIGHUP导致服务器终止全部内容,希望文章能够帮你解决使用结构和管理程序部署Web应用程序 – SIGHUP导致服务器终止所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1060071.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存