Pull to refresh

Развертываем Django под Denwer + mod_python. Личный опыт

Reading time4 min
Views2.3K
Решил поднять вышеозначенное окружение на своем ноутбуке, а сделать это оказалось не так просто, как мне казалось, это и сподвигло меня написать данную статью. Надеюсь, начинающим она поможет.

Что потребуется


Наверное, и так не трудно догадаться, но я все же решил написать:


Denwer и ActivePython 2.5


Думаю, процесс установки двух первых компонентов списка мы смело можем опустить. Будем считать, что денвер стоит так, как предлагается по умолчанию: C:\WebServers, Виртуальный диск Z:\
Python в таком случае должен расположиться по адресу C:\WebServers\usr\local\python

Однако перед тем, как устанавливать django, нам необходимо выполнить кое-какие действия. Так-как denwer устанавливается достаточно обособлено от всей системы, необходимо будет добавить путь до интерпритатора в переменную Path.

Для тех, кто не знает — заходим в свойства системы > Дополнительные параметры > Переменные среды
image

и вносим в переменную Path путь до интерпритатора python: C:\WebServers\usr\local\python\
image

После чего можно проверить, можем ли мы обращаться к интерпритатору, не прописывая путь до него. В командной строке выполняем
python -V,
и в ответ должны получить:
Python 2.5.1.

Установка mod_python, psycopg и\или mysql-python


Если вы, как и я, скачали виндовые установщики (.exe) mod_python и библиотек БД, то наверняка столкнетесь с тем, что эти самые установщики ругнутся на отсутствие данных об установленном python 2.5 в реестре windows.

Решаем эту проблему, внося данные вручную:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.5]
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.5\InstallPath]
@="z:\\usr\\local\\python"
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.5\InstallPath\InstallGroup]
@="Python 2.5"
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.5\Modules]
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.5\PythonPath]
@="z:\\usr\\local\\python\\Lib;z:\\usr\\local\\python\\DLLs;z:\\usr\\local\\python\\Lib\\lib-tk"

После этого установка происходит без проблем. Можно упомянуть только о том, что в процессе установки mod_python необходимо будет указать папку, где установлен Apache — C:\WebServers\usr\local\apache\.

Установка Django


Возможно, данная часть даже не заслуживает заголовка, но, тем не менее, для тех, кто привык к битриксу, не заглядывал в документацию, я ее буквально процитирую.
Распаковываем архив, запускаем командную строку и заходим в директорию, в которую распаковали django. Выполняем:
python setup.py install
все.

Настройка mod_python для работы на определенном виртуальном хосте denwer-а


Предположим, что свой проект мы хотим разместить на одном из виртуальных хостов, а на других в этот момент могут продолжать вертеться другие проекты на php или на чем то другом.

Для нашего виртуального хоста потребуется индивидуальная настройка, а денвер создает блоки виртуальных хостов автоматически и по шаблону. Виртуальными хостами он делает все, что лежит в папке home.

Чтобы для одного из этих хостов определить свои специфические параметры, это необходимо сделать в httpd.conf. Впрочем, этот момент достаточно подробно описан в самом файле httpd.conf.

Предположим, что нам хотелось бы иметь проект на django по адресу dproject.dev. Я сделал следующее: создал директорию
C:\WebServers\home\dproject.dev\www,
Затем перешел в данную директорию в командной строке и создал там проект
cd C:\WebServers\home\dproject.dev\www\
python C:\WebServers\usr\local\python\Scripts\django-admin.py startproject dproject
,
в итоге должна появиться директория C:\WebServers\home\dproject.dev\www\dproject с файлами проекта.

Ну и наконец блок виртуального хоста, который добавил в httpd.conf:
<VirtualHost 127.0.0.1:80>
  DocumentRoot "Z:/home/dproject.dev/www/dproject"  
  ServerName "dproject.dev"
  ServerAlias "dproject.dev" "www.dproject.dev" 
  ScriptAlias /cgi/ "/home/dproject/cgi/"
  ScriptAlias /cgi-bin/ "/home/dproject/cgi-bin/
  
 <Location "/">
	SetHandler python-program
	PythonHandler django.core.handlers.modpython
	SetEnv DJANGO_SETTINGS_MODULE dproject.settings
	PythonDebug On
        PythonPath ['Z:/home/dproject.dev/www'] + sys.path
</Location>

Alias "/admin_media/" "Z:/usr/local/python/Lib/site-packages/django/contrib/admin/media/"

<Location "/admin_media/">
    SetHandler None
</Location>

</VirtualHost>


Практически все, что тут написано, объясняется в документации, я лишь объясню что алиас /admin_media/ и соответствующий блок Location нужны для статики админки django (img, css, etc). Чтобы админка django использовала данный адрес, необходимо поправить settings.py созданного проекта:
ADMIN_MEDIA_PREFIX = '/admin_media/'
На этом все. Если у вас что-то не получилось, постараюсь помочь в комментах.

Заключение


Я буду благодарен всем за дельные советы.
А еще можно было бы дописать в эту статью инструкции для подключения wsgi_module для этого же проекта.
А т.к. я не очень то силен в настройках windows, я не смог сделать так, чтобы не приходилось каждый раз набирать python для выполнения пайтоновской программы… Было бы куда лучше .\manage.py startapp нежили python \.manage.py startapp
Tags:
Hubs:
Total votes 5: ↑3 and ↓2+1
Comments4

Articles