PM2 является мощным инструментом для управления процессами приложений на платформе Node.js. В данном руководстве вы ознакомитесь с тем, как развернуть ваши Node.js приложения на сервере в продуктивной среде с помощью PMЭтот менеджер позволяет следить за работой приложений, их использованием ресурсов памяти и процессора, а также предоставляет удобные команды для запуска, остановки и перезапуска как всех приложений, так и отдельных из них.
Для начала работы с PM2, убедитесь, что у вас установлен Node.js и npm. Затем установите PM2 глобально, выполнив команду:
npm install pm2 -g
После установки PM2 вы можете запустить ваше приложение, используя команду:
pm2 start app.js
Где app.js — это основной файл вашего приложения. PM2 автоматически создаст экземпляр вашего приложения и начнет его отслеживание.
PM2 также предоставляет возможность конфигурировать приложения с помощью файлов конфигурации. Вы можете создать файл ecosystem.config.js, в котором укажете параметры, такие как количество экземпляров приложения, переменные окружения и другие настройки. Например:
module.exports = {
apps: [{
name: "my-app",
script: "./app.js",
instances: "max",
exec_mode: "cluster",
env: {
NODE_ENV: "production",
},
},],
};
Для запуска приложения с использованием конфигурационного файла выполните команду:
pm2 start ecosystem.config.js
Помимо управления запущенными приложениями, PM2 позволяет вам настраивать автоматический перезапуск ваших приложений в случае их сбоя. Для этого вы можете использовать флаг --watch, который будет следить за изменениями в файлах:
pm2 start app.js --watch
Также, не забывайте периодически сохранять текущее состояние процессов, чтобы после перезагрузки сервера ваши приложения автоматически поднимались:
pm2 save
Для управления PM2 в общем виде, вы можете использовать команды:
pm2 list— отображает список запущенных приложений;pm2 stop <имя_приложения>— останавливает приложение;pm2 restart <имя_приложения>— перезапускает приложение;pm2 delete <имя_приложения>— удаляет приложение из списка PM2.
Таким образом, PM2 предоставляет удобный и эффективный способ управления Node.js приложениями в продуктивной среде, обеспечивая их надежность и высокую доступность.
Содержание статьи
Установка Node.js
Сначала вам нужно добавить PPA для Node.js в вашу систему, который предоставляет официальный сайт nodejs. Также необходимо установить пакет python-software-properties, если он еще не установлен.
sudo apt install python-software-properties curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
После добавления необходимого PPA давайте установим Node.js. При установке будет также установлен npm, а также множество других необходимых зависимостей.
sudo apt install nodejs
После завершения установки вы можете проверить, что Node.js и npm были установлены правильно, выполнив следующие команды:
node -v
Это покажет установленную версию Node.js.
npm -v
Эта команда отобразит версию npm. Если обе команды вернули версии, значит установка прошла успешно!
Также рекомендуется установить пакет build-essential, который необходим для сборки некоторых npm-пакетов:
sudo apt install build-essential
Если вам понадобится установить дополнительные модули или пакеты, просто используйте команду npm install в вашем проекте. Например:
npm install <имя_пакета>
Это позволит вам добавлять библиотеки и инструменты для разработки прямо в ваш проект.
Для управления версиями Node.js и npm рекомендуется использовать nvm (Node Version Manager). Это позволит вам легко переключаться между различными версиями Node.js. Установка nvm осуществляется следующей командой:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
После установки nvm, перезапустите терминал и установите нужную версию Node.js, например:
nvm install 16
Это полезно, если у вас есть проекты, требующие разных версий Node.js.
Кроме того, полезно ознакомиться с документацией по npm, чтобы узнать о различных командах и возможностях, которые он предоставляет для управления пакетами.
Не забывайте следить за обновлениями Node.js и npm, чтобы использовать последние улучшения и исправления:
sudo npm install -g npm@latest
Установка PM2
Теперь воспользуйтесь npm для установки менеджера процессов Node.js с помощью следующей команды. Это установит последнюю доступную версию pm2 на вашу систему.
sudo npm install pm2@latest -g
PM2 — это продвинутый менеджер процессов для Node.js, который позволяет вам легко управлять приложениями, обеспечивать их автоматический перезапуск и мониторинг. После установки PM2 вы можете использовать команду pm2 start <имя_файла>.js для запуска вашего приложения. Чтобы просмотреть статус всех запущенных процессов, используйте pm2 list.
Также PM2 предоставляет функции для автозапуска приложений после перезагрузки системы. Вы можете активировать эту функцию с помощью команды pm2 startup, которая сгенерирует соответствующий скрипт.
Не забудьте ознакомиться с документацией PM2 для изучения всех доступных команд и возможностей, таких как логирование, управление конфигурацией и интеграция с другими инструментами.
Кроме того, PM2 поддерживает кластеризацию, что позволяет распределять нагрузку между несколькими процессами и эффективно использовать все доступные ядра процессора. Для этого используйте команду pm2 start <имя_файла>.js -i max, где max автоматически запустит столько экземпляров, сколько доступно ядер.
PM2 также позволяет вам управлять версиями ваших приложений с помощью команды pm2 deploy, что упрощает процесс развертывания новых версий на различных серверах. Рекомендуется использовать pm2 save для сохранения текущего состояния процессов, чтобы они могли быть восстановлены после перезагрузки системы.
Наконец, для удобства мониторинга состояния ваших приложений, вы можете использовать встроенную панель управления PM2, доступную по адресу http://localhost:9615. Для ее активации выполните команду pm2 plus.
Запуск приложения с PM2
Теперь создайте конфигурационный файл для PMВ этом руководстве я буду использовать два приложения Node.js, которые необходимо развернуть на сервере. Исходный код приложений находится в каталогах /var/www/parse-apps/app1 и /var/www/parse-apps/appСоздайте файл конфигурации parse-apps.config.js с следующим содержимым. Оба приложения используют файл index.js для запуска.
module.exports = { apps : [ { name : "My App 1", script : "index.js", watch : true, merge_logs : true, cwd : "/var/www/parse-apps/app1/", }, { name : "My App 2", script : "index.js", watch : true, merge_logs : true, cwd : "/var/www/parse-apps/app2/", } ] }
Теперь выполните следующую команду, чтобы запустить приложение с использованием PMВ команде указывается имя конфигурационного файла parse-apps.config.js. PM2 прочитает файл конфигурации, запустит все приложения и назначит каждому уникальный идентификатор.
pm2 start parse-apps.config.js
После запуска приложений вы можете использовать команду pm2 list, чтобы увидеть статус всех работающих приложений. Это даст вам представление о том, какие приложения активны, их ID, статус и время работы. Если вы хотите перезапустить приложение, используйте команду pm2 restart [ID или имя]. Для остановки приложения можно использовать команду pm2 stop [ID или имя].
Также стоит отметить, что PM2 позволяет сохранять процессы, чтобы они автоматически перезапускались после перезагрузки сервера. Для этого выполните команду pm2 save, а затем настройте автозапуск с помощью pm2 startup, следуя инструкциям, которые появятся в терминале.
Используя PM2, вы получаете удобный инструмент для управления процессами Node.js, позволяющий легко следить за их состоянием и обеспечивать их устойчивую работу.
Управление процессами с помощью PM2
Чтобы увидеть список всех процессов, зарегистрированных в PM2, используйте следующую команду. Она также покажет статус приложений, идентификаторы процессов и другую полезную информацию.
sudo pm2 list
Для получения более детальной информации о конкретном процессе можно воспользоваться командой, указав идентификатор или имя приложения.
sudo pm2 show 1

