BIG_UPDATE deleted vps, added s3 infrastructure.
This commit is contained in:
257
ospabhost/backend/PM2_SETUP.md
Normal file
257
ospabhost/backend/PM2_SETUP.md
Normal file
@@ -0,0 +1,257 @@
|
||||
# Настройка 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 <secret_key> <public_key>
|
||||
|
||||
# Или просто веб-дашборд
|
||||
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 экземплярах и будет автоматически запускаться при перезагрузке сервера. 🚀
|
||||
Reference in New Issue
Block a user