使用 mod_wsgi 在 Apache 上部署多个 django 应用程序

2024-01-10

我想在同一主机中部署两个不同的 django 应用程序:第一个对应于 url /site1,第二个对应于 url /site2。这是我的配置:



LoadModule wsgi_module modules/mod_wsgi.so

WSGIScriptAlias /site1 /var/www/py/site1/site1/wsgi.py
WSGIScriptAlias /site2 /var/www/py/site2/site2/wsgi.py

WSGIPythonPath /var/www/py/site1:/var/www/py/site2

<Directory "/var/www/py/site1/site1">
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>

<Directory "/var/www/py/site2/site2">
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>

  

这也是两个应用程序的 wsgi.py 文件



import os
import sys

path = '/var/www/py/site1'
if path not in sys.path:
    sys.path.append(path)

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "site1.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

  

现在,这是我的问题。当我访问我的服务器时,比方说http://app1.sites.gr/site1 http://app1.sites.gr/site1有时会加载 site1,有时会加载 site2!!!!我访问时也是如此http://app1.sites.gr/site2 http://app1.sites.gr/site2...有时我会收到 site1 的欢迎页面,有时我会收到 site2 的欢迎页面!我按 F5 并得到不同的欢迎页面。我检查了前几个小时的所有内容,没有发现任何奇怪的地方......

请在我发疯之前告诉我可能出现什么问题......

谢谢 !


这是Django 1.4生成的wsgi.py文件的问题。即使在不同的子解释器中,尝试在同一进程中托管两个不同的 Django 实例也是行不通的。

Change:

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "site1.settings")

to:

os.environ["DJANGO_SETTINGS_MODULE"] = "site1.settings"

或者更好地仍然使用守护进程模式并委托每个进程在不同的守护进程进程组中运行。

也就是说,而不是:

WSGIScriptAlias /site1 /var/www/py/site1/site1/wsgi.py
WSGIScriptAlias /site2 /var/www/py/site2/site2/wsgi.py

WSGIPythonPath /var/www/py/site1:/var/www/py/site2

use:

WSGIDaemonProcess site1 python-path=/var/www/py/site1
WSGIScriptAlias /site1 /var/www/py/site1/site1/wsgi.py process-group=site1 application-group=%{GLOBAL}

WSGIDaemonProcess site2 python-path=/var/www/py/site2
WSGIScriptAlias /site2 /var/www/py/site1/site2/wsgi.py process-group=site2 application-group=%{GLOBAL}

UPDATE

请注意,现在有一篇关于此原因和其他原因的完整博客文章。

  • http://blog.dscpl.com.au/2012/10/requests-running-in-wrong-django.html http://blog.dscpl.com.au/2012/10/requests-running-in-wrong-django.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 mod_wsgi 在 Apache 上部署多个 django 应用程序 的相关文章

随机推荐