Кроме того, вы можете следить за всеми процессами, которые задействуют CPU и память, в режиме реального времени.
Для этого используйте команду:
sudo pm2 monit
Эта команда откроет монитор, где можно отслеживать использование ресурсов, логи и состояние каждого приложения. Вы также можете перезапустить, остановить или удалить процессы с помощью следующих команд:
sudo pm2 restart <имя_или_ID>— для перезапуска процесса;sudo pm2 stop <имя_или_ID>— для остановки процесса;sudo pm2 delete <имя_или_ID>— для удаления процесса из списка.
PM2 также поддерживает автоматическое перезапускание приложений в случае их сбоев, что делает его отличным выбором для продакшн-среды. Для активации этой функции можно использовать:
sudo pm2 start <ваше_приложение> --watch
Это позволит PM2 следить за изменениями в файлах и автоматически перезапускать приложение при их изменении.
Мониторинг и логирование приложений
Эффективный контроль за работой серверных решений играет ключевую роль в обеспечении стабильности и производительности. Наличие надежных инструментов для отслеживания состояния систем и ведения журналов событий позволяет разработчикам и администраторам быстро реагировать на неполадки, анализировать поведение сервисов и оптимизировать процессы. В этом контексте важность мониторинга и логирования сложно переоценить.
Существует множество методов и инструментов для отслеживания работы и регистрации действий. Они помогают не только выявлять ошибки, но и предоставляют ценную информацию для последующего анализа. Правильное логирование обеспечивает прозрачность системы, позволяя быстро находить и исправлять недостатки.
| Инструмент | Описание |
|---|---|
| Winston | |
| Loggly | Облачный сервис для централизованного сбора и анализа логов, обеспечивающий удобный интерфейс. |
| Prometheus | Система мониторинга и алертинга, позволяющая собирать и хранить временные ряды данных. |
| Grafana | Инструмент для визуализации данных, который отлично интегрируется с Prometheus и другими источниками. |
Использование данных решений в комплексе позволяет получить полноценную картину работы систем. Интеграция логирования с инструментами мониторинга помогает не только отслеживать производительность, но и предсказывать потенциальные сбои, что является залогом бесперебойного функционирования.
Автоматизация развертывания с PM2
Одним из ключевых аспектов автоматизации является возможность настройки автоматического перезапуска и мониторинга работы сервисов. Данная функциональность предоставляет разработчикам и администраторам больше уверенности в стабильности работы их систем, позволяя сосредоточиться на более важных задачах.
| Преимущества | Описание |
|---|---|
| Автоматический перезапуск | Система автоматически перезапускает службу в случае сбоя, что обеспечивает высокую доступность. |
| Мониторинг ресурсов | Инструмент позволяет отслеживать использование памяти и процессора, предоставляя важную информацию для оптимизации. |
| Логи и отчеты | Автоматическое ведение журналов работы помогает быстро находить и устранять проблемы. |
| Управление версиями | Поддержка нескольких версий одного сервиса позволяет безболезненно переходить на новые обновления. |
Таким образом, интеграция подобного инструмента в рабочие процессы способствует повышению эффективности и надежности систем, обеспечивая пользователям стабильный доступ к необходимым услугам.

