Python 从一个apache运行两个独立的Django站点

Python 从一个apache运行两个独立的Django站点,python,django,apache,apache2,virtualhost,Python,Django,Apache,Apache2,Virtualhost,我在笔记本上运行Ubuntu 14.04,我正在使用Django 1.6.4(带virtualenv)和Apache 2.4.7 我想通过本地apache访问两个django项目。因此,这些项目被称为kleyboldt(我为之写作的人的名字)和kleyboldt2。通常,我将我的web项目存储在/home/nick/Workspace/web下。看完教程后,我发现两个域指向同一个django项目。为了确保我重写了配置并将我的项目放在/var/www下 开始时,我编写了两个文件来配置apache

我在笔记本上运行Ubuntu 14.04,我正在使用Django 1.6.4(带virtualenv)和Apache 2.4.7

我想通过本地apache访问两个django项目。因此,这些项目被称为
kleyboldt
(我为之写作的人的名字)和
kleyboldt2
。通常,我将我的web项目存储在
/home/nick/Workspace/web
下。看完教程后,我发现两个域指向同一个django项目。为了确保我重写了配置并将我的项目放在
/var/www

开始时,我编写了两个文件来配置apache

/etc/apache/sites available/kleyboldt.conf

WSGIPythonPath /var/www/kleyboldt:/var/www/kleyboldt/env/lib/python2.7/site-packages

<VirtualHost *:80>
    WSGIScriptAlias / /var/www/kleyboldt/kleyboldt.wsgi

    ServerName kleyboldt.com

    Alias /static /var/www/kleyboldt/static

    <Directory /var/www/kleyboldt/>
        Require all granted
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
WSGIPythonPath /var/www/kleyboldt2:/var/www/kleyboldt2/env/lib/python2.7/site-packages

<VirtualHost *:80>
    WSGIScriptAlias / /var/www/kleyboldt2/kleyboldt2.wsgi

    ServerName kleyboldt2.com

    Alias /static /var/www/kleyboldt2/static

    <Directory /var/www/kleyboldt2/>
        Require all granted
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
要使用WSGI,我在项目文件夹中为每个项目编写了一个单独的WSGI文件:

/var/www/kleyboldt/kleyboldt.wsgi

import os
import sys

sys.path.append('/var/www/kleyboldt')
os.environ['DJANGO_SETTINGS_MODULE'] = 'kleyboldt.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
import os
import sys

sys.path.append('/var/www/kleyboldt2')
os.environ['DJANGO_SETTINGS_MODULE'] = 'kleyboldt2.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
/var/www/kleyboldt2/kleyboldt2.wsgi

import os
import sys

sys.path.append('/var/www/kleyboldt')
os.environ['DJANGO_SETTINGS_MODULE'] = 'kleyboldt.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
import os
import sys

sys.path.append('/var/www/kleyboldt2')
os.environ['DJANGO_SETTINGS_MODULE'] = 'kleyboldt2.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
我使用
virtualenv
创建了两个独立的python环境,它们现在位于
/var/www/kleyboldt/env
/var/www/kleyboldt2/env

战后,当我在浏览器的URL栏中键入这两个域时,我得到了两个django测试站点。为了有所不同,我在
settings.py
文件中添加了一些设置,并编写了自定义视图

/var/www/kleyboldt/homepage/views.py

from django.http import HttpResponse

def hello(request):
    return HttpResponse("kleyboldt1")
from django.http import HttpResponse

def hello(request):
    return HttpResponse("kleyboldt2")
/var/www/kleyboldt2/homepage/views.py

from django.http import HttpResponse

def hello(request):
    return HttpResponse("kleyboldt1")
from django.http import HttpResponse

def hello(request):
    return HttpResponse("kleyboldt2")
当我在浏览器中键入
localhost
时,我将返回kleyboldt2。当我在浏览器中键入
kleyboldt2.com
时,我也会得到kleyboldt2。不幸的是,在我的浏览器中键入
kleyboldt.com
后,我也看到了kleyboldt2


也许这个bug对我来说很简单:D有人知道可能的解决方案吗?

您可能会遇到一个问题,即有两个不同的WSGIPythonPath变量。您是否可以使用守护程序模式在各自的virtualhost中设置每个站点的路径(在virtualhost中WSGIPythonPath不起作用)?-非常感谢。我尝试使用守护进程模式,它成功了。如果我在apache.conf中设置一个python路径,也许它也可以工作