mod_wsgi和多个项目

toa*_*ngs 5 apache django mod-wsgi

在这里撕扯我的头发试图弄清楚为什么我的两个django项目没有被单独提供......似乎首先访问的静态文件成为两个项目的事实静态文件,或类似的效果.

我试图通过同一IP地址下的两个域名来服务两个项目(实际上是同一个原始项目的不同版本 - 具有不同的数据库和不同的物理位置).最初我在多个IP地址上尝试了虚拟主机(按端口区分),但是失败了.不幸的是 - 我使用具有不同域名的虚拟主机具有完全相同的问题.

Apache http.conf的virtualhost部分如下:

WSGIApplicationGroup %{GLOBAL}

Listen 80
NameVirtualHost *:80

<VirtualHost *:80>
ServerAdmin shane.brown@gmail.com
ServerName www.toastprojects.tk
WSGIScriptAlias / "C:/Python27/sites/Adaptwater/adaptwater/wsgi.py"
Alias /static/ "C:/Python27/sites/Adaptwater/static/"
</VirtualHost>

<Directory "C:/Python27/sites/Adaptwater/static/">
Order deny,allow
Allow from all
</Directory>

<Directory "C:/Python27/sites/Adaptwater/adaptwater/">
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>

<VirtualHost *:80>
ServerAdmin shane.brown@gmail.com
ServerName toastprojects.power.on.net
WSGIScriptAlias / "C:/git_clones/adaptwater/adaptwater/adaptwater/wsgi.py"
Alias /static/ "C:/git_clones/adaptwater/adaptwater/static/"
</VirtualHost>

<Directory "C:/git_clones/adaptwater/adaptwater/static/">
Order deny,allow
Allow from all
</Directory>

<Directory "C:/git_clones/adaptwater/adaptwater/adaptwater/">
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
Run Code Online (Sandbox Code Playgroud)

我为每个设置了wsgi.py(使用与特定项目位置相对应的绝对路径):

import os, sys

sys.path.append('C:/git_clones/adaptwater/adaptwater')
sys.path.append('C:/git_clones/adaptwater')
#os.environ.setdefault("DJANGO_SETTINGS_MODULE", "adaptwater.settings")
os.environ['DJANGO_SETTINGS_MODULE'] = "adaptwater.settings"

from django.core.wsgi import get_wsgi_application

application = get_wsgi_application()
Run Code Online (Sandbox Code Playgroud)

通过dev服务器(以及使用nginx提供静态文件)在localhost上运行这些服务同时没有问题.假设我想一次访问一个站点,并重新启动Apache - 每个作品都是在外部以独奏方式提供服务.什么明显导致这个问题?

干杯,沙恩


更新:

在这一点上,我必须得出结论,由于mod_wsgi与windows平台的结合不太完美,我不想做的事情(我应该提到平台 - 在我的仓促中忽略 - windows 7 professional 64).我不能使用WSGIDaemonProcess,并且WSGIApplicationGroup必须设置为全局,并且从我能够从与此问题相关的讨论中收集到 - 这意味着我已经走到了尽头.

我已经设法为第二个项目提供服务,没有奇怪的设置杂交使用nginx和fastcgi代替......作为权宜之计.到目前为止,这个组合一直善待我.

服务于静态文件的nginx和传递给django dev服务器的代理的更加出色的选择也可以作为外部服务的并行安排.还没有同时尝试两个nginx/fastcgi服务版本的项目 - 但我会把它留作另一个令人敬畏的沮丧日的练习.

Tho*_*mas 0

您必须将您的<directory>配置指令包含在其相应的<virtualhost>配置指令中。