Запуск Django в Virtualenv с использованием Apache с установкой Mod_Python и нескольких Python - PullRequest
2 голосов
/ 17 августа 2010

Я хотел бы запустить проект Django на сервере, используя virtualenv в Apache, используя mod_python.Теперь я знаю, что рекомендуемый модуль apache для использования - это mod_wsgi, но я пока не хочу его устанавливать.

Установка по умолчанию на сервере python - это python2.4, который используется другим веб-сайтомна сервере.Поскольку мой проект был построен на python2.6, я установил его рядом с python2.4 в / usr / local /, используя make altinstall.Я использовал этот веб-сайт для настройки моего файла apache conf: http://mydjangoblog.com/2009/03/30/django-mod_python-and-virtualenv/.

Мой вопрос: есть ли способ указать, что он (вероятно, mod_python) должен использовать python2.6 вместо python2.4?Если нет возможности запустить 2 версии Python в одном Apache, используя mod_python, возможно ли будет использовать mod_wsgi?Или это было бы возможно в одной установке Apache с другим сайтом, используя mod_python, а я, используя mod_wsgi?

Ответы [ 2 ]

4 голосов
/ 17 августа 2010

Нет, вы не можете этого сделать. mod_python предварительно скомпилирован с определенной версией Python. Если вы хотите изменить эту версию, вам придется пересобрать mod_python - и если вы делаете это, вы можете также установить mod_wsgi.

Это возможно возможно с mod_wsgi, так как это не встраивает интерпретатор в сам Apache, поэтому ему все равно, какую версию вы используете. Добиться того, чтобы virtualenv работал с mod_wsgi, довольно просто - вам просто нужно активировать virtualenv внутри скрипта .wsgi:

activate_this = os.path.join(path_to_my_site, "bin/activate_this.py")
execfile(activate_this, dict(__file__=activate_this))
1 голос
/ 19 июня 2012

Вы также можете запустить проект django с runwsgiserver на другом порту, а затем использовать apache с обратным прокси.

примерно так:

source your_env/bin/activate
python manage.py runwsgiserver host=localhost port=8123

и обратный прокси на apache:

<VirtualHost *:80>
    ServerName sitename.com
    ServerAlias www.sitename.com

ProxyRequests Off

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPass / http://localhost:8123/
ProxyPassReverse / http://localhost:8123/

</VirtualHost>
...