设置Apache以使用虚拟主机在同一域上运行多个django应用程序

时间:2015-09-24 09:11:37

标签: python django apache

我想在同一台主机上安装两个不同的django应用程序。这是我的default虚拟主机配置文件(可行)。

WSGIPythonHome /home/user/.virtualenvs/project1
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        WSGIDaemonProcess project1 processes=4 threads=10 display-name=%{GROUP}
        WSGIProcessGroup project1
        WSGIScriptAlias /project1 /home/user/project1/project1/wsgi.py
        Alias /project1/static/ /home/user/project1/project1/staticfiles/
</VirtualHost>

问题是WSGIPythonHome指令,不能在VirtualHost标记内。所以,我不能在同一个default配置文件中有不同的项目。它必须在其他地方。

我尝试在WSGIPythonHome中禁用home=/home/user/.virtualenves/project1并使用WSGIDaemonProcess参数,而不是如文档中所述,但我的应用程序无效(尝试时出现导入错误)加载wsgi.py文件。奇怪的是,如果我只使用WSGIPythonHome),我的项目工作正常。

我想要的是拥有我的另一个django项目:

WSGIPythonHome /home/user/.virtualenvs/project2
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        WSGIDaemonProcess project2 processes=4 threads=10 display-name=%{GROUP}
        WSGIProcessGroup project2
        WSGIScriptAlias /project2 /home/user/project2/project2/wsgi.py
        Alias /project2/static/ /home/user/project2/project2/staticfiles/
</VirtualHost>

但是我不能把它放在同一个default文件中(在/ etc / apaches2 / sites-available中)。我尝试在那里添加一个default-001文件并重新启动Apache,但它没有用。

那么,我应该在哪里放置我的第二个django项目配置?

更新。这是我的wsgi.py文件

import os, sys, site
site.addsitedir('/home/user/.virtualenvs/project1/lib/python2.7/site-packages')
activate_this = os.path.expanduser("/home/user/.virtualenvs/project1/bin/activate_this.py")
execfile(activate_this, dict(__file__=activate_this))
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project1.settings")
project = '/home/user/project1/'
workspace = os.path.dirname(project)
sys.path.append(workspace)
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

1 个答案:

答案 0 :(得分:1)

您可以在Apache中创建多个虚拟主机配置。在文件夹sites-available中创建新的配置文件。通过运行a2ensite启用该站点,然后重新启动Apache。