Установка mod_python для разработки веб-приложений на Python
Решил попробовать создать тестовое веб-приложение на Python и первое что пришло в голову - использовать mod_python для Apache, погуглив я не нашел толковых примеров и разобравшись с проблемой решил написать об этом заметку. Кстати, самый толковый пример как не странно я нашел на http://modpython.org/examples/, но пришлось “методом тыка” переписывать их пример чтобы что-то заработало. :)
Так как у меня Windows, то буду рассказывать на примере именно этой ОС, однако покажу как сделать и для FreeBSD.
С помощью пакета mod_python для Apache можно запускать сценарии на языке Python, также он поддерживает шаблоны механизма Python Server Pages. /2009/python-introduction/
Нам потребуется:
- Apache версии 2.2
- mod_python версии 3.3.1
- Интерпретатор Python версии 2.5, например ActivePython 2.5.4.4
Установка
Установите “ActivePython 2.5.4.4”, следуя инструкциям установщика, это не должно быть затруднительным. Далее, я предполагаю, что Apache у вас уже установлен, поэтому перейду сразу к mod_python.
Запускаем “mod_python-3.3.1.win32-py2.5-Apache2.2.exe”, он сам подцепит где находится интерпретатор Python и следуйте инструкциям.
Для FreeBSD надо выполнить:
# cd /usr/ports/www/mod_python3/ # make install clean
После установки mod_python необходимо вписать в “httpd.conf” следующую строку (после всех “LoadModule”):
LoadModule python_module modules/mod_python.so
И еще добавьте index.py для директивы “DirectoryIndex”:
<IfModule dir_module>
DirectoryIndex index.py index.htm index.html
</IfModule>
Настройка
Теперь, впишем инструкции инициализации mod_python для конкретного хоста, у меня это “liburg.loc”:
<VirtualHost *:80>
ServerAdmin youmail@example.com
DocumentRoot "C:/path/to/liburg.loc/www"
ServerName liburg.loc
SetHandler mod_python
PythonHandler mod_python.publisher
PythonDebug On
</VirtualHost>
И перезагрузите Apache
httpd -k restart
Первое наше веб-приложение
Создаем в “C:/path/to/liburg.loc/www” файл index.py с содержимым:
# мы будем использовать Python Server Pages, поэтому надо его подключить
from mod_python import psp
def index(req):
# "publisher", который мы повесили в "PythonHandler" вызывает данную ф-ию по умолчанию
return 'Hello World!'
Вот и все, наше первое веб-приложение готово!
Самое главное это показать как начать, а вы сами уже почитайте что такое PSP и как использовать его механизм шаблонов, можете рассмотреть этот пример чтобы во всем разобраться.

Комментарии 23
Архив обсуждения. Новые комментарии закрыты.
чето я нихера не понял “в чем тут сложности?”… это было так сложно?)))
Какие сложности? Ты о чем вообще?
блин ппц сколько всего для пайтона, и не знаешь что выбрать..
mod_python, wsgi — что лучше?
есть еще чтонить кроме psp?
Используй хоть что-нибудь, потом сам для себя выберешь. Я сейчас буду юзать Django, поэтому не особо парюсь. Далее, когда стану более опытнее смогу оценить что лучше, а что хуже )
Вообще разница между mod_python и mod_wsgi довольно большая, некоторые преимущества mod_wsgi можете найти тут: MOD_WSGI FAQ. Свои Django проекты мы пускаем через mod_wsgi.
Спасибо за то что поделились опытом, тоже попробую mod_wsgi
Еще связка, думаю куда более эффективная чем mod_wsgi - Django + Nginx + FastCGI
Django рулит, но можно попробовать мод mod_wsgi
adw0rd, да связок можно много придумать разных, тут нужно смотреть по нагрузке на сервер, чаще всего вижу связку nginx + apache, где apache обрабатывает Django, а nginx статику.
Виталий, да, эта связка самая распространенная и не только в мире Python/Django
Уже есть статьи где выложены итоги тестов.. mod_wsgi обходит fastcgi… а djando забила на mod_python.. он бесполезен и скоро вымрет
sapun, я сейчас Торнадо использую…
Меня вот что интересует. Поставил я себе питона 2.6.3, а mod_python под него нету. Поставил mod_wsgi, только вот все равно пока не жрет апач питоновские файлы. Мод включил, директивы от mod_python к нему не подходят, а какие подходят че-то никак не найду.
Ну так у WSGI иной принцип запуска, да и mod_python с никак не связан, следовательно директивы от него и не подходят. Погуглите, в инете примеров куча по настройке mod_wsgi.
Блин. Это какая-то невезуха. Убрал питон 2.6.4, скачал и поставил 2.5.4, под него скачал PyGame, игрушки посмотрел. Потом достал с оф.сайта mod_python 3.3.1 для апача 2.2. Все подключил, апач запустился нормально. Только при открытии любого py файла 500 Server Error. В логах апач пишет, что ожидал Python 2.5 а нашел 2.5.4. На сайте mod_python тупо нет версии для 2.5.4
да забей ты на mod_python, юзай Tornado
Та да, что то с этими разницами версий нифига не работает mod
Да мод вообще фигово работает, тормоз он еще тот…
что ставить то? wsgi или …
напишите, плиз
Что сделать надо? Запустить сайт на фреймворке каком-то или без?
Можно использовать uwsgi, WSGI, Tornado, gunicorn и т.д.
Я изучаю python и охота сайт-визитку на локалхосте сделать ради интереса.
Пэхэпэ не сломаеца если я к апачу2.2 прикручу wsgi?
Кстати, если использовать разные сервера в будущем, то к каждому по-разному команду import … делать или у них одинаковые API?
Установил mod_wsgi.
Я не пользуюсь apache, рекомендую nginx и uwsgi.