Возвращаясь к наболевшей теме учебы, я обнаружил что поднятая на ноутбуке система на apache, очень не работает с [python][]. Очевидно, во время чистки места были удалены какие-то ключевые компоненты конфигурации и потому обработка .py файлов перестала функционировать. Думая, о том как бы это заставить работать, я начал плясать с бубном.
Первое рещение было наиболее простым: подключить [python][] к обработке как внешний обработчик cgi-cкриптов. То есть, добавить в httpd.conf следующие строки:
AddType application/x-httpd-python .py ScriptAlias /_python/ "c:/Python/" Action application/x-httpd-python "/_python/python.exe"
Cам не понял почему, но данная фишка не сработала ни для отдельной папки, которой был выставлен Option ExecCGI, ни для cgi-bin папки.
Я углубился в освоение интернета. Большинство решений предложенных мне google, базировались на модуле [mod_python][], но к своему несчастью, я уже имел грустный опыт попыток его компиляции на windows xp, поэтому углубился в поиск информации иного рода.
Вторая часть ссылок представляла собой многочисленные дискуссии python vs. php или статьи как хорош [python][] для web-development-a. Их я тоже по понятным причинам старался игнорировать, ибо время было ограничено.
Лишь небольшая прослойка найденных мной ссылок предлагала какие-то толковые решения, но зачастую они ссылались на файлы, которые найти в Интернете было нереально. Правда, где-то среди всего этого я нашел упоминание о mod_python-3.0.3.win32-py2.4.exe, поиск по которому привел меня на страницу, где были собраны все варианты windows бинарников данного пакета. Там-то я и обнаружил файл mod_python-3.2.8.win32-py2.4.exe, который является последней версией модуля для платформы от microsoft.
Инсталляция элементарна, потребовала пяти кликов и указания ему папки где живет web-server. Дальше началось самое интересное. На сайте mod-python’a есть мануал с примером выводящим “Hello, World!”. Cамое обидное, что на что-то большее этот экзампл не способен, да и работать с ним не самое удобное.
Опять google и опять holly wars python vs. php. В одном из них натыкаюсь, на упоминание о том, что код питон можно встраивать в html файл подобно php-шному. Углубившись, узнал что такая штука называется Python Server Pages.
Google Again! Теперь уже более конкретные ссылки, на некий пакет Webware-0.9.2, который предлагает целый пакет услуг типа сервера и почты для разработки… Похоже даже не пакет, а целый framework. В общем скачал, запустил и убрал прочь. К моему случаю это отношения не имело. Вернувшись к поиску, увидел другую ссылку, которая меня привела на сайт Oracle. И вот там я и встретил решение:
AddHandler mod_python .psp .psp_ PythonHandler mod_python.psp PythonDebug On
3 заветных строчки изменивших мою судьбу! (Звучит, конечно громко, но все-таки проблема была решена).
Сначала, я конечно обрадовался, но потом решил, что у многих бойцов, делающих первые шаги на поприще webdev-a могут возникнуть подобные проблемы, и стоит изложить сие дело на русском, чтобы сузить для них круг поисков.
[python]: http://python.org
[mod_python]: http://modpython.org
[tags]python, mod_python, apache, webdev[/tags]
IMHO, достаточно сумбурные поиски не понятно чего не понятно зачем.
Симптомы не ясны: “обработка .py файлов перестала функционировать”.
Причина не найдена: “во время чистки места были удалены какие-то ключевые компоненты конфигурации”.
Ход поиска не понятен: причем тут webware и psp?
Анализ результата отсутствует.
В итоге – действительно “пляски с бубном” – не зная причин, тыкаться во всевозможные решения неразобранной задачи.
По-моему все понятно: необходимо заставить работать apache с файлами на языке программирования python: открывать в броузере генеримый ими код, а не исходный код самих файлов.
Среди просмотренных ссылок была эта Python Server Pages. Нетрудно догадаться, что данное решение вполне удовлетворяло меня и я обратился к дальнейшему просмотру Интернета в данном направлении.
Анализа результата не будет. Данная статья имеет под собой цель показать, как решить вопрос настройки работы web-server-a apache и mod_python без лишнего геморроя. Зачем он?
Писать, как нерадивый студент в конце лабораторной работы:
“Я научился настроивать webserver apache и его модуль mod_python, а так же проникся идеей Python Server Pages и собираюсь активно использывать эту технологию в будущем” считаю глупо.
Ничего не понял.
Для чего в итоге настраивался mod_python: для cgi-like? для psp? Какой код уже был? Как он работал? Почему он перестал работать? Работает ли старый код с новыми настройками?
Если будем продолжать то, лучше в почту или можно в форум.
Моя задача была настройка apache, чтобы он принимал к исполнению питоновский код в любом виде. На данной системе будет поднят механизм генерации страниц по данным из базы данных MySQL.
Готового кода не было ни строчки, если опустить тестовый файл вида
Работал он соответственно, выводя на экран фразу “Hello, World!” при запросе урла данного файла.
Почему перестал? Не знаю, может быть все конфигурационные строки apache были абсолютно ненужными потому что у меня стоял какой-нибудь модуль, типа fastcgi в другой папке или еще чего. Знал бы что сломалось то бы и чинил.
Старый код не работает. Работает новый. К тому же, работать с psp будет проще, чем с cgi-like реализацией.
Возможно, стоит присмотреться к одному из веб фреймворков: Django, TurboGears, Pylons.
С любым из них быстрее, проще и качественней, чем без них. Ну и внедрение Py-кода в html далеко не самая лучшая идея.
С Джанго заочно знаком: постоянный читатель softwaremaniacs.org/blog.
Другое дело, что основная идея задания этой курсовой работы, показать мощь работы с базами данных и замечательность языка запросов SQL.
К тому же, большинство данных продуктов требуют хорошего понимания о классах и прочем, а у жены ОО-программирование только началось, так что ей будет тяжело войти в коллею с фреймворком.
А чем внедрение плохо? И asp, и ruby-on-rails превозносят это скорее как достоинство. Мне кажется, тоже подход лучше: не нужен template engine – проект-то небольшой, работает WYSIWYG.
У меня была таже проблема. Решил ее так.
На диске D: создал директорий wwwroot для Web страниц и привязал к ней Apache стандартным способом.
Затем в конце файла httpd.conf создал виртуальный сервер 127.0.0.1 и прописал в нем этот директорий для файлов с расширение .py (т.е. для питона) следующим образом:
Затем написал программу Hello.py на питоне и поместил ее в директорий D:/wwwroot/python
Программа Hello.py :
Замечание: В программе Питтона в первой строке должна быть строка, в которой прописан путь к python.exe (В мое случае это: #!G:/Python23/Python.exe).
Затем в браузере задал адрес:
http://127.0.0.1/python/Hello.py
и все нормально работает.Теперь отлаживаю программы питона точно также как ASP и PHP на своем локальном сервере под Windows.
С уважением Герасимов Н.А.
Спасибо, Николай, что уделили время описанию своего решения. Возможно, я когда-нибудь даже попробую такой вариант, поскольку мой вариант через python server pages на самом деле работал, только до тех пор, пока я не попробывал писать в базу MySQL русские буквы. Наталкиваясь на такую информацию в передаваемых данных, скрипт вылетал с ошибкой. Уж как я не пытался конвертировать данные в utf-8, хотя они и были в utf-8, все оказалось безрезультатно.