如何在单个apache服务上设置多个django版本?

时间:2011-09-30 19:06:48

标签: python django apache

我正在使用Windows XP,想知道如何通过虚拟主机(当然)在单个apache服务上创建多个django版本。

我也试图用python的一个实例做到这一点。我应该为每个django版本创建1个python实例,或者django只需要它的蛋可以工作,所以我只能在一个python版本中有几个蛋?

2 个答案:

答案 0 :(得分:2)

您可以在httpd.conf中执行类似的操作

NameVirtualHost 0.0.0.0:80
<VirtualHost 0.0.0.0:80>
    ServerName myserver.com
    ServerAdmin myemail@gmail.com
    DocumentRoot "/path/to/html/root"
    ErrorLog "/path/to/apache-error.log"
    CustomLog "/path/to/apache-access.log" common

    Options ExecCGI FollowSymLinks MultiViews

    AddHandler wsgi-script .wsgi
    WSGIDaemonProcess djangoapp1
    WSGIProcessGroup djangoapp1
    WSGIScriptAlias / /path/to/djangoapp1.wsgi

    Alias /static /path/to/static/files

    DirectoryIndex index.html index.cgi

    AddHandler cgi-script .cgi .pl
</VirtualHost>

NameVirtualHost 0.0.0.0:81
<VirtualHost 0.0.0.0:81>
    ServerName myserver.com
    ServerAdmin myemail@gmail.com
    DocumentRoot "/path/to/html/root"
    ErrorLog "/path/to/apache-error.log"
    CustomLog "/path/to/apache-access.log" common

    Options ExecCGI FollowSymLinks MultiViews

    AddHandler wsgi-script .wsgi
    WSGIDaemonProcess djangoapp2
    WSGIProcessGroup djangoapp2
    WSGIScriptAlias / /path/to/djangoapp2.wsgi

    Alias /static /path/to/static/files

    DirectoryIndex index.html index.cgi

    AddHandler cgi-script .cgi .pl
</VirtualHost>

然后,在您的djangoapp1.wsgi / djangoapp2.wsgi脚本中,您可以定义不同的django版本和应用程序:

#!/usr/bin/python
import os
import sys
sys.path.append('')
sys.path.append('/path/to/python2.7/site-packages')
sys.path.append('/path/to/python2.7/dist-packages/Django-1.3-py2.7.egg ')
... etc ...
sys.path.append('/path/to/djangoapp1/src')
os.environ['DJANGO_SETTINGS_MODULE'] = 'djangoapp1.settings'
os.environ['PYTHON_EGG_CACHE'] = '/tmp'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

答案 1 :(得分:1)

方法1:

将django源放在您想要的任意位置,并在manage.pywsgi.py中手动指定django源的路径:

import os
os.path.insert(0, 'path-to-django-source');

您也可以使用virtualenv。 Virtualenv会自动修复控制台应用程序的路径,但对于wsgi.py,您仍需要手动记录路径。

方法2:

使用zc.buildoutdjangorecipe,它会为您完成所有工作,包括:

  • donwloads django
  • 下载其他模块
  • project-dir\bin\wsgi
  • 创建wsgi.py
  • project-dir\bin\django.exe
  • 创建manage.py

所有这些都是通过一个配置文件buildout.cfg完成的 - 在这里列出您的模块和其他设置,然后运行命令:buildout -N

然而,如果你有紧迫的截止日期,那么扩建可能不是一个好的解决方案,因为有些事情你需要了解它,但如果你打算做更多的python应用程序,我绝对建议尝试。

以下是django + buildout设置的一些示例:

http://www.google.lt/search?q=django+buildout+template+OR+skeleton

评论的更新

您无法在系统范围内安装两个django版本。

你可以做的是:

  1. 不要安装django,只需将django-base/django文件夹放入项目路径即可。您必须手动编译国际化文件(如果您使用i18n):

     cd django\conf
     python ..\..\manage.py compilemessages
    
  2. 或者,使用python setup.py install安装django,但使用额外的参数来更改安装目标。 Python文档covers few different methods