28 августа 2009 г. Apache Windows Python FreeBSD

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

Комментарии

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

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

блин ппц сколько всего для пайтона, и не знаешь что выбрать..
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.

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

Markdown