Практика. Настройка обратного проксирования для Python-приложений
Документация
- Использование виртуальных Python-окружений, virtualenv
- Использование менеджера интерпретаторов Python pyenv
Принципиальный подход к разворачиванию веб-приложений, реализованных на языке Python
Ключевая задача при разворачивании такого приложения заключается в установке всех зависимостей, которые нужны приложению для работы. В рамках данного занятия рассмотрим приложения, реализованные на языке Python.
Интерпретатор Python
В базе данной задачи стоит установка интерпретатора Python. Она может быть выполнена двумя способами: с использованием средств дистрибутива Linux или установка внешним образом.
При использовании первого подхода будет достаточно вызвать команду по установке пакета. Минусом такого подхода является жёстко закреплённая версия интерпретатора, которая поставляется вместе с системой. Для некоторых приложений она может быть слишком старой или, наоборот, слишком новой.
При установке с помощью внешнего инструмента (например pyenv) потребуется поставить данный инструмент, а также средства компиляции приложений на языках Си и C++, так как интерпретатор и ряд библиотек реализованы на данных языках программирования. Дополнительной сложностью данного подхода является необходимость в указании конкретного интерпретатора, который используется для запуска конкретного приложения.
Библиотеки приложения
Следующим слоем зависимостей является установка библиотек для работы приложения. Для решения этой задачи потенциально тоже можно воспользоваться системными библиотеками, однако такой способ на практике практически никогда не используется. То есть библиотеки зачастую устанавливаются отдельно.
В рамках экосистемы Python доступно несколько средств для решения этой задачи. Они будут варьироваться от версии к версии, однако для последних версий интерпретатора поддерживаемыми инструментами являются venv
и virtualenv
. Они позволяют указать каталог в файловой системе, в который будет произведена установка зависимостей от конкретного приложения. Это позволяет использовать один интерпретатор для ряда приложений.
Более развёрнутое описание данных инструментов приведено в секции документации.
Внешние приложения
Для работы веб-служб зачастую необходимо установить дополнительные приложения. В их ряд входят СУБД, службы кеша и т.д. В ряде случаев приложения могут быть разделены на части.
Зачастую для доступа к СУБД используются библиотеки, которые являются обёртками над низкоуровневыми библиотеками. Для их установки обычно требуется выполнить шаг компиляции, поэтому среди зависимостей будут также и пакеты для разработчика библиотек для взаимодействия с данными СУБД.
Процесс развёртывания
Не существует единой схемы по развёртыванию и установке приложения. Вместо этого системному администратору необходимо всегда сначала ознакомиться с процессом установки приложения и следовать ему.
Однако рассмотрим принципиальные шаги, которые надо будет выполнить администратору:
- Установить интерпретатор.
- Установить приложения, которые необходимы для работы приложения.
- Установить библиотеки.
- Произвести настройку зависимых приложений: создать базу данных, предоставить к ней доступ, обеспечить запуск зависимых приложений.
- Произвести настройку приложения: указать расположение базы данных, каталогов с данными и журналами.
- Запустить приложение.
- Рекомендуется также настроить выполнение резервного копирования данных.
Задача
Выполните разворачивание системы для выполнения локализации приложений Weblate. Используйте следующие страницы официального руководства для выполнения важных шагов.
- Установка с использованием виртуального окружения в Debian/Ubuntu
- Установка прав доступа для файловой системы
- Настройка СУБД (PostgreSQL или MariaDB)
- Настройки для работы за обратным прокси
- Настройка конфигурационного файла
- Формирование структуры БД
- Запуск веб-сервера
- Настройка запуска фоновых задач