Перейти к основному контенту

Установка PM2

intro-install-pm2-nodejs-planetahost.png

Подробности урока

Уровень сложности Лёгкий
Права root Требуются
Требования Терминал Linux
Категория Установка ПО
Совместимость с ОС Debian, Ubuntu, RHEL
Примерное время чтения 15 мин.


Введение

PM2 - это популярный менеджер процессов для Node.js-приложений, который позволяет запускать программы в фоновом режиме, автоматически перезапускать их при сбоях и удобно управлять сервисами через консоль.

Чаще всего PM2 используют для Node.js, однако при необходимости через него можно запускать и другие приложения, например Python3-скрипты, shell-скрипты и различные фоновые процессы. Также PM2 поддерживает автозапуск через systemd, благодаря чему процессы будут автоматически подниматься после перезагрузки сервера.

В этой статье рассмотрим установку PM2, а также базовые команды и простой пример использования.

Установка

Установка Node.js

Перед установкой PM2 необходимо установить Node.js и npm.

После установки убедитесь, что Node.js и npm работают:

node -v

изображение.png

npm -v

изображение.png

Установка PM2

Установите PM2 через npm:

npm install -g pm2

Проверяем установку:

pm2 -v

изображение.png

Установка на RHEL выполняется аналогично.

Пример использования

Создадим простой HTTP-сервер.

Создайте файл:

nano app.js

Содержимое файла:

const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('PM2 работает!\n');
});

server.listen(3000, () => {
    console.log('Сервер запущен на порту 3000');
});

изображение.png

Запускаем приложение:

pm2 start app.js

изображение.png

После запуска PM2 покажет список процессов.

Проверить состояние можно командой:

pm2 list

Теперь откройте в браузере:

http://IP_СЕРВЕРА:3000

изображение.png

Либо выполните:

curl http://127.0.0.1:3000

изображение.png

Пример запуска Python3

PM2 умеет запускать не только Node.js-приложения.

Создадим простой Python-скрипт:

nano test.py

Содержимое:

while True:
    print("PM2 запустил Python")

Запуск:

pm2 start test.py --interpreter python3

изображение.png

Использование ecosystem.config.js

Также PM2 поддерживает запуск приложений через конфигурационные файлы ecosystem.config.js. Такой способ особенно удобен, если необходимо хранить параметры запуска, переменные окружения, количество процессов, директории и другие настройки в одном месте.

Создадим конфигурационный файл:

nano ecosystem.config.js

Пример содержимого:

module.exports = {
  apps: [
    {
      name: "test-app",
      script: "./app.js",
      instances: 1,
      autorestart: true,
      watch: false,
      max_memory_restart: "300M",
      env: {
        NODE_ENV: "production",
        PORT: 3000
      }
    }
  ]
}

Запуск приложения через конфигурационный файл

pm2 start ecosystem.config.js

Применение изменений

После изменения конфигурации выполните:

pm2 restart ecosystem.config.js

Через конфигурационный файл PM2 позволяет удобно задавать:

  • имя процесса;
  • путь к приложению;
  • переменные окружения;
  • количество копий приложения;
  • лимиты памяти;
  • автоматический перезапуск;
  • рабочую директорию;
  • аргументы запуска;
  • логирование;
  • режим cluster;
  • интервал перезапуска;
  • пользователя запуска и другие параметры.
Автозапуск PM2

Чтобы процессы автоматически запускались после перезагрузки сервера, выполните:

pm2 startup

PM2 покажет команду, которую нужно выполнить от имени root.

изображение.png

После этого сохраните текущий список процессов:

pm2 save
Полезные команды

Список процессов

pm2 list

Просмотр логов

pm2 logs

Логи конкретного процесса:

pm2 logs app

Остановка процесса

pm2 stop app

Перезапуск процесса

pm2 restart app

Удаление процесса

pm2 delete app

Мониторинг ресурсов

pm2 monit

Информация о процессе

pm2 info app

Сохранение текущей конфигурации

pm2 save

Восстановление сохранённых процессов

pm2 resurrect

Заключение

PM2 значительно упрощает запуск и управление фоновыми приложениями на сервере. С его помощью можно быстро организовать автозапуск сервисов, мониторинг процессов и автоматический перезапуск при сбоях. Благодаря поддержке systemd и удобному набору команд PM2 подходит как для небольших проектов, так и для production-серверов с высокой нагрузкой.