本周末,我已经在服务器上部署了我的第一个django应用程序。很明显VPS服务器所以我必须安装PostgreSQL,PostGIS,设置virtualenv等等。使应用程序工作需要一些时间。
在django开发服务器上一切正常,但是当我在VPS服务器上使用gunicorn(与Nginx合作)部署我的应用程序时,AJAX请求无法正常工作。我有三个AJAX请求一个接一个地发送。并且只有一两个请求返回值。所以我找到gevent和这个帖子(Django AJAX requests during regular request not going through)并用这个命令运行gunicorn:
gunicorn myapp:wsgi:application --bind 0.0.0.0:9000 -k gevent --worker-connections 1001 --workers=3
它有效。所有请求都返回值,一切看起来都不错。所以我把进程放到后台并从服务器注销。
但每当我从服务器注销时,请求都会停止工作。行为与没有gevent的第一次行为相同。可能是激活虚拟环境的问题,设置还是这是Ubuntu作为服务器的标准行为?
我甚至不知道在哪里可以找到解决方案,所以我很乐意为您提供任何帮助。
答案 0 :(得分:1)
您目前在注销时停止了该过程。您需要一个监控流程的流程管理器。阅读gunicorn docs以获取许多可能的解决方案。
答案 1 :(得分:1)
我建议你使用supervisor。它将确保gunicorn运行,并在崩溃时重新启动。使用sudo apt-get install supervisor
假设您有一个名为test的网站,您可以使用以下test.config
(/etc/supervisor/conf.d/
内)
[program:test]
directory=/home/test/www
command=/home/test/commands/start
user=nobody
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
stopasgroup=true
killasgroup=true
其中/home/test/www
是您的django应用程序的位置(当然可以更改它),/home/test/commands/start
是一个脚本,您可以告诉gunicorn运行(您粘贴的命令)。