среда, 12 сентября 2012 г.

Как я прикрутил Python к Apache

Решил поиграться с Python. Для тех кто в танке, определение из википедии: Python - высокоуровневый язык программирования общего назначения с акцентом на производительность разработчика и читаемость кода. Мне захотелось попробовать его в web-разработке. До этого момента я использовал только PHP. Поэтому у меня уже была установлена связка Apache 2.2 + PHP 5.3 + MySQL 5.5 на Windows готовая к использованию.

Установка интерпретатора Python 2.6 происходит быстро и в два шага: загрузить дистрибутив и запустить инсталятор. Если вы еще не установили Apache, скачайте и его с офф-сайта. После установки Apache, можете сразу настроить VirtualHosts. Так удобнее будет. Мануалы по настройке vhosts в Apache находим в гугле. Но вернемся к нашим баранам :)

Приступаем к установке




Первым делом я решил зайти на офицаилный сайт Python и посмотреть, что там пишут про разработку под web. В документации есть толковая статья об этом http://docs.python.org/howto/webservers.html. Там описаны множество способов использования Python в web. Мне приглянулся способ, использующий mod_wsgi http://docs.python.org/howto/webservers.html#mod-wsgi. Тем более, что на сайте фреймворка Django,  свободного фреймворка для веб-приложений на языке Python, рекомендуется использовать именно mod_wsgi. Ну что же как говорится,

Try it yourself


У mod_wsgi есть страничка на code.google.com. Перейдя на нее, можно найти как сам бинарник (Pthon 2.6) под Windows, так инструкцию как его прикрутить к Apache. Для установки нужно скопировать скачанный бинарник в директорию модулей Apache (C:\Program Files\Apache\modules\) и прописать в конфиге httpd.conf следующую строку:

LoadModule wsgi_module modules/mod_wsgi.so

После этого перезапускаем Apache.

Ну теперь осталось сконфигурировать для виртуального хоста и попробовать запустить первое веб-приложение, написанное на Python.

Создаем директорию wsgi-scripts в document root Apache (у меня это D:\web_server\www\). В этой директории будут лежать наши скрипты. Создадим в качестве примера один:
def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World!'

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

Это очень простой скрипт он будет выводить в окно браузера строку 'Hello World!'. Сохраняем его в директорию wsgi-scripts как myapp.wsgi. Далее открываем vhosts.conf и добавляем новый виртуальный хост:
<Virtualhost>
    ServerName myapp
    DocumentRoot "D:/web_server/www/myapp/"

    <Directory myapp="myapp" web_server="web_server" www="www">
 Order allow,deny
 Allow from all
    </Directory>
 
    WSGIScriptAlias /myapp D:/web_server/www/wsgi-scripts/myapp.wsgi

    <Directory d:="d:" web_server="web_server" wsgi-scripts="wsgi-scripts" www="www">
 Order allow,deny
 Allow from all
    </Directory> 
</Virtualhost>
Теперь перейдя по адресу http://myapp/myapp мы увидим 'Hello World!'. Вот на этом я пока и остановился.

Комментариев нет:

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