mod_python

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

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

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

http://adw0rd.ru/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 и как использовать его механизм шаблонов, можете рассмотреть этот пример чтобы во всем разобраться.


Комментарии (18) на запись «Установка mod_python для разработки веб-приложений на Python»

» Трекбеки скрыты, показать их?
  1. phpdude | 29.08.2009 в 00:05

    чето я нихера не понял «в чем тут сложности?»... это было так сложно?)))

  2. adw0rd | 29.08.2009 в 00:10

    Какие сложности? Ты о чем вообще?

  3. aivee | 29.08.2009 в 11:55

    блин ппц сколько всего для пайтона, и не знаешь что выбрать...

    mod_python, wsgi — что лучше?

    есть еще чтонить кроме psp?

  4. adw0rd | 29.08.2009 в 12:00

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

  5. Виталий | 30.08.2009 в 10:41

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

  6. adw0rd | 30.08.2009 в 16:57

    Спасибо за то что поделились опытом, тоже попробую mod_wsgi

  7. adw0rd | 02.09.2009 в 12:05

    Еще связка, думаю куда более эффективная чем mod_wsgi — Django + Nginx + FastCGI

  8. Miletya | 07.09.2009 в 00:06

    Django рулит, но можно попробовать мод mod_wsgi

  9. Виталий | 13.09.2009 в 18:17

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

  10. adw0rd | 13.09.2009 в 18:33

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

  11. sapun | 25.09.2009 в 22:10

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

  12. adw0rd | 26.09.2009 в 10:09

    sapun, я сейчас Торнадо использую...

  13. CharnaD | 26.10.2009 в 02:24

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

  14. Виталий | 26.10.2009 в 09:28

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

  15. CharnaD | 29.10.2009 в 04:41

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

  16. adw0rd | 29.10.2009 в 10:51

    да забей ты на mod_python, юзай Tornado

  17. kostyl | 07.02.2010 в 15:57

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

  18. adw0rd | 07.02.2010 в 20:50

    Да мод вообще фигово работает, тормоз он еще тот...

Оставить комментарий