5.7 KiB
5.7 KiB
Настройка PM2 для Backend
📦 Установка PM2 (если ещё не установлен)
# Глобальная установка PM2
npm install -g pm2
# Проверка версии
pm2 -v
🚀 Запуск Backend в 4 экземплярах
Шаг 1: Сборка проекта
cd /var/www/ospab-host/backend
# или локально:
cd backend
# Установка зависимостей (если нужно)
npm install
# Компиляция TypeScript
npm run build
Шаг 2: Создание папки для логов
mkdir -p logs
Шаг 3: Запуск с помощью PM2
# Запуск 4 экземпляров согласно ecosystem.config.js
pm2 start ecosystem.config.js --env production
# Или напрямую (без конфига):
pm2 start dist/src/index.js -i 4 --name ospab-backend
Шаг 4: Сохранение конфигурации для автозапуска
# Сохранить текущий список процессов
pm2 save
# Настроить автозапуск при перезагрузке сервера
pm2 startup
# Выполните команду, которую выведет pm2 startup
# Обычно это что-то вроде:
# sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u root --hp /root
📊 Управление процессами
Просмотр статуса
# Список всех процессов
pm2 list
# Детальная информация о процессе
pm2 show ospab-backend
# Мониторинг в реальном времени
pm2 monit
Логи
# Все логи
pm2 logs
# Логи конкретного процесса
pm2 logs ospab-backend
# Последние 100 строк
pm2 logs ospab-backend --lines 100
# Очистка логов
pm2 flush
Перезапуск
# Перезапуск без даунтайма (рекомендуется)
pm2 reload ospab-backend
# Полный перезапуск (с кратковременным даунтаймом)
pm2 restart ospab-backend
# Остановка
pm2 stop ospab-backend
# Удаление из PM2
pm2 delete ospab-backend
🔧 Обновление кода (деплой)
Вариант 1: Автоматический деплой через PM2
# Из корня проекта
pm2 deploy ecosystem.config.js production
Вариант 2: Ручной деплой
cd /var/www/ospab-host
# Обновление кода
git pull origin main
# Переход в backend
cd backend
# Установка зависимостей
npm install
# Сборка
npm run build
# Перезапуск без даунтайма
pm2 reload ospab-backend
# Сохранение конфигурации
pm2 save
📈 Мониторинг и отладка
Проверка памяти и CPU
pm2 monit
Веб-интерфейс (опционально)
# Установка PM2 Plus (бесплатно для мониторинга)
pm2 link <secret_key> <public_key>
# Или просто веб-дашборд
pm2 web
# Откройте http://localhost:9615
⚙️ Текущая конфигурация
- Экземпляры: 4 процесса в кластерном режиме
- Порт: 5000 (балансировка внутри PM2)
- Автоперезапуск: Да
- Лимит памяти: 500 MB на процесс
- Логи:
./logs/pm2-error.logи./logs/pm2-out.log
🔍 Проверка автозапуска
После перезагрузки сервера:
# Проверить, что PM2 запустился
pm2 list
# Должен показать 4 экземпляра ospab-backend в статусе "online"
🛠️ Устранение проблем
PM2 не запускается при загрузке
# Удалить старую конфигурацию
pm2 unstartup
# Создать новую
pm2 startup
# Выполните команду, которую выведет
# Сохранить
pm2 save
Процессы крашатся
# Проверить логи ошибок
pm2 logs ospab-backend --err
# Увеличить лимит памяти в ecosystem.config.js
# max_memory_restart: '1G'
# Перезапустить
pm2 reload ecosystem.config.js
Высокая нагрузка на CPU
# Уменьшить количество экземпляров
# В ecosystem.config.js:
instances: 2
# Перезапустить
pm2 reload ecosystem.config.js
📝 Полезные команды
# Обновить PM2 до последней версии
npm install -g pm2@latest
pm2 update
# Резервная копия конфигурации PM2
pm2 save --force
# Информация о системе
pm2 info ospab-backend
# Метрики производительности
pm2 describe ospab-backend
🎯 Быстрый старт (TL;DR)
# 1. Перейти в папку backend
cd backend
# 2. Собрать проект
npm run build
# 3. Создать папку логов
mkdir -p logs
# 4. Запустить PM2
pm2 start ecosystem.config.js --env production
# 5. Сохранить и настроить автозапуск
pm2 save
pm2 startup
# 6. Проверить статус
pm2 list
Готово! Backend запущен в 4 экземплярах и будет автоматически запускаться при перезагрузке сервера. 🚀