Как веб-приложения, написанные на Python, развернуты? - PullRequest
3 голосов
/ 12 июня 2011

Я бывший разработчик PHP и изо всех сил пытаюсь преодолеть мышление, что я могу написать скрипт конфигурации nginx, создать каталоги, запустить nginx + PHP-FPM, загрузить мой код и позволить ему работать.Я хочу начать играть с Python, чтобы почувствовать его и начать создавать веб-приложения, но я немного растерялся относительно того, как заставить все это работать.

Хотя совет некоторых людей неизменно будетчтобы использовать фреймворк, такой как Django, я хочу посмотреть, как все это работает снизу вверх.

Я натолкнулся на сравнение веб-серверов Python, и кажется, что gevent - это то, что я ищуза.Но как все это сочетается?Нужно ли мне использовать nginx (кроме статического контента) в качестве обратного прокси-сервера или я делаю что-то другое?Я сталкиваюсь с «слепотой для начинающих» и изо всех сил пытаюсь понять, как все это сочетается.

Ответы [ 3 ]

2 голосов
/ 12 июня 2011

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

Самый простой способ начать работу - просто создать исполняемый скрипт Python (.py) и поместить его в ваш cgi-bin. Вы можете получить к нему доступ через yourhost.com/cgi-bin/your_script.py. Простой в использовании, простой в использовании для обработки форм и прочего.

Некоторые серверы требуют, чтобы вы перезапустили сервер, прежде чем он сможет «увидеть» новый сценарий .py, что может сильно раздражать для быстрой разработки. Это одна из причин, почему многие люди используют промежуточное программное обеспечение, такое как WSGI. Вот как я изменил свою конфигурацию Apache для включения WSGI:

LoadModule wsgi_module libexec/apache2/mod_wsgi.so

<VirtualHost *:80>

WSGIScriptAlias /myapp /Library/WebServer/wsgi-scripts/views.wsgi

<Directory /Library/WebServer/wsgi-scripts>
Order allow,deny
Allow from all
</Directory>

</VirtualHost>

views.wsgi - это просто скрипт Python. Теперь, если я зайду в localhost / myapp / что-нибудь, он будет перенаправлен на views.wsgi. Рекомендуется не помещать этот файл в корневой каталог, иначе вы не сможете ссылаться на статические файлы.

Простое приложение может выглядеть просто так:

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

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

 path      = environ.get('PATH_INFO','')
 if path.startswith('/helloworld'):
  # call your function that returns HTML code

Я пока мало занимался фреймворками (такими как Django), но я думаю, что одно из преимуществ заключается в том, что они позволяют легко заполнять шаблоны HTML, используя любые переменные, передаваемые из вашего скрипта. Шаблонный движок Django позволяет включать переменные, а также логику (если, для и т. Д.), Смешанную с вашим HTML Когда функция вызывается, все, что она возвращает, отправляется клиенту.

Я все еще новичок во всем этом, поэтому, пожалуйста, исправьте меня, если здесь есть какие-либо ошибки ...

0 голосов
/ 18 июня 2011

Вам нужно программное обеспечение, которое будет выполнять ваш код Pyton ..

Вы можете попробовать стек Python на 100% с торнадо

Или вы можете использовать Apache, Nginxили Lighttpd (я думаю, что все написано на C), а затем использовать какой-то мод (mod_wsgi, fgci или uWsgi), чтобы эти веб-серверы запускали ваш код с использованием интерфейса wsgi .Этот второй вариант похож на то, что apache + some_mod делает для запуска вашего PHP-кода.

У меня есть производственные сайты, работающие на Apache + mod_wsgi и Nginx + uWsgi

0 голосов
/ 12 июня 2011

С Python это немного отличается от PHP.Хорошая вещь о Python, это то, что общий стандарт определен в стандарте, который позволяет использовать различные приложения Python с одной стороны и разные веб-серверы с другой.Он называется WSGI, и вы можете прочитать больше об этом здесь

И здесь - хороший пост о развертывании приложения Django через ngnix.

...