PM2
Очень полезно будет иметь на сервере демона, который будет поднимать наш api в случае его падения, либо же перезружать api при превышении лимитов по памяти и, так далее. Тут я расскажу максимально всё, что нам потребуется от PM2. Устанавливаем pm2:
npm i -g pm2
Далее нам нужен конфигурационный файл. PM2 поддерживает много вариантов и форматов конфигураций. А я вам расскажу о самом менее распространённом, но найболее удобном варианте. Проект с api я обычно храню в корне домашнего каталога юзера и там же этот конфигурационный файл. Создаем app.json в корне домашнего каталога:
{
"apps": [
{
"name": "app", // Название сервиса
"script": "index.js", // Директория к файлу проекта
"instances": 2, // Колличество потоков для выполнения
"exec_mode" : "cluster", // Кластерный режим
"max_memory_restart": "1G", // Макс потребление ОЗУ на поток
"env": { // и указываем наш env тут
"NODE_ENV": ***,
"NODE_PATH": ***,
"DB_DATABASE": ***,
"DB_HOST": ***,
"DB_NAME": ***,
"DB_PASSWORD": ***,
***
}
}
]
}
Далее для запуска нашего api через pm2 нам нужно выполнить :
pm2 start app.json
Остановка:
pm2 stop app.json
Рестарт:
pm2 restart id
Удаление из списка:
pm2 delete app.json
Можно посмотреть статистику и логи запущенных сервисов командой:
pm2 monit
В случае с api это удобно тем, что можно контролировать количество запросов к api. Есть интересная функция, но признаюсь честно, я ей не пользовался ни разу. В замен pm2 monit можно использовать web версию. Для этого нужно выполнить команду:
pm2 plus
И пройти регистрацию. Также в случае падения всего сервера у провайдера, что может быть очень редко, но всё же. Нам нужно добавить нашего демона в автозагрузку. Сохраняем запущенные процессы (при изменении конфигурации или запускаемых сервисов нужно сохранить процессы повторно):
pm2 save
Добавляем в автозагрузку:
pm2 startup systemd
После чего мы получим ответ, последнюю строку которого нужно выполнить с привилегиями root: (команда может отличаться, так что не стоит копировать её из этого ответа).
[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 мы закончили.
Last updated
Was this helpful?