我们有使用django,python和PostgreSQL运行的web应用程序。我们也在使用virtualenv。
要启动Web服务,我们首先激活virtualenv,然后使用nohup在8080上启动python作为服务。
但是过了一段时间nohup进程就死了。有没有办法像apache一样启动服务,或者使用像monit这样的东西?
我是新手,请原谅我的错误
答案 0 :(得分:1)
使用apache或ngnix部署应用程序可能是个好主意。关于如何使用apache进行官方Django文档 - https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/modwsgi/
Apache确实支持虚拟环境 - 在使用mod_wsgi的守护进程模式时,只需将F_SIT_OBJET_RISQUE
添加到MERGE INTO F_SIT_OBJET_RISQUE
USING (
SELECT
pas.PAS_IDENT,
pol.POL_IDENT,
sor.SOR_IDENT,
pri.PRI_IDENT,
pri.PRI_REF_RISQUE_C
FROM
F_SIT_OBJET_RISQUE sor
JOIN F_POLICES pol
ON sor.SOR_PTRPOLID = pol.POL_IDENT
JOIN F_PRODUITASS pas
ON pol.POL_PTRPASID = pas.PAS_IDENT
JOIN F_PRD_RISQUE pri
ON sor.SOR_REFOBJF = pri.PRI_REF_RISQUE
AND sor.SOR_TABLE = pri.PRI_TYPE_RISQUE
AND pas.PAS_IDENT = pri.PRI_PTRPASIDENT
) SOURCEDATA ON (SOURCEDATA.SOR_IDENT = F_SIT_OBJET_RISQUE.SOR_IDENT)
WHEN MATCHED THEN UPDATE
SET F_SIT_OBJET_RISQUE.SOR_CODE_PRODUCT2 = SOURCEDATA.PRI_REF_RISQUE_C;
指令:
python-home=<path_to_your_virtual_env>
有关如何使用mod_wsgi和虚拟环境的最佳做法,请参阅:
答案 1 :(得分:1)
因此runserver
命令只应用于测试环境。就像@Alasdair所说,Django文档已经有关于该主题的有趣信息。
我建议将gunicorn
用作带有nginx
的wsgi作为反向代理。您可以找到更多信息here
我建议使用supervisor
来监控你的炮兵工人。可以找到更多信息here
答案 2 :(得分:0)
我能够做到,但忘了更新答案。如果任何人都在寻找相同的答案,他们可以按照此操作。 在生产环境中运行django应用的最佳方法是
django + gunicorn + supervisor + nginx。
我使用了gunicorn,这是用于UNIX的Python WSGI HTTP服务器,您可以在其中控制线程数,超时设置等。 gunicorn当时在套接字上运行,可以在端口上运行,但是为了减少tcp开销,我们在套接字上运行。
Supervisor是用来运行此gunicorn脚本的,因为Supervisor是用于控制您的过程的简单工具。
并在nginx反向代理的帮助下,我们的Django网站生活了。
有关更多详细信息,请访问以下博客。
http://michal.karzynski.pl/blog/2013/06/09/django-nginx-gunicorn-virtualenv-supervisor/