119 слов | 1 минута
PM2: управление Node.js-процессами
PM2 — менеджер процессов для Node.js-приложений с поддержкой автозапуска, кластеризации и мониторинга.
Управление процессами
# Запуск приложения
pm2 start server.js
# Список процессов
pm2 ls
# Перезапуск
pm2 restart app
# Остановка
pm2 stop app
# Удаление из списка процессов
pm2 delete app
# Логи (конкретного приложения или всех)
pm2 log app
pm2 log
Поля таблицы pm2 ls
| Поле | Описание |
|---|---|
app name |
Имя приложения (по умолчанию — имя файла без расширения) |
id |
Уникальный идентификатор приложения |
mode |
Режим запуска: fork или cluster |
pid |
Идентификатор процесса в системе |
status |
Статус: launching, online, errored, stopped |
restart |
Количество перезапусков |
uptime |
Время работы с момента запуска |
cpu |
Нагрузка на процессор, % |
mem |
Используемая оперативная память |
Задать имя приложения при запуске:
pm2 start app.js --name=my-app
Файл ecosystem.config.js
Для запуска нескольких приложений с заранее заданными параметрами используется конфигурационный файл.
Сгенерировать шаблон:
pm2 init
Пример ecosystem.config.js:
module.exports = {
apps: [
{
name: 'app',
script: './app.js',
env: {
NODE_ENV: 'development',
},
env_production: {
NODE_ENV: 'production',
},
},
],
};
Параметры конфигурации
| Параметр | Описание |
|---|---|
name |
Имя в списке процессов |
script |
Путь к главному файлу приложения |
instances |
Количество экземпляров (кластерный режим) |
disable_logs |
Отключить ведение логов (true/false) |
env |
Переменные окружения для режима разработки |
env_production |
Переменные окружения для production |
Запуск из файла конфигурации:
pm2 start ecosystem.config.js
# Запуск только одного приложения из конфига
pm2 start ecosystem.config.js --only my-app
Автоперезапуск при изменении файлов
# Запуск с отслеживанием изменений
pm2 start index.js --watch
# Остановка с отключением отслеживания
pm2 stop index --watch
Тонкая настройка через ecosystem.config.js:
module.exports = {
apps: [
{
name: 'my-app',
script: './index.js',
watch: ['server'], // Отслеживать только папку server/
ignore_watch: ['node_modules', 'client'],
watch_delay: 1000, // Задержка перед перезапуском, мс
},
],
};