Начало работы
Установка
Последняя версия PM2 устанавливается с помощью NPM или Yarn ``Сценарий оболочки $ npm install pm2@latest -g
ИЛИ
``` сценарий оболочки
$ yarn global add pm2
Запуск приложения
Самый простой способ запуска, демонизации и мониторинга приложения - это использование командной строки ``Сценарий оболочки $ pm2 start app.js
Или можно запустить любое другое приложение простым способом
``` сценарий оболочки
$ pm2 start bashscript.sh
$ pm2 start python-app.py --watch
$ pm2 start binary-file -- --port 1520
Некоторые опции, которые можно передать в CLI
Указать имя приложения ``Сценарий оболочки –name <имя_приложения>
Наблюдение и перезапуск приложения при изменении файлов
``` shell script
--watch
Установка порога памяти для перезагрузки приложения
--max-memory-restart <200MB>
Указать файл журнала
--log <log_path>
Передать дополнительные аргументы скрипту
-- arg1 arg2 arg3
Задержка между автоматическими перезапусками
--restart-delay <задержка в мс>
Префикс журналов с указанием времени
--time
Не производить автоматический перезапуск приложения
--no-autorestart
Указать cron для принудительного перезапуска
--cron <cron_pattern>
Прикрепить к журналу приложения
--no-daemon
Управление процессами
Управление состоянием приложения очень простое, вот команды
$ pm2 restart app_name
$ pm2 reload app_name
$ pm2 stop app_name
$ pm2 delete app_name
Вместо app_name можно передать
all
для действия на все процессыid
для воздействия на определенный идентификатор процесса
Проверка состояния, журналов, метрик
Теперь, когда вы запустили это приложение, вы можете проверить его состояние, журналы, метрики и даже получить онлайн-панель с помощью pm2.io.
Список статусов всех приложений, управляемых PM2 ``Сценарий оболочки $ pm2 [list|ls|status]
Для отображения журналов в реальном времени
``` сценарий оболочки
$ pm2 logs
Чтобы покопаться в старых журналах
$ pm2 logs --lines 200
Вот панель реального времени, которая помещается непосредственно в терминал
$ pm2 monit
Веб-панель, кросс-серверы с системой диагностики ``скрипт оболочки $ pm2 plus
### Кластерный режим
Для Node.js-приложений PM2 включает в себя автоматический балансировщик нагрузки, который будет разделять все HTTP[s]/Websocket/TCP/UDP-соединения между каждым порожденным процессом.
Чтобы запустить приложение в режиме кластера
``Сценарий оболочки
$ pm2 start app.js -i max
Подробнее о кластерном режиме здесь.
Файл экосистемы
Для управления несколькими приложениями можно также создать файл конфигурации, называемый Ecosystem File. Для создания файла Ecosystem ``Сценарий оболочки $ pm2 ecosystem
В результате будет сгенерирован файл ecosystem.config.js
module.exports = { apps : [{ имя: “app”, script: “./app.js”, env: { NODE_ENV: “development” }, env_production: { NODE_ENV: “production”, } }, { имя: ‘worker’, script: ‘worker.js’ }] }
И запустить его легко
``` shell-скрипт
$ pm2 start ecosystem.config.js
Подробнее о декларировании приложений здесь
Настройка сценария запуска
Перезапуск PM2 с управляемыми процессами при загрузке/перезагрузке сервера очень важен. Чтобы решить эту проблему, достаточно выполнить следующую команду для создания активного сценария запуска ``Сценарий оболочки $ pm2 save
Подробнее о генераторе сценариев запуска [здесь](https://pm2.keymetrics.io/docs/usage/startup/)
### Перезапуск приложения при изменениях
Это довольно просто с помощью опции `--watch`.
$ cd /path/to/my/app $ pm2 start env.js –watch –ignore-watch=“node_modules”
Это позволит следить и перезапускать приложение при любом изменении файла из текущего каталога + всех подкаталогов и игнорировать любые изменения в папке node_modules `--ignore-watch="node_modules"`.
После этого можно использовать `pm2 logs` для проверки журналов перезапущенного приложения.
------
### CheatSheet {.row-span-2 .col-span-2}
Здесь приведены некоторые команды, которые стоит знать. Просто попробуйте их выполнить с образцом приложения или со своим текущим веб-приложением на машине разработки
Режим форка
командный сценарий
$ pm2 start app.js --name my-api # Именной процесс
Кластерный режим
‘‘‘сценарий
$ pm2 start app.js -i 0 # Будет запущено максимальное количество процессов с LB в зависимости от доступных процессоров
$ pm2 start app.js -i max # То же, что и выше, но устаревшее.
$ pm2 scale app +3 # Масштабирует app
на 3 рабочих
$ pm2 scale app 2 # Масштабирование app
до 2 рабочих.
Листинг
Шелл-скрипт
$ pm2 list # Отображение состояния всех процессов
$ pm2 jlist # Вывести список процессов в сыром JSON
$ pm2 prettylist # Вывод списка процессов в улучшенном JSON
$ pm2 describe 0 # Вывести всю информацию о конкретном процессе
$ pm2 monit # Мониторинг всех процессов
Журналы командный сценарий $ pm2 logs [–raw] # Отображение журналов всех процессов в потоковом режиме $ pm2 flush # Очистить все файлы журналов $ pm2 reloadLogs # Перезагрузить все журналы
Действия
Шелл-скрипт
$ pm2 stop all # Остановить все процессы
$ pm2 restart all # Перезапустить все процессы
$ pm2 reload all # Перезагрузка в течение 0 с простоя (для СЕТЕВЫХ приложений)
$ pm2 stop 0 # Остановка определенного идентификатора процесса
$ pm2 restart 0 # Перезапуск определенного идентификатора процесса
$ pm2 delete 0 # Удаляет процесс из списка pm2
$ pm2 delete all # Удаление всех процессов из списка pm2
Misc Шелл-скрипт $ pm2 reset # Сброс метаданных (время перезапуска…) $ pm2 updatePM2 # Обновление в памяти pm2 $ pm2 ping # Убедиться, что демон pm2 запущен $ pm2 sendSignal SIGUSR2 my-app # Послать системный сигнал скрипту $ pm2 start app.js –no-daemon $ pm2 start app.js –no-vizion $ pm2 start app.js –no-autorestart
### Обновление PM2
Мы сделали это просто, между релизами нет никаких изменений, и процедура проста
``Основной сценарий
$ npm install pm2@latest -g
Затем обновляем in-memory PM2
$ pm2 update
Также см.
- QUICK START (pm2.keymetrics.io)