Использование Python как PHP в Apache / Windows - PullRequest
4 голосов
/ 25 января 2010

Я понимаю, что должен использовать mod_wsgi для запуска Python, и я пытался его настроить, но я в замешательстве:

Это пример конфигурации, которую я нашел для web.py:

LoadModule wsgi_module modules/mod_wsgi.so

WSGIScriptAlias /appname /var/www/webpy-app/code.py/

Alias /appname/static /var/www/webpy-app/static/
AddType text/html .py

<Directory /var/www/webpy-app/>
    Order deny,allow
    Allow from all
</Directory>

Итак ... Я так понимаю, мне нужно настроить свой веб-сервер так, чтобы он указывал на приложение python? Разве нет способа использовать его как PHP, где, когда вы запрашиваете файл .py, Python интерпретирует его? Как мне перевести мой веб-сервер в самое простое состояние, где я могу загрузить файл, содержащий print "Hello World", запросить его и сказать «Hello World»?

Ответы [ 5 ]

6 голосов
/ 25 января 2010

Больше всего похоже на модель PHP, возможно Python Server Pages , PSP.

mod_python имеет обработчик PSP . Созданные вами файлы выглядят примерно так :

<html>
<body>
<%
for n in range(3):
  # This indent will persist
%>
<p>This paragraph will be 
repeated 3 times.</p>
<%
# This line will cause the block to end
%>
This line will only be shown once.
</body>
</html>

Spyce продвигает модель PSP на шаг вперед, как и Webware для Python .

Эта статья является хорошим введением в PSP mod_python.

3 голосов
/ 25 января 2010

Я думаю, что вы можете использовать mod_cgi с apache и вставить URL-адрес доступного файла python с первой строкой скрипта

#!/usr/bin/python

однако это ОЧЕНЬ неэффективный способ доступа к коду python, потому что apache должен перезагружать python при каждом доступе к странице. Хорошо, для одноразового сценария обслуживания только вы звоните время от времени, но не подходит для активного контента, к которому обращаются пользователи.

Редактировать: я не знал, что вы были на Windows. Нечто подобное должно быть возможно. Попробуйте погуглить python apache cgi.

Редактировать: Если у вас есть Apache, работающий в режиме CGI, вам не нужно перезапускать его каждый раз. Если скрипт присутствует и выполняется по указанному URL-пути, он запустится. Если это не так, вы получите ошибку 404 страницы не найдена

Редактировать: Я сделал очень быстрый поиск в Google по запросу "python cgi" и нашел эти слайды десять лет назад создателем Python. Они документируют устаревшую версию языка, но слайды с 41 года могут быть вам полезны. Как я уже сказал, люди отошли от создания сценариев веб-приложений с помощью этого метода, но если ваши требования просты, он все равно будет работать. http://legacy.python.org/doc/essays/ppt/sd99east/index.htm

Редактировать: лучший подход зависит от того, что вы пытаетесь сделать. Использование структуры, которая обрабатывает обслуживание для вас, может быть полезным. Я могу порекомендовать Web2py как очень способную, безопасную среду, которая позволит вам писать сценарии и добавлять их динамически. Он имеет версию для Windows, которая включает в себя простой веб-сервер, или вы также можете настроить Apache. Поскольку все включено, вы можете начать работу в течение нескольких минут, если вы прочитаете вводную информацию. Если вы раньше не пользовались веб-фреймворками и не знакомы с языком программирования, таким как «контроллер представления модели», не откладывайте на завтра. http://www.web2py.com/

2 голосов
/ 25 января 2010

Вопреки тому, что говорят другие, вы можете получить в основном, где вы хотите. Однако StackOverflow - не очень хорошее место для объяснения того, что делать. Вместо этого вам лучше в этом случае перейти к официальному списку рассылки mod_wsgi в группах Google по адресу:

http://groups.google.com/group/modwsgi

Вы также можете получить некоторые идеи о пути, который необходимо прочитать, прочитав:

http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines

Что-то действительно похожее на то, как PHP работает в отношении или сопоставлении URL-адресов, вы не хотите использовать WSGIScriptAlias ​​и вместо этого должны использовать метод AddHandler для обозначения файлов как файлов сценариев WSGI.

Я бы также посоветовал прочитать:

http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode

Это последнее не является полной картиной, хотя в отношении перезагрузки кода, поскольку есть изменения в mod_wsgi 3.X, которые там не описаны, которые добавляют еще больше возможностей для автоматической перезагрузки исходного кода.

В целом, хотя вы можете следовать модели поведения PHP, я бы очень рекомендовал веб-фреймворк Python высокого уровня. Что в сочетании с функцией режима демона в mod_wsgi для запуска перезагрузок путем прикосновения к файлу сценария WSGI, как правило, более чем достаточно и более предсказуемо.

2 голосов
/ 25 января 2010

Я не думаю, что WSGI / mod_wsgi совместим с тем, что вы хотите сделать - приложение WSGI обычно принимает на себя разбор URL, что делает его несовместимым с вашим требованием "работает как PHP".

Если вы не хотите использовать CGI, я думаю, что Publisher mod_python ближе к тому, что вы хотите: http://modpython.org/live/mod_python-3.3.1/doc-html/tut-pub.html

1 голос
/ 25 января 2010

Бродя немного в стороне от вашего первоначального вопроса, но пытаясь ответить на некоторые из вопросов, которые возникли в ответ на искристые усы:

Пример работы WSGI в среде общего хостинга см. На этих страницах, посвященных поддержке WSGI Пассажира по адресу A Small Orange и Dreamhost , в котором выполняется необходимая настройка сервера. через файл .htaccess или веб-панель.

Я думаю, что хостинг Python на общих серверах все еще относительно редок; Я ожидаю, что больше приложений Python будут работать на каком-то VPS или Google AppEngine .

Некоторые веб-приложения Python вообще не запускаются из модуля apache или nginx, у них есть собственный постоянный сервер, и если вы хотите, чтобы они были на том же сервере, что и другие, вы настраиваете другой сервер для прокси на вашем Python. сервер. Но это совсем другая история.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...