在Apache上部署多个应用程序的Django与m​​od_wsgi的 [英] Deploying multiple django apps on Apache with mod_wsgi

查看:240
本文介绍了在Apache上部署多个应用程序的Django与m​​od_wsgi的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要部署在同一台主机两个不同的Django的应用:第一个将对应的URL / Site1和第二到URL / SITE2。这里是我的配置:

I want to deploy two different django apps in the same host: The first will correspond to the url /site1 and the second to the url /site2. Here's my configuration:


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文件

Also here's the wsgi.py file for both applications


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 它有时加载SITE1,有的其他时候,它加载站点2 !!!!这同样当我访问 http://app1.sites.gr/site2 ... Sometiems我得到site1的欢迎页面有时我得到的欢迎页面站点2!我打F5和获取不同的欢迎页面。我已经检查一切为了previous小时,并没有发现什么奇怪...

Now, here's my problem. When I go to my server, let's say http://app1.sites.gr/site1 it some times loads site1, and some other times it loads site2 !!!! The same goes when I visit http://app1.sites.gr/site2 ... Sometiems I get the welcome page for site1, sometimes I get the welcome page for site2 ! I am hitting F5 and getting different welcome pages. I have checked everything for the previous hours and did not find anything strange...

请,告诉我,我发疯之前可能是什么问题...

Please, tell me what could be the problem before I go crazy ...

谢谢!

推荐答案

这是与Django的1.4生成的wsgi.py文件有问题。它不会工作的地方试图在同一个进程来承载两个不同的Django的情况下,即使在不同的分际preters。

This is a problem with the wsgi.py file generated by Django 1.4. It will not work where trying to host two distinct Django instances in the same process, even though in separate sub interpreters.

修改

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

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

或者更好的使用守护进程模式,并委托各在不同的守护进程运行组

Or better still use daemon mode and delegate each to run in distinct daemon process groups.

也就是说,代替:

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

使用:

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}


更新

请注意,有这个和其他原因,整个博客文章了。

Note that there is a whole blog post about this and other causes now.

这篇关于在Apache上部署多个应用程序的Django与m​​od_wsgi的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