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. Вы можете написать небольшой скрипт для импорта вашего приложения с таким именем или для его создания, если используете паттерн фабрики приложений.

wsgi.py
from hello import app

application = app
wsgi.py
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
Вернуться на верх