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