BIG_UPDATE deleted vps, added s3 infrastructure.

This commit is contained in:
Georgiy Syralev
2025-11-23 14:35:16 +03:00
parent ae1f93a934
commit c4c2610480
173 changed files with 22684 additions and 5894 deletions

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