Как настроить несколько версий django на одном сервисе apache? - PullRequest
1 голос
/ 30 сентября 2011

Я использую Windows XP и хочу знать, как я могу создать несколько версий django на одном сервисе apache через виртуальный хост (конечно).

Я пытаюсь сделать это с одним экземпляромпитон тоже.Должен ли я создать 1 экземпляр python для каждой версии django или для работы django нужны только яйца, так что я могу иметь несколько яиц в одной версии python?

Ответы [ 2 ]

2 голосов
/ 30 сентября 2011

Вы можете сделать что-то подобное в вашем 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 голос
/ 30 сентября 2011

Метод 1:

Поместите источник django в любое место и вручную укажите путь к источнику django в ваших manage.py и wsgi.py:

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

Вы также можете использовать virtualenv . Virtualenv автоматически исправляет пути для консольных приложений, однако для wsgi.py вам все равно придется записывать пути вручную.

Метод 2:

Используйте zc.buildout и djangorecipe , он сделает все за вас, включая:

  • donwloads django
  • скачать другие модули
  • создает wsgi.py в project-dir\bin\wsgi
  • создает manage.py в project-dir\bin\django.exe

Все это делается с помощью одного файла конфигурации buildout.cfg - здесь вы перечисляете свои модули и другие настройки, а затем запускаете команду: buildout -N.

Однако сборка может не быть хорошим решением, если у вас есть сжатые сроки, потому что вам нужно будет кое-что узнать об этом, но если вы планируете создавать больше приложений на Python, я определенно рекомендую попробовать.

Вот несколько примеров настройки сборки django +:

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. Или установите django с помощью python setup.py install, но используйте дополнительные аргументы для изменения места установки. Документация Python охватывает несколько различных методов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...