Настройка Python в Windows / Apache? - PullRequest
8 голосов
/ 16 января 2009

Я хочу, чтобы простой сценарий веб-страницы Python "hello world" работал на Windows Vista / Apache, но поразил разные стены. Я использую WAMP. Я установил mod_python, и модуль показывает, но я не совсем уверен, что я должен делать, например, http.conf (например, AddHandler mod_python .py либо приводит меня к файлу, который не найден, либо запрещен, либо к модулю не найдены ошибки при доступе к http://localhost/myfolder/index.py). Я могу заставить mod_python.publisher работать, но я "хочу" это / нужно это?

Кто-нибудь может помочь?

Спасибо!

Ответы [ 3 ]

25 голосов
/ 16 января 2009

Держитесь подальше от mod_python. Одна из распространенных заблуждений заключается в том, что mod_python похож на mod_php, но для python. Это неправда. Wsgi - это стандарт для запуска веб-приложений на Python, определенный как PEP 333 . Поэтому используйте mod_wsgi вместо.

Или, в качестве альтернативы, используйте некоторую веб-среду, в которой есть сервер. Черрипи особенно хорош. Вы сможете запускать ваше приложение как автономно, так и через mod_wsgi.

Пример приложения Hello World с использованием cherrypy:

import cherrypy

class HelloWorld(object):
    def index(self):
        return "Hello World!"
    index.exposed = True

application = HelloWorld()
if __name__ == '__main__':
    cherrypy.engine.start()
    cherrypy.engine.block()

Очень просто, а? Запуск этого приложения непосредственно на python запустит веб-сервер. При настройке mod_wsgi он будет работать внутри apache.

4 голосов
/ 16 января 2009

Вам не нужен mod_python для запуска кода Python в Интернете, вы можете использовать простое программирование CGI для запуска кода Python, следуя инструкциям по следующей ссылке: http://www.imladris.com/Scripts/PythonForWindows.html

Это должно дать вам некоторые параметры конфигурации, необходимые для включения Python с CGI, а поиск в Google должен дать вам массу другой информации о том, как программировать в нем и тому подобное.

Mod_python полезен, если вы хотите немного более «дружественный» интерфейс или больший контроль над самим запросом. Вы можете использовать его для создания фильтров запросов и прочего для сервера Apache, а с помощью обработчика издателя вы получите более простой способ обработки запросов веб-страниц через python.

Обработчик издателя работает путем сопоставления URL-адресов с объектами / функциями Python. Это означает, что вы можете определить функцию с именем 'foo' в вашем файле Python, и любой запрос к http://localhost/foo вызовет эту функцию автоматически. Больше информации здесь: http://www.modpython.org/live/current/doc-html/hand-pub-alg-trav.html

Что касается конфигурации Apache, чтобы все работало, то что-то вроде этого должно хорошо вам помочь

<Directory /var/www/html/python/>
  SetHandler mod_python
  PythonHandler mod_python.publisher
  PythonDebug On
</Directory>

Если вы настроили / var / www / html / в качестве корня вашего веб-сервера и у вас есть файл index.py в каталоге python / там, то любой запрос к http://localhost/python/foo должен вызывать foo () в index.py или не работает с 404, если он не существует.

0 голосов
/ 16 января 2009

AddHandler mod_python .py

Вы установили 'PythonHandler'?

В наши дни рассмотрите возможность использования WSGI вместо собственных интерфейсов mod-python для более широких возможностей развертывания. Либо через поддержку WSGI mod-python, либо, может быть, лучше, mod-wsgi. (CGI через, например, wsgiref также будет работать нормально, и его легко настроить в среде разработки, где вас не волнует его мусорная производительность.)

...