Что такое PM2 и как с ним запускать Node.js-приложения

7 минут чтения
Средний рейтинг статьи — 4.8

PM2 — это популярный менеджер процессов для Node.js, позволяющий легко запускать, мониторить и управлять серверными приложениями. Он особенно полезен в продакшене: перезапускает приложение при сбое, следит за логами и может работать как демон.

В этой статье разберёмся, что такое PM2, зачем он нужен, как его установить и использовать в реальных проектах.

Зачем нужен PM2

Когда вы запускаете Node.js-приложение обычной командой node app.js, оно:

  • Работает только до первого сбоя
  • Не перезапускается автоматически
  • Не пишет логов по умолчанию
  • Не стартует при перезагрузке сервера

PM2 решает все эти задачи:

✅ Автоперезапуск при ошибке
✅ Фоновый режим (работает как демон)
✅ Удобный вывод логов
✅ Поддержка кластерного режима
✅ Автостарт после ребута (через pm2 startup)

Установка PM2

Устанавливается глобально:

npm install -g pm2

Проверим версию:

pm2 -v

Запуск приложения через PM2

Допустим, у вас есть файл server.js:

const http = require('http');
 
http.createServer((req, res) => {
  res.end('Привет от PM2!');
}).listen(3000, () => {
  console.log('Сервер запущен на порту 3000');
});

Запускаем его:

pm2 start server.js

После этого приложение будет работать в фоне и перезапускаться при сбое.

Просмотр процессов

Посмотреть список всех запущенных процессов можно командой list:

pm2 list

Пример вывода:

┌─────┬────────────┬────────┬──────┬────────┬─────┬────────┐
 id name mode ... status cpu memory
├─────┼────────────┼────────┼──────┼────────┼─────┼────────┤
 0 server fork ... online 0% 20 MB
└─────┴────────────┴────────┴──────┴────────┴─────┴────────┘

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

Полезные команды:

  • Перезапуск:
pm2 restart server
  • Остановка:
pm2 stop server
  • Удаление из списка:
pm2 delete server
  • Логи:
pm2 logs

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

Чтобы приложение запускалось автоматически при ребуте системы:

pm2 startup

Эта команда выведет инструкцию. После неё выполните:

pm2 save

Теперь все текущие процессы будут восстановлены после перезагрузки.

Кластерный режим

PM2 поддерживает режим "кластер", чтобы использовать несколько ядер CPU:

pm2 start server.js -i max

Параметр -i max означает "запустить столько экземпляров, сколько ядер у CPU".

Работа с конфигом

Можно описать процессы в JSON/YAML-конфигурации, при стандартной установке это файл ecosystem.config.js:

module.exports = {
  apps: [
    {
      name: "api",
      script: "./server.js",
      instances: 1,
      autorestart: true,
      watch: false,
      env: {
        NODE_ENV: "development"
      },
      env_production: {
        NODE_ENV: "production"
      }
    }
  ]
};

Здесь же можно активировать "кластерный" режим:

module.exports = {
  apps : [{
    script    : "./server.js",
    instances : "max",
    exec_mode : "cluster"
  }]
}

Запуск:

pm2 start ecosystem.config.js

Заключение

PM2 — это простой и мощный инструмент для управления Node.js-приложениями. Он избавляет от необходимости писать bash-скрипты для перезапуска, помогает мониторить процессы и отлично вписывается в продакшн-инфраструктуру.

Минимум усилий — максимум пользы.

7 минут чтения
Средний рейтинг статьи — 4.8

Настроить мониторинг за 30 секунд

Надежные оповещения о даунтаймах. Без ложных срабатываний