2010-11-16 3 views
2

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

Предположим, у меня есть .py-файл, который печатает «Hello world!». Как я могу проверить, поддерживает ли мой сервер обработку этого файла?

FYI, это сервер Mac OS X 10.5. Поэтому я знаю, что Python установлен (он установлен на Mac OS X по умолчанию), но я не знаю, настроен ли он для обработки .py-файлов на стороне сервера и возврата результатов.

BTW, я исхожу из PHP-фона, так что это немного чуждо мне. Я просмотрел документы python re: wgsi, cgi и т. Д., Но поскольку я еще не сделал ничего конкретного, это не совсем понятно.

+1

Какой «сервер» вы говорите? Веб-сервер - довольно конкретная часть программного обеспечения. Например, сервер Apache httpd. О каком «сервере» вы спрашиваете? –

+0

Как я уже говорил, я использую сервер Mac OS X 10.5. По умолчанию используется Apache (я считаю). – Jeff

+0

Mac OS X может использовать Apache. Не в этом дело. Вы ** думаете, что используете Apache? Вы должны выбрать сервер. Какой сервер вы собираетесь использовать? –

ответ

5

Очень простое приложение WSGI может выглядеть следующим образом:

def application(environ, start_response): 
    start_response('200 OK', [('content-type', 'text/html')]) 
    return ['Hello world!'] 

К сожалению, если вы поместите это в helloworld.py на сервере, а затем перейдите к URL/helloworld.py вы, скорее всего, увидеть код ,

В общем, вам необходимо добавить на сервер (или в файл конфигурации сервера) очень конкретные параметры конфигурации, чтобы он правильно служил вашему приложению python. При использовании mod_wsgi на Apache 2, конфигурация может выглядеть следующим образом:

<VirtualHost *> 
    ServerName example.com 
    WSGIScriptAlias /server/location/address /path/to/helloworld.py 
</VirtualHost> 

Где/сервер/местоположение/адрес является конечной точкой URL вы должны просмотреть.

Это связано с тем, что WSGI python улавливает все URL-адреса, переданные ему, и толкает их в ту же точку входа (ваш метод/класс приложения). И из информации, полученной в параметрах, приложение должно решить, какую страницу вернуться.

Поскольку эта информация настолько специфична для приложения, «должен быть» способ ее настройки на сервере, однако мне еще предстоит встретить панель настройки веб-хостинга, которая позволяет настраивать приложения Python. Обычно это означает, что вам нужно связаться с администраторами сервера и настроить их для вас.

Однако в целом, когда вы подписываетесь на хостинг, у компании обычно есть страница, где они точно сообщают вам, что поддерживается на их серверах (как правило: php, mysql), и сколько пространства и пропускной способности вам разрешено. Таким образом, если они не перечисляют его на своем сайте, весьма вероятно, что они его не поддержат.

Чтобы обойти это, вы можете вместо этого купить VPS (Virtual Private Server), а затем настроить его, как хотите.

+0

Спасибо, это полезно! У меня есть несколько последующих вопросов, если вы не возражаете? На сервере есть общий cgi-bin, и я заметил, что там есть файл test.py, который работает: http://chil.rice.edu/cgi-bin/test.py. В моем файле python появляется сообщение об ошибке , Я помню, что читал, что любые изменения в файле python требуют перезапуска веб-сервера (при использовании метода CGI), поэтому, предположительно, если я перезапущу сервер, он должен работать правильно, не так ли? Что касается WSGI, я думаю, можно с уверенностью предположить, что я не могу использовать WSGI, не связываясь с моим системным администратором, верно? – Jeff

+0

Это зависит от того, как они настроили систему python. Возвращаемый заголовок сервера: Server - Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.7l DAV/2 PHP/5.2.12. Поэтому я предполагаю, что они используют mod_python, и в этом случае да вам нужно как-то перезапустить Apache, чтобы заставить его обслуживать более новую версию файла. Есть способы обойти это (используя автоматическую перезагрузку кода), если они используют mod_wsgi, см. Http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode. – Mike

1

Прочитайте это первым.

How Python web frameworks, WSGI and CGI fit together

Затем пересмотреть свой вопрос конкретно взывать вещи, которые вы еще не выяснены.

Прочитав это, перечитайте часть о mod_wsgi, являющуюся одним из нескольких способов, которыми Apache может запускать Python.

Перечитав эту часть, перечитайте часть о том, как Python может быть запущен как сценарий cgi. Это еще один из нескольких способов, которыми Apache может запускать Python.

После перечитания всего этого, пожалуйста, пересмотреть вопрос, чтобы объяснить, какая часть конфигурации Apache смущает вас.

Вы не можете найти mod_wsgi? Не можете найти mod_cgi? Пожалуйста, укажите, какие части конфигурации Apache вас путают.

+0

На данный момент меня не интересуют рамки. Я понимаю разницу между WSGI и CGI, но на данный момент мне действительно все равно, какой я использую. Я просто хочу знать, установлен ли сервер, который я использую, для запуска сценариев python, будь то cgi или wsgi или fastcgi. Предположительно, я должен выяснить, какие из них настроены для моего сервера (если есть), но я не знаю, как это сделать. Я попытался сделать файл .htaccess с этими командами, но сценарий python не выполняется. – Jeff

+0

@Jeff: Какая часть «mod_wsgi» вас смущает? Я бы подумал, что если вы понимаете WSGI, вы поймете, что mod_wsgi заставляет его работать. Если вы хотите узнать, имеет ли Apache mod_wsgi, ** обновите ** вопрос, чтобы быть очень, очень конкретным в отношении того, что вы ищете. Прямо сейчас ваш вопрос расплывчатый, и у вас есть комментарии повсюду. Пожалуйста, уточните свой вопрос, чтобы быть очень, очень конкретным. –

+0

Я думаю, что у нас проблемы с коммуникацией ... Я читал документы Python, которые сравнивают wsgi и cgi, но я не утверждаю, что знаю много о том, как работает mod_wsgi. У меня просто есть скрипт python, и я хочу запустить его, если это возможно. Я обновлю свой вопрос, надеюсь, это прояснит ситуацию ... – Jeff

2

Если вы новичок в разработке веб-приложений Python и Python, то сначала проигнорируйте все проблемы с хостингом и не начинайте с нуля. Просто зайдите в полнофункциональную веб-инфраструктуру Python, такую ​​как Django или web2py, и научитесь писать веб-приложения Python с помощью встроенного веб-сервера разработки. Вы только причиняете себе большую боль, пытаясь решить определенную проблему производства веб-хостинга в первую очередь.

Смежные вопросы