mod_wsgi¶
mod_wsgi - это сервер WSGI, интегрированный с сервером Apache httpd. Современная команда mod_wsgi-express позволяет легко настроить и запустить сервер без необходимости написания конфигурации Apache httpd.
Тесно интегрирован с Apache httpd.
Поддерживает Windows напрямую.
Для установки требуется компилятор и заголовки разработки Apache.
Не требует настройки обратного прокси.
На этой странице описаны основы работы mod_wsgi-express, а не более сложная установка и настройка с помощью httpd. Обязательно прочитайте документацию mod_wsgi-express, mod_wsgi и Apache httpd, чтобы понять, какие функции доступны.
Установка¶
Установка mod_wsgi требует наличия компилятора и установленного сервера Apache и заголовков разработки. Если они не установлены, вы получите ошибку. Способ их установки зависит от используемой вами ОС и пакетного менеджера.
Создайте virtualenv, установите ваше приложение, затем установите mod_wsgi
.
$ cd hello-app
$ python -m venv venv
$ . venv/bin/activate
$ pip install . # install your application
$ pip install mod_wsgi
Бег¶
Единственный аргумент mod_wsgi-express
задает сценарий, содержащий ваше приложение Flask, которое должно называться application
. Вы можете написать небольшой скрипт для импорта вашего приложения с таким именем или для его создания, если используете паттерн фабрики приложений.
from hello import app
application = app
from hello import create_app
application = create_app()
Теперь выполните команду mod_wsgi-express start-server
.
$ mod_wsgi-express start-server wsgi.py --processes 4
Опция --processes
задает количество рабочих процессов для запуска; начальное значение может быть CPU * 2
.
Журналы для каждого запроса не отображаются в терминале. При возникновении ошибки информация о ней записывается в файл журнала ошибок, показываемый при запуске сервера.
Внешнее связывание¶
В отличие от других серверов WSGI в этой документации, mod_wsgi может быть запущен от имени root для привязки к привилегированным портам, таким как 80 и 443. Однако он должен быть сконфигурирован для сброса разрешений другому пользователю и группе для рабочих процессов.
Например, если вы создали пользователя и группу hello
, вам следует установить virtualenv и приложение под этим пользователем, а затем указать mod_wsgi переходить к этому пользователю после запуска.
$ sudo /home/hello/venv/bin/mod_wsgi-express start-server \
/home/hello/wsgi.py \
--user hello --group hello --port 80 --processes 4