Перейти к содержанию

Обзор развертывания Strapi на сервере

Предварительные требования

Сервер должен соответствовать следующим требованиям для размещения приложения Strapi и связанных с ним сервисов:

  • Операционная система: Ubuntu (совместимая с ролью установки Docker).

  • Привилегии: Требуется доступ root или sudo для создания каталогов, управления Docker и настройки межсетевого экрана (firewall).

  • Домен: Развертывание использует зону hostkey.in.

  • Порты:

  • Порт 1337 используется для внутреннего приложения Strapi.

  • Порт 5432 используется для базы данных PostgreSQL.

  • Порты 80 и 443 используются прокси-сервером Nginx для трафика HTTP и HTTPS.

FQDN финальной панели

Приложение доступно через следующую структуру Fully Qualified Domain Name (FQDN):

strapi<Server ID>.hostkey.in:1337

Примечание: Фактический внешний доступ может быть направлен через прокси-сервер Nginx на стандартных портах (80/443) в зависимости от конфигурации прокси, тогда как прямой порт контейнера — 1337.

Структура файлов и каталогов

Для данных приложения, конфигурации и сертификатов развертывание использует следующие каталоги:

  • /opt/strapi: Основной том (volume) для данных и кода приложения Strapi.

  • /root/nginx: Каталог, содержащий конфигурационный файл docker-compose.yml для Nginx и Certbot.

  • /etc/letsencrypt: Каталог, смонтированный для SSL/TLS сертификатов, управляемых Certbot.

  • /data/nginx/user_conf.d: Каталог для пользовательских конфигураций Nginx.

  • /data/nginx: Каталог, содержащий файл окружения nginx-certbot.env.

  • /var/lib/postgresql/data: Каталог для постоянного хранения данных PostgreSQL.

Процесс установки приложения

Приложение развертывается с использованием контейнеров Docker. Установка включает экземпляр Strapi и контейнер базы данных PostgreSQL, оркестрированные в отдельной сети Docker.

  • Образ Strapi: docker-repo.hostkey.com/docker-anonymous/strapi:latest

  • Образ PostgreSQL: postgres:15

  • Сеть Docker: strapi_network

Процесс развертывания включает следующие шаги:

  1. Создание необходимого каталога тома по пути /opt/strapi.

  2. Создание сети Docker strapi_network.

  3. Запуск контейнера PostgreSQL с указанными переменными окружения.

  4. Запуск контейнера Strapi, подключенного к той же сети и базе данных.

Базы данных

Приложение использует базу данных PostgreSQL для постоянного хранения данных. База данных размещена в контейнере Docker с именем strapi-db.

  • Хост базы данных: strapi-db

  • Порт базы данных: 5432

  • Имя базы данных: strapi

  • Пользователь базы данных: strapi_user

  • Пароль базы данных: strapi_password

  • Место хранения: Данные сохраняются в /var/lib/postgresql/data на хосте.

Контейнер Strapi подключается к базе данных, используя следующие переменные окружения:

  • DATABASE_CLIENT: postgres

  • DATABASE_HOST: strapi-db

  • DATABASE_PORT: 5432

  • DATABASE_USERNAME: strapi_user

  • DATABASE_PASSWORD: strapi_password

Контейнеры Docker и их развертывание

Система использует следующие контейнеры Docker:

  1. strapi-db

  2. Образ: postgres:15

  3. Политика перезапуска: always

  4. Сеть: strapi_network

  5. Том: Маппинг /var/lib/postgresql/data на /var/lib/postgresql/data внутри контейнера.

  6. Порты: Открывает порт 5432, маппинг на порт 5432 хоста.

  7. strapi

  8. Образ: docker-repo.hostkey.com/docker-anonymous/strapi:latest

  9. Политика перезапуска: always

  10. Сеть: strapi_network

  11. Том: Маппинг /opt/strapi на /srv/app внутри контейнера.

  12. Порты: Открывает порт 1337, маппинг на порт 1337 хоста.

  13. nginx (Прокси и SSL)

  14. Образ: jonasal/nginx-certbot:latest

  15. Политика перезапуска: unless-stopped

  16. Режим сети: host

  17. Томы:

    • nginx_secrets маппинг на /etc/letsencrypt

    • /data/nginx/user_conf.d маппинг на /etc/nginx/user_conf.d

  18. Файл конфигурации: /root/nginx/compose.yml

Прокси-серверы

Развертывание включает обратный прокси-сервер Nginx с автоматическим управлением SSL-сертификатами через Certbot.

  • Образ прокси: jonasal/nginx-certbot:latest

  • Email для Certbot: hkadm@hostkey.com

  • Место расположения конфигурации: /root/nginx/compose.yml

  • Файл окружения: /data/nginx/nginx-certbot.env

  • Монтирование томов:

  • nginx_secrets (внешний том) монтирован в /etc/letsencrypt.

  • Каталог хоста /data/nginx/user_conf.d монтирован в /etc/nginx/user_conf.d.

  • Режим сети: Контейнер Nginx работает в режиме сети host.

Прокси-сервер обрабатывает пересылку трафика и терминацию SSL для приложения Strapi.

Настройки прав доступа

Права доступа к файлам и каталогам настроены следующим образом:

  • Том Strapi (/opt/strapi):

  • Владелец: 1000 (User ID)

  • Группа: 1000 (Group ID)

  • Режим: 0755 (rwxr-xr-x)

  • Каталог Nginx (/root/nginx):

  • Владелец: root

  • Группа: root

  • Режим: 0755

  • Файл Docker Compose (/root/nginx/compose.yml):

  • Владелец: root

  • Группа: root

  • Режим: 0644

Расположение файлов конфигурации и данных

Основные файлы конфигурации и места расположения данных:

Путь к файлу/каталогу Описание
/root/nginx/compose.yml Конфигурация Docker Compose для Nginx и Certbot.
/data/nginx/nginx-certbot.env Переменные окружения для контейнера Nginx/Certbot.
/opt/strapi Постоянное хранилище данных приложения Strapi.
/var/lib/postgresql/data Постоянное хранилище данных базы данных PostgreSQL.
/etc/letsencrypt Хранилище для SSL/TLS сертификатов (через монтирование тома).

Доступные порты для подключения

Следующие порты открыты и доступны для подключения:

  • Порт 1337: Прямой доступ к контейнеру приложения Strapi.

  • Порт 5432: Прямой доступ к контейнеру базы данных PostgreSQL.

  • Порт 80: Трафик HTTP, обрабатываемый прокси-сервером Nginx.

  • Порт 443: Трафик HTTPS, обрабатываемый прокси-сервером Nginx с использованием SSL.

Запуск, остановка и обновление

Сервисы управляются с помощью команд Docker.

Управление прокси-сервером Nginx: Для запуска, остановки или обновления сервисов Nginx-прокси и Certbot выполните команды из каталога /root/nginx:

cd /root/nginx
docker compose up -d
docker compose down
docker compose pull
docker compose up -d

Управление Strapi и базой данных: Контейнеры Strapi и базы данных управляются напрямую с помощью команд Docker:

# Запуск контейнеров
docker start strapi strapi-db

# Остановка контейнеров
docker stop strapi strapi-db

# Перезапуск контейнеров
docker restart strapi strapi-db

# Обновление образов
docker pull docker-repo.hostkey.com/docker-anonymous/strapi:latest
docker pull postgres:15
docker update strapi strapi-db

Параметр restart_policy установлен в always как для контейнера Strapi, так и для strapi-db, что обеспечивает их автоматический перезапуск при перезагрузке системы или сбое.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×