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

时间:2014-05-01 15:06:39

标签: python django apache apache2 virtualhost

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

我想通过我的本地apache访问两个django项目。因此,这些项目被称为kleyboldt(我正在写的人的名字)和kleyboldt2。通常我将我的网络项目存储在/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>

/etc/apache2/sites-available/kleyboldt2.conf

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>

之后我通过a2ensite启用了这两个网站。我检查了sites-enabled目录并正确放置了链接。为了将kleyboldt.comkleyboldt2.com重定向到我的本地apache,我将 / etc / hosts 更改为:

127.0.0.1   localhost
127.0.1.1   mars (name of my computer)
127.0.0.1   kleyboldt.com
127.0.0.1   kleyboldt2.com

为了使用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()

/var/www/kleyboldt2/kleyboldt2.wsgi

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下。

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

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

from django.http import HttpResponse

def hello(request):
    return HttpResponse("kleyboldt1")

/var/www/kleyboldt2/homepage/views.py

from django.http import HttpResponse

def hello(request):
    return HttpResponse("kleyboldt2")

当我在浏览器中输入localhost时,我会返回 kleyboldt2 。当我在浏览器中输入kleyboldt2.com时,我也会回复 kleyboldt2 。不幸的是,在我的浏览器中输入kleyboldt.com后,我也看到了 kleyboldt2

也许这个错误让我很难发现:D有人知道可能的解决方案吗?

0 个答案:

没有答案