mod_wsgi 和多个项目

Posted

技术标签:

【中文标题】mod_wsgi 和多个项目【英文标题】:mod_wsgi and multiple projects 【发布时间】:2012-12-19 16:05:27 【问题描述】:

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

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

Apache http.conf 的虚拟主机部分是这样的:

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>

我已经为每个设置了 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()

同时通过开发服务器在 localhost 上运行这些(并使用 nginx 提供静态文件)没有问题。假设我想一次访问一个站点,然后重新启动 Apache - 每个工作都单独在外部提供服务。有什么明显的原因导致这个问题吗?

干杯,肖恩


更新:

在这一点上,我不得不得出结论,由于 mod_wsgi 和 windows 平台的结合并不完美(我应该提到平台 - 我匆忙忽略了 - windows 7 专业版),所以我想做的事情无法完成64)。我不能使用 WSGIDaemonProcess,而且必须将 WSGIApplicationGroup 设置为全局,并且从我从与此问题相关的讨论中收集到的信息来看 - 这意味着我处于死胡同。

我已经成功地使用 nginx 和 fastcgi 为第二个项目提供了没有奇怪设置混合的服务……作为权宜之计。到目前为止,这个组合一直对我很好。

nginx 服务静态文件和代理传递到 django 开发服务器的更不重要的选项也可以作为外部服务的并行安排。尚未同时尝试该项目的两个 nginx/fastcgi 服务版本 - 但我将把它作为练习留到另一个令人沮丧的一天。

【问题讨论】:

【参考方案1】:

您必须将您的 &lt;directory&gt; 配置指令包含在其对应的 &lt;virtualhost&gt; 配置指令中。

【讨论】:

谢谢!会给它一个炙手可热的去。 这是来自一个旧项目,但应该有你需要的一切:apache.conf

以上是关于mod_wsgi 和多个项目的主要内容,如果未能解决你的问题,请参考以下文章

apache/mod_wsgi - 如何使用不同的 python 虚拟环境配置多个 webapps

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

让 Django 项目在 mod_wsgi 中运行时出现问题

mod_wsgi 无法连接 WSGI 守护进程

使用 apache mod_wsgi 的 Django 多个站点:请求到错误的站点

安装 mod_wsgi 时如何修复错误消息?