当前位置: 首页 > 知识库问答 >
问题:

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

吴均
2023-03-14

我想在同一个主机上部署两个不同的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它有时加载site1,有时加载site2!!!!我访问时也是如此http://app1.sites.gr/site2 ... 有时我会看到site1的欢迎页面,有时会看到site2的欢迎页面!我点击了F5,得到了不同的欢迎页面。我已经检查了前几个小时的一切,没有发现任何奇怪的。。。

请在我发疯之前告诉我有什么问题。。。

谢谢

共有3个答案

谭泳
2023-03-14

格雷厄姆·邓普尔顿(GrahamDumpleton)的回答可能是你最想了解的,但我建议你在不同子域的根上托管两个Django,而不是在同一个域的非根位置,这样可以节省很多心痛。在IMHO中运行非根Django站点有很多要诀。

祝你好运

闻人仲渊
2023-03-14

您的应用程序在同一个端口上侦听,并且似乎没有代理将它们委托给不同的端口。

您要么在apache中设置VirtualHosts,要么使用Nginx、lighttpd或其他工具来创建适当的代理

沈淇
2023-03-14

这是wsgi的一个问题。py文件由Django 1.4生成。如果试图在同一个进程中托管两个不同的Django实例,即使在不同的子解释器中,它也不起作用。

更改:

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

收件人:

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

使用:

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}

更新

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

  • http://blog.dscpl.com.au/2012/10/requests-running-in-wrong-django.html
 类似资料:
  • 问题内容: 我想在同一主机中部署两个不同的django应用程序:第一个将对应于URL / site1,第二个将对应于URL / site2。这是我的配置: 这也是这两个应用程序的wsgi.py文件 现在,这是我的问题。当我转到服务器时,假设http://app1.sites.gr/site1有时加载了site1,而有时加载了site2!访问http://app1.sites.gr/site2时也是

  • 我正在尝试部署我构建的用于部署在Apache服务器上的Flask Web应用程序。我在Raspberry Pi 3上使用Raspbian(Jessie)OS。该应用程序在flask内置的开发Web服务器上运行完美,但我无法在Apache服务器上部署它。 这就是我所做的: conf文件为:etc/apach2/sites available/arduinoweb。形态: 中的WSGI脚本文件: Ap

  • 下面的步骤在Apache-2.2.3 (Red Hat Enterprise Linux 5.2, x86_64),mod_wsgi-2.0中测试通过。(译者注:本人在Windows2003 + Apache-2.2.15 + mod_wsgi-3.0也测试通过) 注意: 您可以使用您自己的项目名称替换’appname’。 您可以使用您自己的文件名称替换’code.py’。 /var/www/we

  • 我想在Apache服务器上部署我的Flask应用程序。我在服务器上有一个帐户,并被告知“服务器可用于运行用Python编写的脚本和Web应用程序(使用django和mod_wsgi)”。 我在Windows上,要传输文件,我必须使用FTP客户端,所以我使用WinSCP。 安装mod_wsgi并不像我预期的那样简单,我无法在线获得任何清晰的文档。 因为服务器已经可以使用mod_wsgi运行Pytho

  • 我试图在apache服务器上部署Hello world应用程序。 <代码>(http://localhost/wsgi.py)但它不起作用。 请告诉我如何配置apache conf文件以运行wsgi enable应用程序。 我的apache... 我已经使用pip命令下载了mod wsgi和django作为python模块,现在我面临着如何在apache模块目录中加载wsgi模块的问题* 我在这些

  • 问题内容: 有人可以解释守护程序模式下的apache mod_wsgi和线程模式下的django fastcgi之间的区别。我认为它们都使用线程进行并发。 假设我将nginx用作Apache mod_wsgi的前端。 更新: 我正在比较在fastemon中内置的django(./manage.py method = threaded maxchildren = 15)和mod_wsgi在“守护程序