Python 从一个apache运行两个独立的Django站点
我在笔记本上运行Ubuntu 14.04,我正在使用Django 1.6.4(带virtualenv)和Apache 2.4.7 我想通过本地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
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路径,也许它也可以工作