Простой Python. Современный стиль программирования (Любанович) - страница 159

из стандартной библиотеки или сервера отладки Bottle и Flask. На производстве вам нужно запускать код на более быстрых серверах. Как правило, вы выбираете один из следующих вариантов:

• Apache с модулем mod_wsgi;

• Nginx с сервером приложений uWSGI.

Оба они работают хорошо: Apache, скорее всего, более популярен, а у Nginx имеется репутация стабильного и тратящего меньше памяти сервера.

Apache

Лучшим WSGI-модулем Apache (http://httpd.apache.org/) является mod_wsgi (https://code.google.com/p/modwsgi/). Он может запускать код, написанный на Python, внутри процесса Apache или в отдельном процессе, который обменивается данными с Apache.

Если вы используете Linux или OS X, в вашей системе Apache уже установлен. Для Windows вам придется устанавливать Apache самостоятельно (http://bit.ly/apache-http).

Наконец, установите предпочитаемый веб-фреймворк Python, основанный на WSGI. Попробуем использовать в наших примерах фреймворк Bottle. Практически вся работа включает в себя конфигурирование Apache, что может оказаться довольно затруднительным.

Создайте тестовый файл и сохраните его как /var/www/test/home.wsgi:

>import bottle

>application = bottle.default_app()

>@bottle.route('/')

>def home():

>····return "apache and wsgi, sitting in a tree"

В этот раз не вызывайте функцию run(), поскольку это запустит встроенный веб-сервер Python. Нам нужно присвоить некоторое значение переменной application, поскольку именно его будет проверять mod_wsgi при объединении веб-сервера и кода Python.

Если Apache и его модуль mod_wsgi работают корректно, нужно лишь соединить их с нашим сценарием Python. Нам нужно добавить в файл одну строку, которая определяет сайт по умолчанию для этого сервера Apache, но поиск этого файла сам по себе является задачей. Он может называться /etc/apache2/httpd.conf, или /etc/apache2/sites-available/default, или даже быть латинским названием чьей-то ручной саламандры.

Предположим, что вы понимаете работу Apache и нашли нужный файл. Добавьте эту строку в раздел , который управляет стандартным сайтом:

>····WSGIScriptAlias / /var/www/test/home.wsgi

Этот раздел должен выглядеть так:

>

>····DocumentRoot /var/www

>····WSGIScriptAlias / /var/www/test/home.wsgi

>····www/test>

>····Order allow,deny

>····Allow from all

>····

>

Запустите Apache или перезапустите его, если работал, чтобы указать ему, что следует использовать новую конфигурацию. Если вы перейдете в браузере по адресу http://localhost/, то должны увидеть эту строку:

>apache and wsgi, sitting in a tree