Менеджер процессов 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
Добавить комментарий