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

Обзор развертывания OpenLiteSpeed Node.js на сервере

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

Перед началом или в процессе развертывания на сервере должны быть выполнены следующие требования:

  • Операционная система: Ubuntu (на базе Debian)

  • Привилегии: Для всех шагов установки и конфигурации требуется доступ уровня root

  • Доменная зона: hostkey.in

  • Необходимые порты:

  • Внутренний порт: 7080 (OpenLiteSpeed WebAdmin)

  • Внешний порт: 443 (HTTPS через прокси Nginx)

  • Требуемые пакеты:

  • curl, wget, gnupg

  • docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin, docker-compose-plugin

  • openlitespeed

  • nodejs (Node.js 20.x)

  • python3-pexpect (требуется для административных задач)

FQDN конечной панели управления

Конечная административная панель доступна по следующему формату FQDN:

  • openlitespeed-nodejs<Server ID>.hostkey.in:443

Замените <Server ID> на фактический идентификатор, назначенный экземпляру сервера.

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

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

  • Проектная директория Nginx: /root/nginx

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

  • Данные Docker:

  • /var/lib/docker

  • /var/lib/containerd

  • Установка OpenLiteSpeed: /usr/local/lsws

  • SSL-сертификаты: /etc/letsencrypt/live

  • Конфигурация демона Docker: /etc/docker/daemon.json

  • Том с секретами Docker (Docker Secrets Volume): nginx_secrets (отображается на /etc/letsencrypt)

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

Стек приложения включает OpenLiteSpeed, Node.js и обратный прокси-сервер Nginx с Certbot. Установка включает следующие шаги:

  1. Установка OpenLiteSpeed:

    • Добавьте репозиторий LiteSpeed с помощью официального скрипта установки.

    • Установите пакет openlitespeed.

    • Убедитесь, что служба lsws запущена и включена (enabled).

    • Настройте учетные данные для WebAdmin (Имя пользователя: admin, Пароль: определяется переменной).

  2. Установка Node.js:

    • Добавьте репозиторий NodeSource для Node.js 20.x.

    • Установите пакет nodejs.

    • Проверьте установку, проверив версию.

  3. Установка Docker:

    • Установите необходимые пакеты (ca-certificates, curl, gnupg, lsb-release).

    • Добавьте GPG-ключ Docker и репозиторий.

    • Установите компоненты Docker Engine (docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin, docker-compose-plugin).

    • Запустите и включите службы containerd и docker.

  4. Развертывание прокси-сервера Nginx:

    • Создайте проектную директорию Nginx по пути /root/nginx.

    • Сгенерируйте файл конфигурации Docker Compose.

    • Разверните стек nginx-certbot с помощью Docker Compose.

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

Для запуска служб Nginx и Certbot используется стек Docker Compose.

Зеркала реестра Docker (Docker Registry Mirrors): Демон Docker настроен на использование следующего зеркала:

  • http://dockerhub.hostkey.ru

Конфигурация Docker Compose: Стек определен в файле /root/nginx/compose.yml и включает:

  • Служба: nginx

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

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

  • Режим сети: host

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

  • CERTBOT_EMAIL: hkadm@hostkey.com

  • Тома (Volumes):

  • nginx_secrets, смонтированный в /etc/letsencrypt

  • Путь хоста /data/nginx/user_conf.d, смонтированный в /etc/nginx/user_conf.d

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

docker compose up -d
Контекст выполнения:
chdir: "/root/nginx"

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

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

Детали конфигурации:

  • ПО: Nginx с Certbot (через образ jonasal/nginx-certbot)

  • Имя сервера: <prefix><Server ID>.hostkey.in (например, openlitespeed-nodejs123.hostkey.in)

  • Порты прослушивания:

  • 443 (SSL/TLS)

  • [::]:443 (IPv6 SSL/TLS)

  • SSL-сертификаты:

  • Полный набор (Full Chain): /etc/letsencrypt/live/<prefix><Server ID>.hostkey.in/fullchain.pem

  • Приватный ключ (Private Key): /etc/letsencrypt/live/<prefix><Server ID>.hostkey.in/privkey.pem

  • Доверенный сертификат (Trusted Certificate): /etc/letsencrypt/live/<prefix><Server ID>.hostkey.in/chain.pem

  • DH-параметры: /etc/letsencrypt/dhparams/dhparam.pem

Настройки прокси: Сервер Nginx блокирует весь трафик на порту 443 для внутреннего экземпляра OpenLiteSpeed:

  • Цель проксирования (Proxy Target): https://127.0.0.1:7080

  • Проверка SSL: Отключена (proxy_ssl_verify off)

  • Сохраняемые заголовки (Headers Preserved):

  • Host, X-Forwarded-Host, X-Forwarded-Server, X-Real-IP, X-Forwarded-For, X-Forwarded-Proto

  • WebSockets: Поддерживаются через маппинг заголовков Upgrade и Connection.

  • Буферизация: Отключена (proxy_buffering off).

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

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

  • Проектная директория Nginx (/root/nginx):

  • Владелец: root:root

  • Режим: 0755

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

  • Владелец: root:root

  • Режим: 0644

  • Конфигурация Vhost Nginx (/data/nginx/user_conf.d/<prefix><server_id>.hostkey.in.conf):

  • Владелец: root:root

  • Режим: 0644

  • Конфигурация демона Docker (/etc/docker/daemon.json):

  • Владелец: root:root

  • Режим: 0644

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

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

  • Определение Docker Compose: /root/nginx/compose.yml

  • Конфигурация Vhost Nginx: /data/nginx/user_conf.d/openlitespeed-nodejs<Server ID>.hostkey.in.conf

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

  • Конфигурация демона Docker: /etc/docker/daemon.json

  • Скрипт пароля администратора OpenLiteSpeed: /usr/local/lsws/admin/misc/admpass.sh

  • Данные SSL-сертификатов: /etc/letsencrypt/live/openlitespeed-nodejs<Server ID>.hostkey.in/

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

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

  • Порт 443: Внешний доступ к обратному прокси-серверу Nginx (HTTPS).

  • Порт 7080: Внутренний доступ к интерфейсу OpenLiteSpeed WebAdmin (только localhost).

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

Управление службами:

  • Службы Docker:

  • Запуск: systemctl start docker и systemctl start containerd

  • Остановка: systemctl stop docker и systemctl stop containerd

  • Включение при загрузке: systemctl enable docker и systemctl enable containerd

  • Служба OpenLiteSpeed:

  • Имя службы: lsws

  • Запуск: systemctl start lsws

  • Остановка: systemctl stop lsws

  • Включение при загрузке: systemctl enable lsws

Операции Docker Compose:

  • Для запуска стека Nginx/Certbot:

    cd /root/nginx && docker compose up -d
    

  • Для остановки стека:

    cd /root/nginx && docker compose down
    

  • Для обновления стека (получить последние образы и перезапустить):

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

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