Ответ
Деплой (deploy) — это процесс выгрузки собранного и протестированного Node.js приложения на сервер (или в облачную среду), его настройки и запуска для работы в продакшен-режиме.
Типичный пайплайн деплоя включает:
- Сборка (Build): Транспиляция TypeScript, минификация/бандлинг клиентских ассетов (если есть), выполнение скриптов сборки.
npm run build - Передача артефактов: Копирование файлов на целевой сервер (через SCP, rsync, Git или как артефакт CI/CD).
- Установка зависимостей: Установка только продакшен-зависимостей.
npm ci --only=production - Настройка среды: Установка переменных окружения (например, через
.envфайл или секреты облака). - Запуск приложения: Использование процесс-менеджера для надёжного запуска.
# Пример с PM2 pm2 start dist/app.js --name "api-service" -i max
Ключевые практики для Node.js:
- Использование процесс-менеджера: PM2 или systemd для автоматического перезапуска при падении.
- Reverse Proxy: Настройка Nginx или Apache перед приложением для обслуживания статики, SSL-терминации и балансировки нагрузки.
- Логирование: Настройка ротации логов (например, с помощью
winstonилиpm2-logrotate). - Мониторинг: Интеграция с системами типа Sentry, New Relic или Prometheus для отслеживания ошибок и метрик.
Пример команды для деплоя на VPS с PM2:
# После копирования файлов на сервер
cd /var/www/myapp
export NODE_ENV=production
npm ci --only=production
pm2 start ecosystem.config.js # Конфиг с настройками кластера и переменными
pm2 save
pm2 startup systemd # Для автозапуска при перезагрузке сервера