Менеджер процессов PM2.

Менеджер процессов PM2.

Для обеспечения непрерывной работоспособности Node.js сервера нужно либо постоянно держать открытой консоль, либо использовать менеджер процессов pm2. Он имеет встроенный балансировщик нагрузки, позволяет следить за потребляемыми ресурсами запущенных процессов, автоматически перезапускать процессы после системного сбоя и т. д.

Менеджер процессов pm2 имеется в репозитории npm и должен быть установлен в системе глобально.

# npm i -g pm2

Запуск Node.js сервера с использованием pm2 осуществляется командой start, которой передается путь к главному файлу приложения:

# pm2 --name ProjectName start npm -- start

Команда start инициирует запуск приложения в фоновом режиме и добавляет его в список процессов, который можно увидеть выполнив команду ls:

# pm2 ls

За перезапуск процесса отвечает команда restart, принимающая имя или идентификатор приложения.

# pm2 restart ID

Остановка процесса осуществляется командой stop, которой необходимо указать либо название, либо идентификатор приложения.

# pm2 stop ID

Выполнение stop останавливает работу приложения, но не удаляет его из списка процессов, статус при этом будет stopped.

Чтобы остановить процесс и удалить его из списка, используйте команду delete.

# pm2 delete ID

Посмотреть консольные логи приложения можно командой log. Если для log не указать приложение, то будут выведены логи всех процессов, отсортированные по времени.

# pm2 log ID

Для возможности восстановления и запуска списка процессов в случае перезапуска или непредвиденного сбоя сервера, сохраните текущую конфигурацию на диск выполнив команду save. Команда сохраняет информацию о текущих запущенных процессах из под текущего юзера в папке ~/.pm2 для каждого юзера у pm2 свой список процессов и свой дамп.
Нужно выполнять каждый раз, когда поменяли список процессов и хотим при перезапуске восстанавливать в текущем состоянии

# pm2 save

После этого сохраненные процессы могут быть запущены следующим образом.

# pm2 resurrect

Добавление pm2 в автозагрузку:

# pm2 startup

Добавляет сам pm2 в автозагрузку, в приоритете использует system.d, при отсутствии знает еще несколько init систем.
Нужно выполнять 1 раз, сразу после установки pm2 и из под root.
В случае systemd будет создан юнит pm2-root.service и сразу будет выполнено systemctl enable pm2-root.service

Nicko

Добавить комментарий