Что такое PM2 и как с ним запускать Node.js-приложения
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-скрипты для перезапуска, помогает мониторить процессы и отлично вписывается в продакшн-инфраструктуру.
Минимум усилий — максимум пользы.
Настроить мониторинг за 30 секунд
Надежные оповещения о даунтаймах. Без ложных срабатываний