logo

Руководство по управлению Next.js проектом в PM2 с Yarn

Полный набор команд для эффективного управления Next.js проектом через PM2 с автоматической пересборкой при изменениях

Руководство по управлению Next.js проектом в PM2 с Yarn
Источник - Руководство по управлению Next.js проектом в PM2 с Yarn

1. Установка и настройка

yarn global add pm2  # Установка PM2
cd frontend          # Переход в папку проекта
yarn install         # Установка зависимостей

2. Сборка и запуск проекта

Production-режим

yarn build           # Сборка проекта
pm2 start "yarn start" --name frontend

Development-режим (не рекомендуется для продакшена)

pm2 start "yarn dev" --name frontend-dev

3. Автоматическая пересборка и перезапуск при изменениях

Для автоматической пересборки и перезапуска при изменениях файлов:

pm2 start --name frontend-watch "yarn build && yarn start" --watch

Или альтернативный вариант с отдельным наблюдателем:

pm2 start --name frontend "yarn start" 
pm2 start --name frontend-builder "yarn build --watch" 

4. Полный список команд управления

Основные команды

pm2 start "yarn start" --name frontend    # Запуск проекта
pm2 restart frontend                      # Перезапуск с коротким downtime
pm2 reload frontend                       # Перезагрузка без downtime (для Next.js)
pm2 stop frontend                         # Остановка процесса
pm2 delete frontend                       # Удаление процесса из списка PM2

Мониторинг и логи

pm2 list                 # Список всех процессов
pm2 status               # Статус процессов
pm2 logs frontend        # Просмотр логов
pm2 logs --lines 100     # Последние 100 строк логов
pm2 monit                # Интерактивный мониторинг

Управление несколькими процессами

pm2 restart all          # Перезапуск всех процессов
pm2 stop all             # Остановка всех процессов
pm2 delete all           # Удаление всех процессов

Автозагрузка при перезапуске сервера

pm2 save                 # Сохранить текущие процессы
pm2 startup              # Настроить автозагрузку (выполнить один раз)
pm2 unstartup            # Отключить автозагрузку

Обновление проекта

git pull                 # Обновить код
yarn install             # Обновить зависимости
yarn build               # Пересобрать проект
pm2 reload frontend      # Перезагрузить без простоя

5. Дополнительные полезные команды

pm2 describe frontend    # Подробная информация о процессе
pm2 reset frontend       # Сброс счетчиков процесса
pm2 flush                # Очистка всех логов
pm2 update              # Обновление PM2

Чтобы посмотреть подробную информацию о запущенном проекте в PM2, используйте следующие команды:

1. Основная информация о процессе

pm2 show <id|name>

Пример:

pm2 show api.ghostbase.net

Выведет:

  • Путь к приложению
  • Аргументы командной строки
  • Переменные окружения
  • Информацию о логах
  • Статистику использования CPU и памяти
  • Информацию о рестартах

2. Просмотр логов в реальном времени

pm2 logs <id|name> [--lines <количество строк>] [--timestamp]

Примеры:

pm2 logs api.ghostbase.net          # Последние логи
pm2 logs api.ghostbase.net --lines 100  # Последние 100 строк
pm2 logs api.ghostbase.net --timestamp  # С временными метками

3. Мониторинг в реальном времени

pm2 monit

Откроет интерактивную консоль с:

  • Списком процессов
  • Использованием CPU
  • Использованием памяти
  • Логами в реальном времени

4. Подробная статистика

pm2 describe <id|name>

Аналогично pm2 show, но с более детальным выводом.

5. Проверка состояния приложения

pm2 list

Покажет таблицу со всеми процессами и их статусом.

6. Проверка метрик производительности

pm2 show <id|name> --metrics

Покажет детальную статистику по использованию ресурсов.

7. Просмотр исходной конфигурации

Если процесс был запущен через конфигурационный файл:

pm2 ecosystem

Покажет текущую конфигурацию.

8. Проверка переменных окружения

pm2 env <id|name>

Советы:

  1. Для постоянного мониторинга используйте pm2 monit

  2. Для анализа истории логов можно использовать:

    less ~/.pm2/logs/api.ghostbase.net-error.log
    
  3. Для JSON-вывода (удобно для скриптов):

    pm2 jlist
    

    Несколько примеров

pm2 start yarn --name "dev.ghostbase.net" --interpreter node -- start
pm2 start npx --name "telega-bot" --interpreter node -- ts-node telega/bot/index.ts
pm2 logs telega-bot
pm2 show telega-bot