PM2

Установка на сервер

Для установки необходимо выполнить следующую команду:

npm install pm2 -g

Управление процессами

Для того, чтобы посмотреть запущенные процессы необходимо ввести команду

pm2 status

И так, мы видим процессы, которые управляются PM2. А теперь о ключевых параметрах, знание которых пригодится нам в работе.

  • id – Идентификатор процесса
  • pid – Идентификатор процесса в памяти (можно найти по значению через утилиту htop)
  • status – Текущий статус процесса
  • mem – Количество ОЗУ выделенного под процесс

Основные команды

Управление процессами происходит довольно просто, достаточно обратиться к PM2, выбрать желаемую операцию и указать id процесса (смотреть выше).

pm2 операция id

И так, основные операции:

start – запускает процесс

stop – останавливет процесс

delete – удаляет процесс и завершает его выполнение

restart – перезапускает процесс (необходимо использовать если вы произвели изменения в проекте, например, пересобрали приложение и хотите чтобы изменения вступили в силу)

При свежеустановленном менеджере список с процессами будет пустой, далее в статье мы разберемся как запустить тот или иной процесс на примере Next.js и Django.

Запуск приложений на Node JS (React, Next)

Чтобы запустить Node JS приложение необходимо перейти в корневую директорию проекта и выполнить следующую команду:

pm2 start npm --name frontend -- start

В данном случае мы используем стандартную операцию start и следующие флаги:

–name – имя приложения которое будет отображаться в менеджере процессов (Пишем сам флаг и через пробел указываем название)

–start – вызывается команда старт, которая прописана в package.json вашего фронтенд приложения, что означает запуск предварительно собранного приложения (Если вы не собрали приложение сделайте это прописав команду npm run build в директории вышего проекта)

Префикс npm в начале команды означает, что мы запускаем приложение на Node.js

Запуск Django приложения

Для того, чтобы запустить Django приложение необходимо создать конфигурационный файл в папке с проектом под названием echosystem.config.js и заполнить его следующим содержимым

module.exports = {
  apps : [{
    name: 'backend-gunicorn',
    script: '  gunicorn core.wsgi -w 2  --threads=4  --bind 0.0.0.0:8000;  ',
    merge_logs: true,
    autorestart: true,
    log_file: "var/www/html/logs/combined.outerr.log",
    out_file: "var/www/html/logs/out.log",
    error_file: "var/www/html/logs/err.log",
    log_date_format : "YYYY-MM-DD HH:mm Z",
    append_env_to_name: true,
    watch: false,
    max_memory_restart: '4G',
  }],
};

После того, как файл был сконфигурирован введите команду( для запуска, необходимо находится в той директории где лежит данный файл ) :

pm2 start echosystem.config.json

Теперь ваше Django приложение запущено в PM2.

Автозапуск PM2

По умолчанию PM2 сам не перезапускается.

Для того, чтобы, например после перезагрузки сервера, не приходилось каждый раз запускать PM2 в ручном режиме, можно включить автозагрузку, командой:

pm2 startup

Автозагрузку включили, теперь нужно сохранить в конфигурации PM2, какие процессы он будет запускать. Для это запускаем необходимые нам процессы, например бэкэнд на django и фронтэенд на react js(инструкции по запуску указаны выше).

И сохраняем конфигурацию, командой:

pm2 save

Готово! Теперь ваши процессы будут автоматически запускаться после перезагрузки сервера.

Отключение автозапуск PM2

Чтобы отключить и удалить текущую конфигурацию запуска:

pm2 unstartup

Источники по теме

https://pm2.keymetrics.io/docs/usage/startup/