Open Server. Подключаем Python

Published: 25.08.2012

Если вы веб-разработчик и работаете в Windows, думаю, что вы знакомы с веб-сервером Open Server. Если нет, то вот, читайте: Open Server. Альтернатива Denwer'у есть!

Как видите всем он хорош, если вы пишете на PHP. А если есть необходимость разработки на Python ? "Что это вообще за извращение — программировать на Питоне под Виндой!", — скажете вы и будете правы. И всё же. А если хочу?! Дайте-дайте-дайте!

Разработчик Open Server'а Максим Архипов поначалу имел в планах добавить туда интерпретатор Питона, но из-за сложности реализации решил, что это нецелесообразно.

Но всё не так уж и плохо. Вернее: "Good news, everyone!", — прикрутить Python к Open Server достаточно легко. Он, конечно, не будет работать в portable-режиме, но всё же это лучше, чем ничего.

Итак, начнём. Если у вас ещё не установлен Питон, качаем Windows Installer и устанавливаем. Я устанавливал на своём компе третью версию, но разницы в случае с веткой Python 2.x, думаю, нет. Установка Питона очень простая, запускаем exe и соглашаемся со всеми настройками по умолчанию. После установки, чтобы Windows наверняка применила обновление системной переменной PATH, рекомендую перезагрузиться.

В последней на сей момент версии Open Server 4.6.1 есть две версии веб-сервера Apache, допустим, мы решили использовать Apache 2.4.3.

Итак, следим за руками: открываем файл X:\path_to_open_server\userdata\config\Apache-2.4.3_server.txt, находим строчку

AddHandler cgi-script .cgi .pl

и добавляем.py

AddHandler cgi-script .cgi .pl .py

Что? Ждёте чего-то ещё? Так всё — Питон работает! Создаём домен python.local, кладём туда файл index.py примерно со следующим содержанием:

  1. #!c:\Python32\python.exe
  2.  
  3. print ("Content-Type: text/html\n")
  4. print ("<html><head><title>And Now for Something Completely Different…</title></head><body>")
  5. print ("<h1> Python  works!</h1>")
  6. print ("<p>Привет, мир!</p>")
  7. print ("</body></html>")

И переходим по ссылке http://python.local/index.py. Ну что, работает? Тогда найдите ещё в конфиге Апача такой блок:

<IfModule dir_module>
  DirectoryIndex index.php index.html index.htm index.pl
</IfModule>

и добавьте index.py:

<IfModule dir_module>
  DirectoryIndex index.php index.html index.htm index.pl index.py
</IfModule>

Теперь предыдущий пример будет открываться по ссылке http://python.local/. Конечно же, если в этой же папке не будет index.php или других перечисленных вариантов в конфиге Апача, идущих перед index.py. Или же просто переставьте index.py в начало списка.

Можем для полного счастья развернуть какой-нибудь python-фреймворк. Самый популярный, конечно, Django. Но я себе установил третью версию Питона, а Джанго ещё не портирован для неё. И это, кстати, сопутсвующий вопрос: "А какие же python-фреймворки можно использовать для третьей версии языка?" Как и во многих случаях, ответ найдём на stackoverflow.com: What Web Development frameworks support Python 3?. Выбираем Bottle: Python Web Framework — его очень легко настроить. Больше скажу — для него даже не нужен Open Server. Берём любую папку. Ложим туда вот этот файл: bottle.py. В этой же папке создаём файл с произвольным именем, допустим, bottleWeb.py и следующим содержанием:

  1. from bottle import route, run
  2.  
  3. @route('/hello/:name')
  4. def index(name='World'):
  5.   return '<b>Hello %s!</b>' % name
  6. run(host='localhost', port=8080)

Запускаем — двойного клика по файлу должно хватить. Затем набираем в браузере http://localhost:8080/hello/world. This is it.

В заключение скажу, что я в Питоне пока что полный нубас и школоло, и только собираюсь за него взяться, так что вопросы можете не задавать, всё что знал — рассказал.

UPD 27.08.2012: Чтобы убедиться в правильности всего вышенаписанного, решил таким же способом соединить Python и Open Server на рабочем компе. Причём Python поставить версии 2.7. Кстати, почему именно Open Server - по идее, должно работать с любым вариантом веб-сервера на основе Apache.

Настройки Apache остались те же. Только index.py претерпел изменения: помимо отличающегося пути к интерпретатору (первая строка) и синиаксиса оператора print, из-за русских символов понадобилось добавить указание кодировки. Конечный вариант такой:

  1. #!c:\Python27\python.exe
  2. # -*- coding: utf-8 -*
  3.  
  4. print "Content-Type: text/html\r\n"
  5. print "<html><head><title>And Now for Something Completely Different…</title></head><body>"
  6. print "<h1> Python  works!</h1>"
  7. print "<p>Привет, мир!!!</p>"
  8. print "</body></html>"