Теперь нужно установить PM2. Это менеджер процессов Node.js. PM2 предоставляет простой способ управления и демонизации приложений.
Установку можно выполнить при помощи пакетного менеджера npm.
sudo npm install pm2@latest -g
При помощи опции –g менеджер npm выполнит глобальную установку PM2.
Менеджер процессов PM2 очень прост в использовании. Рассмотрим основы его работы.
Для запуска приложений в фоновом режиме используется команда pm2 start:
pm2 start hello.js
Также эта команда добавит приложение в список процессов PM2, который выводится на экран при запуске каждого приложения:
[PM2] Spawning PM2 daemon with pm2_home=/home/8host/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /home/8host/hello.js in fork_mode (1 instance)
[PM2] Done.
┌──────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────┬───────────┬───────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
├──────────┼────┼──────┼──────┼────────┼─────────┼────────┼─────┼───────────┼───────┼──────────┤
│ hello │ 0 │ fork │ 1338 │ online │ 0 │ 0s │ 0% │ 23.0 MB │ 8host │ disabled │
└──────────┴────┴──────┴──────┴────────┴─────────┴────────┴─────┴───────────┴───────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app
Как видите, PM2 автоматически устанавливает App name (имя файла без расширения .js) и PM2 id. Также PM2 предоставляет другую информацию: PID процесса, текущее состояние, использование памяти.
Запущенное с помощью PM2 приложение будет автоматически перезапускаться в случае ошибок или сбоев, однако автозагрузку приложения нужно настроить отдельно. Для этого существует подкоманда startup. Эта команда генерирует и настраивает сценарий запуска менеджера PM2 и всех его процессов вместе с загрузкой сервера
pm2 startup systemd
В последней строке вывода находится команда, которую нужно запустить с привилегиями суперпользователя, чтобы добавить PM2 в автозагрузку:
[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u 8host --hp /home/8host
Запустите сгенерированную команду, чтобы настроить автозапуск PM2.
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u 8host --hp /home/8host
Также можно сохранить процесс PM2 и соответствующую среду.
pm2 save
Эта команда создаст unit-файл для systemd, запускающий pm2 при запуске сервера. Менеджер pm2, в свою очередь, запустит приложение hello.js. Проверьте состояние юнита systemd:
systemctl status pm2-8host
PM2 предоставляет множество других функций, которые позволяют управлять или просматривать информацию о приложениях. Запуск PM2 без каких-либо аргументов отобразит страницу справки, на которой можно найти подробные примеры использования PM2.
Остановить приложение можно при помощи:
pm2 stop app_name_or_id
Чтобы перезапустить приложение, введите:
pm2 restart app_name_or_id
Список приложений, управляемых PM2, можно просмотреть при помощи следующей подкоманды:
pm2 list
Подробную информацию о конкретном приложении можно получить с помощью подкоманды info, указав имя приложения:
pm2 info app_name
Подкоманда monit показывает данные процесса PM2: состояние приложения, использование CPU и памяти
pm2 monit
Теперь нужно настроить обратный прокси.