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

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

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

Для успешного развертывания приложения необходимо наличие следующих компонентов и условий на сервере:

  • Операционная система Ubuntu.
  • Установленный и работающий демон Docker.
  • Права доступа пользователя root или учетной записи с правами sudo.
  • Свободные порты для доступа к веб-интерфейсу и базе данных (по умолчанию порт 1337 для Strapi и порт 5432 для PostgreSQL).
  • Доменное имя, настроенное на IP-адрес сервера, для работы с сертификатами SSL через Certbot.

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

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

  • /root/nginx — каталог для конфигурации прокси-сервера Nginx и скриптов запуска.
  • /root/nginx/compose.yml — файл конфигурации Docker Compose для запуска Nginx и Certbot.
  • /data/nginx/nginx-certbot.env — файл переменных окружения для настройки Nginx.
  • /data/nginx/user_conf.d — директория для пользовательских конфигурационных файлов Nginx.
  • /data/nginx/nginx_secrets — внешний том для хранения сертификатов Let's Encrypt.
  • /var/lib/postgresql/data — директория для хранения данных базы данных PostgreSQL.
  • Каталог, указанный в переменной strapi_volume (по умолчанию /srv/app внутри контейнера), используется для хранения файлов приложения Strapi.

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

Развертывание осуществляется через запуск контейнеров Docker. Версия приложения Strapi определяется тегом latest в образе docker-repo.hostkey.com/docker-anonymous/strapi.

Процесс включает следующие этапы:

  1. Установка и настройка Docker на сервере.
  2. Создание сети Docker для изоляции контейнеров.
  3. Развертывание контейнера базы данных PostgreSQL версии 15.
  4. Развертывание контейнера Strapi с подключением к базе данных.
  5. Настройка и запуск прокси-сервера Nginx с поддержкой автоматического получения SSL-сертификатов через Certbot.

Базы данных

Приложение использует базу данных PostgreSQL для хранения информации.

  • Образ контейнера: postgres:15.
  • Имя контейнера: определяется переменной db_host.
  • Параметры подключения передаются через переменные окружения:
  • POSTGRES_DB — имя базы данных.
  • POSTGRES_USER — имя пользователя.
  • POSTGRES_PASSWORD — пароль пользователя.
  • Данные базы данных сохраняются в томе /var/lib/postgresql/data.
  • Порт базы данных 5432 маппится на внешний порт, указанный в переменной db_port.

Контейнеры Docker и их запуск

Система использует два основных типа контейнеров: приложение с базой данных и прокси-сервер.

Запуск базы данных и приложения Strapi

Контейнеры запускаются с использованием модуля community.docker.docker_container или аналогичных команд Docker.

  • Контейнер базы данных:
  • Имя: db_host.
  • Образ: postgres:15.
  • Политика перезапуска: always.
  • Сеть: подключен к сети, указанной в переменной docker_network.
  • Томы: /var/lib/postgresql/data:/var/lib/postgresql/data.

  • Контейнер Strapi:

  • Имя: strapi.
  • Образ: docker-repo.hostkey.com/docker-anonymous/strapi:latest.
  • Политика перезапуска: always.
  • Сеть: подключен к сети, указанной в переменной docker_network.
  • Переменные окружения:
    • DATABASE_CLIENT: postgres.
    • DATABASE_NAME: имя базы данных.
    • DATABASE_HOST: имя хоста базы данных.
    • DATABASE_PORT: порт базы данных.
    • DATABASE_USERNAME: имя пользователя базы данных.
    • DATABASE_PASSWORD: пароль пользователя базы данных.
  • Томы: каталог strapi_volume маппится на /srv/app.
  • Порты: порт 1337 маппится на внешний порт, указанный в переменной strapi_port.

Запуск прокси-сервера Nginx

Прокси-сервер управляется через файл compose.yml, расположенный в директории /root/nginx.

  • Команда запуска: docker compose up -d в директории /root/nginx.
  • Образ: jonasal/nginx-certbot:latest.
  • Политика перезапуска: unless-stopped.
  • Режим сети: host.
  • Переменные окружения:
  • CERTBOT_EMAIL: hkadm@hostkey.com.
  • Файл переменных: /data/nginx/nginx-certbot.env.
  • Томы:
  • nginx_secrets маппится на /etc/letsencrypt.
  • /data/nginx/user_conf.d маппится на /etc/nginx/user_conf.d.

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

Для обработки входящего трафика и управления SSL-сертификатами используется контейнер Nginx с Certbot.

  • Образ: jonasal/nginx-certbot:latest.
  • Режим работы: network_mode: host, что позволяет контейнеру напрямую использовать сетевой стек хоста.
  • Сертификаты SSL хранятся в внешнем томе nginx_secrets, который маппится на /etc/letsencrypt.
  • Пользовательские конфигурации Nginx размещаются в директории /data/nginx/user_conf.d.
  • Email для уведомлений от Certbot: hkadm@hostkey.com.

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

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

  • Директория /root/nginx имеет владельца root и группу root с правами 0755.
  • Файл /root/nginx/compose.yml имеет владельца root и группу root с правами 0644.
  • Директория для данных Strapi (strapi_volume) имеет владельца с UID 1000 и GID 1000 с правами 0755.
  • Директория /var/lib/postgresql/data используется для хранения данных базы данных и должна быть доступна для процесса контейнера PostgreSQL.

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

Управление сервисами осуществляется через команды Docker и Docker Compose.

  • Запуск прокси-сервера Nginx:
    cd /root/nginx
    docker compose up -d
    
  • Проверка статуса запущенных контейнеров:
    docker ps
    
  • Остановка и удаление контейнеров Strapi и PostgreSQL (при необходимости):
    docker stop strapi
    docker rm strapi
    docker stop db_host
    docker rm db_host
    
  • Обновление образов контейнеров:
    docker pull docker-repo.hostkey.com/docker-anonymous/strapi:latest
    docker pull postgres:15
    docker pull jonasal/nginx-certbot:latest
    
  • Перезапуск контейнеров после обновления образов:
    docker restart strapi
    docker restart db_host
    docker compose -f /root/nginx/compose.yml up -d
    
question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×