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

Обзор развертывания 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) принадлежит пользователю с ID 1000 и группе с ID 1000.

  • Ограничения: Служба Nginx работает в режиме сети host для управления SSL-сертификатами и правилами обратного прокси.

Базы данных

Приложение использует базу данных PostgreSQL со следующей конфигурацией:

  • Метод подключения: Внутреннее подключение через сеть Docker.

  • Расположение хранилища: /var/lib/postgresql/data.

  • Настройки базы данных:

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

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

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

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

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

Система развертывает три основных контейнера с использованием Docker:

  1. Контейнер PostgreSQL

  2. Имя: strapi-db

  3. Образ: postgres:15

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

  5. Сеть: strapi_network

  6. Тома: Маппинг /var/lib/postgresql/data в каталог данных контейнера.

  7. Порты: Открыт порт 5432 внутри сети.

  8. Контейнер Strapi

  9. Имя: strapi

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

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

  12. Сеть: strapi_network

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

  14. Порты: Открыт порт 1337 внутри сети.

  15. Переменные окружения:

    • DATABASE_CLIENT: postgres

    • DATABASE_NAME: strapi

    • DATABASE_HOST: strapi-db

    • DATABASE_PORT: 5432

    • DATABASE_USERNAME: strapi_user

    • DATABASE_PASSWORD: strapi_password

  16. Контейнер Nginx/Certbot

  17. Имя: Определено в /root/nginx/compose.yml

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

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

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

  21. Тома:

    • nginx_secrets (внешний) маппинг в /etc/letsencrypt.

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

  22. Окружение:

    • 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 (через том Docker nginx_secrets)

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

Для приложения настроены следующие порты:

  • Порт 1337: Внутренний порт приложения Strapi.

  • Порт 5432: Внутренний порт базы данных PostgreSQL.

  • Порт 443: Внешний порт HTTPS для прокси Nginx.

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

Управление службами осуществляется с помощью команд Docker и Docker Compose:

  • Запуск Nginx/Certbot:

    cd /root/nginx
    docker compose up -d
    

  • Проверка запущенных контейнеров:

    docker ps
    

  • Перезапуск контейнера Strapi:

    docker restart strapi
    

  • Перезапуск контейнера базы данных:

    docker restart strapi-db
    

  • Обновление образов: Загрузите последние образы с помощью команды docker pull для соответствующих имен образов, затем перезапустите контейнеры.

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