Files
ospab.host/ospabhost/backend/PM2_SETUP.md
2025-11-23 14:35:16 +03:00

5.7 KiB
Raw Blame History

Настройка 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 экземплярах и будет автоматически запускаться при перезагрузке сервера. 🚀