在一个Xampp Windows Apache Mod_WSGI服务器上部署两个Django项目

时间:2015-01-26 21:08:11

标签: python django windows apache mod-wsgi

我想在一台服务器上部署多个Django项目。 它是Windows 32位Xampp。 mod_wsgi是32位。 python是32位。 Django是1.7.3版。

我已经阅读了很多帖子并尝试过很多东西,但我无法解决这个问题。

浏览器中显示的以下错误也表示某些版本信息。

Server error!
The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there was an error in a CGI script.
Error 500
localhost Apache/2.4.4 (Win32) OpenSSL/0.9.8y PHP/5.4.19 mod_wsgi/3.5 Python/2.7.6

我可以通过这种方式成功部署一个django应用程序。例如,如果我只部署一个,则没有错误 C:/ P2 / XAMPP / htdocs中/ django的/ mysite的

当我添加第二个项目时,我得到以下错误,只有第一个项目有效。

我在apache error.log中收到以下错误。

mod_wsgi (pid=11184): Exception occurred processing WSGI script 'C:/p2/xampp/htdocs/django/apache/django161c.wsgi'.
~~~~~ some lines removed ~~~~~~
ImportError: Could not import settings 'mysite.settings' (Is it on sys.path? Is there an import error in the settings file?): No module named mysite.settings

My httpd.conf的最后两行:

LoadModule wsgi_module modules/mod_wsgi.so
Include C:/p2/xampp/htdocs/django/apache/wsgi3.conf

我的wsgi3.conf

############
listen 8986
<VirtualHost *:8986>
Alias /static/ c:/p2/xampp/htdocs/django/mysite/static/
WSGIScriptAlias / "c:/p2/xampp/htdocs/django/apache/mysite.wsgi" 
    DocumentRoot "c:/p2/xampp/htdocs/django/mysite"
    ServerName 127.0.0.1
<Directory "c:/p2/xampp/htdocs/django/apache">
    Allow from all
</Directory>
</VirtualHost>
############
listen 8985
<VirtualHost *:8985>
WSGIScriptAlias / "c:/p2/xampp/htdocs/django/apache/django161c.wsgi" 
    DocumentRoot "c:/p2/xampp/htdocs/django/django161c"
    ServerName 127.0.0.1
<Directory "c:/p2/xampp/htdocs/django/apache">
    Allow from all
</Directory>
</VirtualHost>

我的mysite.wsgi:

import os, sys
sys.path.append('c:/p2/xampp/htdocs/django/mysite')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
# works: https://www.pythonanywhere.com/forums/topic/1629/ # this is for changes to django 1.7 # 2015-01-23_Fri_14.13-PM
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

我的django161c.wsgi

import os, sys
sys.path.append('c:/p2/xampp/htdocs/django/django161c')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

解决方案是:

有两个&#39; mysite.settings&#39; 应该是&#39; django161c.settings&#39;在 django161c.wsgi

这解决了它。

然后它一直要求我在每个项目中反复登录。

然后我添加了

  

SESSION_COOKIE_PATH =&#34; / django161c&#34;

settings.py ,这样每个网站都不会共享同一个会话ID。

我为“谜团”做了同样的事情。项目

  

SESSION_COOKIE_PATH =&#34; / mysite&#34;

另外,我匹配编译器和mod_wsgi

的版本 我用过 python 2.7.9 apache 2.4所有32位和所有vc9编译器 mod_wsgi是从这篇文章下载的:

https://groups.google.com/forum/#!topic/modwsgi/SxedM5UKvic

我将模块命名为 mod_wsgi-442-ap24-w32-vc9-py279.so

这种方式我知道它是mod_wsgi 4.4.2,全部用vc9编译,用于apache 2.4,python 2.7.9,所有win32。