← Все записи

Установка mod_python для разработки веб-приложений на Python

mod\_python

Решил попробовать создать тестовое веб-приложение на Python и первое что пришло в голову - использовать mod_python для Apache, погуглив я не нашел толковых примеров и разобравшись с проблемой решил написать об этом заметку. Кстати, самый толковый пример как не странно я нашел на http://modpython.org/examples/, но пришлось “методом тыка” переписывать их пример чтобы что-то заработало. :)

Так как у меня Windows, то буду рассказывать на примере именно этой ОС, однако покажу как сделать и для FreeBSD.

С помощью пакета mod_python для Apache можно запускать сценарии на языке Python, также он поддерживает шаблоны механизма Python Server Pages. /2009/python-introduction/

Нам потребуется:

Установка

Установите “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

Архив обсуждения. Новые комментарии закрыты.

phpdude

чето я нихера не понял “в чем тут сложности?”… это было так сложно?)))

aivee

блин ппц сколько всего для пайтона, и не знаешь что выбрать..
mod_python, wsgi — что лучше?
есть еще чтонить кроме psp?

adw0rd

Используй хоть что-нибудь, потом сам для себя выберешь. Я сейчас буду юзать Django, поэтому не особо парюсь. Далее, когда стану более опытнее смогу оценить что лучше, а что хуже )

Виталий

Вообще разница между mod_python и mod_wsgi довольно большая, некоторые преимущества mod_wsgi можете найти тут: MOD_WSGI FAQ. Свои Django проекты мы пускаем через mod_wsgi.

Виталий

adw0rd, да связок можно много придумать разных, тут нужно смотреть по нагрузке на сервер, чаще всего вижу связку nginx + apache, где apache обрабатывает Django, а nginx статику.

adw0rd

Виталий, да, эта связка самая распространенная и не только в мире Python/Django

sapun

Уже есть статьи где выложены итоги тестов.. mod_wsgi обходит fastcgi… а djando забила на mod_python.. он бесполезен и скоро вымрет

CharnaD

Меня вот что интересует. Поставил я себе питона 2.6.3, а mod_python под него нету. Поставил mod_wsgi, только вот все равно пока не жрет апач питоновские файлы. Мод включил, директивы от mod_python к нему не подходят, а какие подходят че-то никак не найду.

Виталий

Ну так у WSGI иной принцип запуска, да и mod_python с никак не связан, следовательно директивы от него и не подходят. Погуглите, в инете примеров куча по настройке mod_wsgi.

CharnaD

Блин. Это какая-то невезуха. Убрал питон 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

kostyl

Та да, что то с этими разницами версий нифига не работает mod

adw0rd

Что сделать надо? Запустить сайт на фреймворке каком-то или без?
Можно использовать uwsgi, WSGI, Tornado, gunicorn и т.д.

prodigy

Я изучаю python и охота сайт-визитку на локалхосте сделать ради интереса.

Пэхэпэ не сломаеца если я к апачу2.2 прикручу wsgi?

Кстати, если использовать разные сервера в будущем, то к каждому по-разному команду import … делать или у них одинаковые API?