Гид по технологиям

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

• 4 min read • Серверы • Обновлено 18 Nov 2025
mod_wsgi на Apache: настройка в Ubuntu 18.04
mod_wsgi на Apache: настройка в Ubuntu 18.04

Иллюстрация Apache и Python для mod_wsgi

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”.

Тестовая страница Python через mod_wsgi

Отладка и распространённые проблемы

  • 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).

Альтернативные подходы

  1. Gunicorn + systemd + reverse proxy (Apache или Nginx). Подходит для масштабирования и удобного управления процессами.
  2. uWSGI + Emperor + nginx — больше гибкости и возможностей для больших проектов.
  3. 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.

Короткая методология развертывания

  1. Установить Apache и модуль mod_wsgi.
  2. Создать WSGI-скрипт в /var/www/html.
  3. Настроить WSGIScriptAlias в конфигурации Apache.
  4. Проверить права и владельца файла.
  5. Включить конфигурацию и перезапустить Apache.
  6. Протестировать и отладить по журналам.

Итог

Следуя этой инструкции, вы сможете быстро поднять модуль mod_wsgi на Apache в Ubuntu 18.04 и подготовить простое WSGI-приложение к работе. Для производства рассмотрите использование процесса-ориентированных решений (gunicorn/uWSGI) и настройте HTTPS, мониторинг и автоматическое развёртывание.

Ключевые шаги: установить пакеты, создать WSGI-скрипт, привязать через WSGIScriptAlias, настроить права и перезапустить Apache.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро