Установка и настройка mod_wsgi для Apache на Ubuntu 18.04

TL;DR
Установка mod_wsgi позволяет запускать Python-приложения через Apache. В руководстве показано, как установить пакеты, создать простую WSGI-приложение, подключить его в конфигурации Apache и проверить работу на Ubuntu 18.04.
mod_wsgi — модуль Apache для запуска Python-приложений через интерфейс WSGI. Он подходит для таких фреймворков, как Django, Flask, Web.py и др. Ниже — пошаговая инструкция для сервера Ubuntu 18.04.
Требования
- Сервер с Ubuntu 18.04 LTS.
- Ненулевой пользователь с правами sudo.
- Статический IP-адрес, например 192.168.43.229 (если у вас другой — используйте свой).
Установка Apache и mod_wsgi
Перед началом установите необходимые пакеты. Команда ниже загрузит Apache и сопутствующие утилиты, а также интерпретатор Python и SSL-утилиты:
sudo apt-get install python libexpat1 apache2 apache2-utils ssl-cert -yЗатем установите сам модуль mod_wsgi для Apache:
sudo apt-get install libapache2-mod-wsgi -yПосле установки модуль автоматически доступен в Apache. На этом этапе полезно проверить статус службы Apache:
systemctl status apache2Если служба не запущена, стартуйте её:
sudo systemctl start apache2Важно: в Ubuntu 18.04 пакет может называться libapache2-mod-wsgi или libapache2-mod-wsgi-py3 для Python 3. Если у вас Python 3-приложения, установите соответствующий пакет.
Создание простого WSGI-приложения
Создадим минимальный WSGI-скрипт в корне веб-сайта Apache. В исходном примере имя файла — wsgy.py. Откройте файл редактором:
sudo nano /var/www/html/wsgy.pyВставьте следующий код:
def application(environ,start_response):
status = '200 OK'
html = '\n' \
'\n' \
'\n' \
'Welcome to mod_wsgi Test Page\n' \
'\n' \
'\n' \
'\n'
response_header = [('Content-type','text/html')]
start_response(status,response_header)
return [html]
Сохраните и закройте файл (в nano: Ctrl+O, Enter, Ctrl+X).
Далее установите правильные права и владельца, чтобы Apache мог читать и запускать файл:
sudo chown www-data:www-data /var/www/html/wsgy.py
sudo chmod 755 /var/www/html/wsgy.pyКонфигурация Apache для обслуживания WSGI
Создайте конфигурационный файл, который свяжет URL с вашим WSGI-скриптом:
sudo nano /etc/apache2/conf-available/wsgi.confДобавьте строку:
WSGIScriptAlias /wsgi /var/www/html/wsgy.pyСохраните файл и включите конфигурацию:
sudo a2enconf wsgi
sudo systemctl restart apache2Это подключит ваш скрипт по адресу /wsgi.
Тестирование
Откройте браузер и перейдите по адресу http://example.com/wsgi или http://<ваш-ip>/wsgi. Если всё настроено верно, вы увидите страницу с сообщением “Welcome to mod_wsgi Test Page”.

Отладка и распространённые проблемы
- Apache возвращает 500 Internal Server Error — проверьте журналы:
sudo journalctl -u apache2 -e
sudo tail -n 50 /var/log/apache2/error.log- 404 на /wsgi — убедитесь, что вы включили конфигурацию a2enconf wsgi и перезапустили Apache.
- Права доступа — файл должен принадлежать пользователю www-data и быть доступным для чтения.
- Неправильная версия Python — убедитесь, что модуль mod_wsgi совместим с той версией Python, которую вы используете (для Python 3 может потребоваться libapache2-mod-wsgi-py3).
Альтернативные подходы
- Gunicorn + systemd + reverse proxy (Apache или Nginx). Подходит для масштабирования и удобного управления процессами.
- uWSGI + Emperor + nginx — больше гибкости и возможностей для больших проектов.
- mod_proxy_uwsgi — если вы предпочитаете проксирование к внешнему uWSGI-процессу.
Выбор зависит от нагрузки, удобства развёртывания и требований к управлению процессами.
Безопасность и лучшие практики
- Запускайте приложения под пользователем www-data или другим ограниченным аккаунтом.
- Используйте HTTPS и актуальные сертификаты для публичных сервисов.
- Избегайте хранения секретов в коде; применяйте переменные окружения или безопасные хранилища.
- Настройте firewall (например, ufw) и разрешайте только необходимые порты.
Рольные чек-листы
Системный администратор:
- Установить и обновить пакеты Apache и mod_wsgi.
- Настроить права доступа и перезапустить сервисы.
- Контролировать журналы и доступность.
Разработчик:
- Проверить совместимость приложения с WSGI-интерфейсом.
- Убедиться, что зависимости установлены в виртуальном окружении при необходимости.
- Протестировать ответ и производительность.
DevOps инженер:
- Решить, использовать ли mod_wsgi или альтернативу (gunicorn/uWSGI).
- Автоматизировать развертывание и мониторинг.
Критерии приёмки
- По URL /wsgi возвращается HTTP 200.
- Тело ответа содержит строку Welcome to mod_wsgi Test Page.
- Apache работает стабильно после перезапуска.
- Логи не содержат ошибок при доступе к /wsgi.
Короткая методология развертывания
- Установить Apache и модуль mod_wsgi.
- Создать WSGI-скрипт в /var/www/html.
- Настроить WSGIScriptAlias в конфигурации Apache.
- Проверить права и владельца файла.
- Включить конфигурацию и перезапустить Apache.
- Протестировать и отладить по журналам.
Итог
Следуя этой инструкции, вы сможете быстро поднять модуль mod_wsgi на Apache в Ubuntu 18.04 и подготовить простое WSGI-приложение к работе. Для производства рассмотрите использование процесса-ориентированных решений (gunicorn/uWSGI) и настройте HTTPS, мониторинг и автоматическое развёртывание.
Ключевые шаги: установить пакеты, создать WSGI-скрипт, привязать через WSGIScriptAlias, настроить права и перезапустить Apache.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента