Начало работы
Установка
Последняя версия 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)