Обзор развертывания Strapi на сервере¶
Предварительные требования и базовые условия¶
Перед запуском приложения на сервере должны быть выполнены следующие требования:
-
Операционная система: Ubuntu
-
Привилегии: Для установки Docker и управления конфигурацией требуется доступ root.
-
Домен: Приложение настроено для зоны
hostkey.in. -
Порты:
-
Порт
1337для приложения Strapi. -
Порт
5432для базы данных PostgreSQL. -
Порт
443для HTTPS-трафика через прокси.
FQDN конечной панели¶
Приложение доступно по следующему формату полного доменного имени (FQDN):
strapi<Server ID>.hostkey.in
Структура файлов и каталогов¶
Для развертывания используется следующая структура каталогов для конфигурации, данных и сертификатов:
-
/opt/strapi: Основной каталог тома для данных приложения Strapi. -
/root/nginx: Каталог, содержащий файлы конфигурации Nginx и Certbot. -
/root/nginx/compose.yml: Файл Docker Compose для прокси и служб SSL. -
/data/nginx/nginx-certbot.env: Файл окружения для конфигурации Nginx Certbot. -
/data/nginx/user_conf.d: Каталог для пользовательских конфигураций Nginx. -
/var/lib/postgresql/data: Постоянное хранилище для базы данных PostgreSQL.
Процесс установки приложения¶
Приложение развертывается с использованием контейнеров Docker. Установка включает следующие компоненты и версии:
-
Strapi: Развертывается с использованием образа
docker-repo.hostkey.com/docker-anonymous/strapi:latest. -
PostgreSQL: Развертывается с использованием образа
postgres:15. -
Nginx/Certbot: Развертывается с использованием образа
jonasal/nginx-certbot:latestдля обработки SSL-терминации и обратного проксирования.
Развертывание создает выделенную сеть Docker с именем strapi_network для обеспечения связи между приложением Strapi и базой данных.
Права доступа и безопасность¶
Безопасность и доступ управляются следующими механизмами:
-
Межсетевой экран (Firewall): Внешний доступ к приложению Strapi маршрутизируется через Nginx на порту
443(HTTPS). Прямой доступ к внутренним портам (1337и5432) ограничен сетью Docker или localhost, если они явно не открыты. -
Пользователи: Каталог тома Strapi (
/opt/strapi) принадлежит пользователю с ID1000и группе с ID1000. -
Ограничения: Служба Nginx работает в режиме сети
hostдля управления SSL-сертификатами и правилами обратного прокси.
Базы данных¶
Приложение использует базу данных PostgreSQL со следующей конфигурацией:
-
Метод подключения: Внутреннее подключение через сеть Docker.
-
Расположение хранилища:
/var/lib/postgresql/data. -
Настройки базы данных:
-
Имя базы данных:
strapi -
Пользователь базы данных:
strapi_user -
Хост базы данных:
strapi-db -
Порт базы данных:
5432
Контейнеры Docker и их развертывание¶
Система развертывает три основных контейнера с использованием Docker:
-
Контейнер PostgreSQL
-
Имя:
strapi-db -
Образ:
postgres:15 -
Политика перезапуска:
always -
Сеть:
strapi_network -
Тома: Маппинг
/var/lib/postgresql/dataв каталог данных контейнера. -
Порты: Открыт порт
5432внутри сети. -
Контейнер Strapi
-
Имя:
strapi -
Образ:
docker-repo.hostkey.com/docker-anonymous/strapi:latest -
Политика перезапуска:
always -
Сеть:
strapi_network -
Тома: Маппинг
/opt/strapiв/srv/appвнутри контейнера. -
Порты: Открыт порт
1337внутри сети. -
Переменные окружения:
-
DATABASE_CLIENT:postgres -
DATABASE_NAME:strapi -
DATABASE_HOST:strapi-db -
DATABASE_PORT:5432 -
DATABASE_USERNAME:strapi_user -
DATABASE_PASSWORD:strapi_password
-
-
Контейнер Nginx/Certbot
-
Имя: Определено в
/root/nginx/compose.yml -
Образ:
jonasal/nginx-certbot:latest -
Политика перезапуска:
unless-stopped -
Режим сети:
host -
Тома:
-
nginx_secrets(внешний) маппинг в/etc/letsencrypt. -
/data/nginx/user_conf.dмаппинг в/etc/nginx/user_conf.d.
-
-
Окружение:
CERTBOT_EMAIL:hkadm@hostkey.com
Прокси-серверы¶
Развертывание включает обратный прокси Nginx с поддержкой SSL, управляемый Certbot:
-
ПО: Nginx с интеграцией Certbot.
-
Расположение конфигурации:
/root/nginx/compose.yml. -
SSL-сертификаты: Хранятся в томе
nginx_secretsв/etc/letsencrypt. -
Пользовательские домены: Настроены для обработки зоны
hostkey.in. -
Email для Certbot:
hkadm@hostkey.com.
Настройки прав доступа¶
Права доступа к файлам и каталогам установлены следующим образом:
-
/opt/strapi: Владелец1000:1000, Режим0755. -
/root/nginx: Владелецroot:root, Режим0755. -
/root/nginx/compose.yml: Владелецroot:root, Режим0644.
Расположение файлов конфигурации и данных¶
-
Данные Strapi:
/opt/strapi -
Конфигурация Nginx:
/root/nginx/compose.yml -
Окружение Nginx:
/data/nginx/nginx-certbot.env -
Пользовательская конфигурация Nginx:
/data/nginx/user_conf.d -
Данные базы данных:
/var/lib/postgresql/data -
SSL-сертификаты:
/etc/letsencrypt(через том Dockernginx_secrets)
Доступные порты для подключения¶
Для приложения настроены следующие порты:
-
Порт 1337: Внутренний порт приложения Strapi.
-
Порт 5432: Внутренний порт базы данных PostgreSQL.
-
Порт 443: Внешний порт HTTPS для прокси Nginx.
Запуск, остановка и обновление¶
Управление службами осуществляется с помощью команд Docker и Docker Compose:
-
Запуск Nginx/Certbot:
-
Проверка запущенных контейнеров:
-
Перезапуск контейнера Strapi:
-
Перезапуск контейнера базы данных:
-
Обновление образов: Загрузите последние образы с помощью команды
docker pullдля соответствующих имен образов, затем перезапустите контейнеры.