Как установить pm2 ubuntu

Обновлено: 04.07.2024

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

Ниже приведено вводное введение в PM2, которое в основном охватывает часто используемые функции и конфигурации PM2.

устанавливать

Глобальная установка вряд ли может быть проще.

Введение в каталог

После установки pm2 следующий каталог будет создан автоматически. Видя имя файла, в основном знает, что делать, поэтому оно не будет переведено.

  • $HOME/.pm2 will contain all PM2 related files
  • $HOME/.pm2/logs will contain all applications logs
  • $HOME/.pm2/pids will contain all applications pids
  • $HOME/.pm2/pm2.log PM2 logs
  • $HOME/.pm2/pm2.pid PM2 pid
  • $HOME/.pm2/rpc.sock Socket file for remote commands
  • $HOME/.pm2/pub.sock Socket file for publishable events
  • $HOME/.pm2/conf.js PM2 Configuration

Учебник по началу работы

Выберите наше любимое экспресс-приложение в качестве примера. Вообщем мы все проходим npm start Запуск приложения на самом деле вызывает node ./bin/www , Итак, замена его на pm2

Обратите внимание, используется здесь --watch Этот параметр означает, что при изменении кода вашего экспресс-приложения pm2 поможет вам перезапустить службу.

Общие команды

начало

  • --watch : Прослушивание изменений в каталоге приложения. Как только изменения произойдут, перезапустите их автоматически. Если вы хотите точно прослушать каталог, лучше всего передать файл конфигурации.
  • -i --instances : Сколько экземпляров включено для балансировки нагрузки. если -i 0 или -i max , Количество экземпляров определяется на основе текущего количества ядер машин.
  • --ignore-watch : Исключить каталоги / файлы для мониторинга, которые могут быть конкретными именами файлов или обычными. Например --ignore-watch="test node_modules "some scripts""
  • -n --name : Название приложения. Может использоваться при просмотре информации о приложении.
  • -o --output <path> Путь к стандартному выходному файлу журнала.
  • -e --error <path> Путь к файлу журнала ошибок.
  • --interpreter <interpreter> : Интерпретатор pm2 должен использовать для выполнения приложения (bash, python . ). Например, вы используете сценарий кофе для написания приложений.

Полный список параметров командной строки:адрес

перезапуск

Остановите конкретные приложения. Может пройти первым pm2 list Получить имя приложения (указывается --name) или идентификатор процесса.

Если вы хотите остановить все приложения, вы можете

Удалить

сходный pm2 stop Следующим образом

pm2 stop app_name|app_id

Просмотр статуса процесса

Просмотр информации о процессе

Describing process with id 0 - name oc-server

│ exec cwd │ /data/file/qiquan/over_the_counter/server │

│ error log path │ /data/file/qiquan/over_the_counter/server/logs/app-err-0.log │

│ out log path │ /data/file/qiquan/over_the_counter/server/logs/app-out-0.log │

│ pid path │ /root/.pm2/pids/oc-server-0.pid │

│ node v8 arguments │ │

│ unstable restarts │ 0 │

Файл конфигурации

Простое объяснение

  • Элементы настройки в файле конфигурации в основном соответствуют параметрам командной строки.
  • Можете выбрать yaml или json Файлы, просто посмотрите на личную стирку.
  • json Формат файла конфигурации, pm2 рассматривается как обычный файл js, так что вы можете добавлять в него комментарии или писать код, что хорошо для динамической настройки конфигурации.
  • Если при запуске указан файл конфигурации, параметры командной строки игнорируются. (За исключением отдельных параметров, таких как --env)

пример

Для простого примера, пожалуйста, обратитесь к полной инструкции по настройкеОфициальный документ。

"name": "fis-receiver", // имя приложения

"script": "./bin/www", // фактический скрипт запуска

"watch": [// Отслеживать измененный каталог и автоматически перезапускать его после изменения

"ignore_watch": [// исключить из каталога наблюдения

"error_file": "./logs/app-err.log", // путь к журналу ошибок

"out_file": "./logs/app-out.log", // общий путь журнала

"NODE_ENV": "production" // параметр среды, в данный момент указанный как производственная среда

Авто перезапуск

Как упоминалось ранее, разместите здесь командную строку, нажмите ещездесь。

Вот файл для мониторинга всего проекта.Если вы хотите контролировать только указанные файлы и каталоги, рекомендуется использовать файл конфигурации. watch 、 ignore_watch Поле для установки.

Переключатель среды

При разработке реальных проектов наши приложения часто необходимо развертывать в нескольких средах, таких как среды разработки, среды тестирования и производственные среды. В разных средах иногда существуют различия в элементах конфигурации, таких как разные адреса связанных баз данных.

Для этого сценария pm2 также может хорошо поддерживаться. Сначала передав в файл конфигурации env_xx Чтобы объявить конфигурацию различных сред, а затем при запуске приложения, --env Параметр указывает операционную среду.

Заявление о конфигурации окружающей среды

Сначала в конфигурационном файле передайте env Параметры объявляют несколько конфигураций среды. Краткое объяснение:

Установка и настройка PM2

В этой статье я расскажу о самом удобном, на мой взгляд, диспетчере процессов. Покажу, как его установить и настроить свои проекты (например: скрипт для автопостинга, сервис на ReactJS).

PM2 запускает приложения и скрипты в режиме 24/7 и решает проблему с их вылетами путем автоматического перезапуска с сохранением лога. Это решение особенно полезно для тех, кто держит на своем сервере большое количество скриптов и нуждается в их удобном управлении.

Рассмотрим установку и настройку на примере Ubuntu 18.04.

Установка

Так как PM2 написан на Node.js и устанавливается с помощью npm, нужно установить их на свой виртуальный сервер:

Теперь устанавливаем сам диспетчер процессов:

Готово! PM2 на сервере.

Настройка

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

Для остальных языков программирования (на примере Python 3):

Если ваше приложение завершит работу с ошибкой, PM2 автоматически перезапустит его, что очень удобно.

После запуска скриптов и приложений можно посмотреть информацию о них с помощью команды в консоли:

Пример того, что мы увидим:

pm2 list

В таблице показано количество рестартов, потребляемая память и нагрузка на процессор от приложений.

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

Удаление из списка:

Также можно просмотреть логи отдельных приложений. Для этого используем эту команду:

И выбираем свое приложение из списка.

pm2 monit

Если вам неудобно следить за логами и запуском приложений через консоль, то это можно делать даже в браузере, установив веб-версию PM2 одной командой:

После этого вводим свои данные для регистрации и переходим по ссылке, которая отобразится в консоли.

Пример того, что мы увидим:

pm2 plus

Мы разобрали основные команды менеджера процессов. Удачи в ваших проектах!

Node.js - это среда выполнения JavaScript с открытым исходным кодом для создания серверных и сетевых приложений. Node js сервер может работать на Linux, macOS, FreeBSD и Windows.

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

В этой статье мы настроим хостинг Node js server на Ubuntu 18.04. Этот сервер будет запускать приложение Node.js, управляемое PM2 , и предоставлять пользователям безопасный доступ к приложению через прокси-сервер Nginx.

Что вам потребуется

В этом руководстве предполагается, что у вас:

Шаг 1 - Установка Node js

Давайте начнем с установки последней версии LTS Node.js с использованием архивов пакетов NodeSource .

Сначала установите NodeSource PPA, чтобы получить доступ к его содержимому. Убедитесь, что вы находитесь в своем домашнем каталоге, и используйте curl для получения сценария установки для архивов Node.js 8.x:

Вы можете проверить содержимое этого скрипта с помощью nano или предпочитаемого вами текстового редактора:

Когда вы закончите проверку скрипта, запустите его через sudo :

PPA будет добавлен в вашу конфигурацию, и ваш локальный кэш пакетов будет обновлен автоматически. После запуска сценария установки из Nodesource вы можете установить Node js server side:

Чтобы проверить, какую версию Node.js вы установили после этих начальных шагов, введите:

Примечание. При установке из NodeSource PPA вызывается исполняемый файл Node.js nodejs , а не node .

nodejs Пакет содержит nodejs бинарный файл, а также менеджер пакетов npm , так что вам не нужно устанавливать npm отдельно.

npm использует файл конфигурации в вашем домашнем каталоге, чтобы отслеживать обновления. Он будет создан при первом запуске npm . Выполните эту команду, чтобы проверить, что npm установлено, и создать файл конфигурации:

Чтобы некоторые npm пакеты работали (например, требующие компиляции кода из исходного кода), вам необходимо установить build-essential пакет:

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

Установив среду выполнения Node.js, давайте перейдем к написанию приложения Node.js.

Шаг 2 - Создание приложения Node.js

Сначала давайте создадим приложение под названием hello.js :

Вставьте следующий код в файл:

Сохраните файл и выйдите из редактора.

Чтобы протестировать ваше приложение, введите:

Вы увидите следующий вывод:

Примечание. Запуск приложения Node.js таким способом блокирует дополнительные команды до тех пор, пока приложение не будет завершено нажатием CTRL+C .

Чтобы протестировать приложение, откройте другую терминальную сессию на сервере, и подключитесь к localhost с curl :

Если вы видите следующий вывод, приложение работает правильно и прослушивает правильный адрес и порт:

Если вы не видите ожидаемого вывода, убедитесь что ваше Node js приложение запущено и настроено на прослушивание по правильному адресу и порту.

Если вы уверены, что это работает, завершите приложение (если вы еще этого не сделали), нажав CTRL+C .

Шаг 3 - Установка PM2

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

Используйте npm для установки последней версии PM2 на ваш сервер:

-g опция указывает npm установить модуль на глобальном уровне , так что он доступен для всей системы.

Давайте сначала используем pm2 start команду для запуска вашего приложения hello.js , в фоновом режиме:

Это также добавляет ваше приложение в список процессов PM2, который выводится каждый раз, когда вы запускаете приложение:


Как видите, PM2 автоматически назначает App name (на основе имени файла, без .js расширения) и PM2 id . PM2 также поддерживает другую информацию, такую ​​как PID процесса, его текущем состоянии и использовании памяти.

Приложения, работающие в PM2, будут автоматически перезапущены в случае сбоя или уничтожения приложения. Мы можем предпринять дополнительный шаг, чтобы запустить приложение при запуске системы с помощью startup подкоманды.

Эта подкоманда генерирует и настраивает скрипт запуска для запуска PM2 и его управляемых процессов при загрузке сервера:

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

Запустите команду из вывода с вашим именем пользователя вместо alexey :

В качестве дополнительного шага мы можем сохранить список процессов PM2 и соответствующие среды:

Теперь вы создали системный модуль, который запускает pm2 для вашего пользователя при загрузке. Он, в свою очередь, запускает hello.js .

Запустите сервис с systemctl :

Остановите приложение с помощью этой команды (укажите PM2 App name или id ):

Перечислите приложения, в управляемые PM2:

Получить информацию о конкретном приложении, используя его App name :

Монитор процесса PM2 можно вызвать с помощью monit подкоманды. Это отобразит статус приложения, нагрузку на процессор и использование памяти:

При запуске pm2 без каких-либо аргументов будет отображена страница справки с примером использования.

Теперь, когда ваше приложение Node.js запущено и управляется PM2, давайте настроим прокси-сервер.

Шаг 4 - Настройка Nginx в качестве прокси-сервера

Ваше приложение работает и прослушивает localhost , но вам нужно настроить способ доступа к нему ваших пользователей. Для этой цели мы настроим веб-сервер Nginx в качестве прокси-сервера.

Внутри блока server у вас должен быть существующий location / блок. Замените содержимое этого блока конфигурацией ниже. Если ваше приложение настроено на прослушивание другого порта, укажите правильный номер порта:

Как только вы закончите изменение конфигурации Nginx для ваших приложений, сохраните файл и выйдите из редактора.


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

Настройка SSH демона

откройте конфигурационный файл вашим редактором, например nano

найти там такую строку:

Этим мы запретили подключение пользователя root по ssh, что бы изменения вступили в силу необходимо перезагрузить ssh

после этого отключаемся от сервера, первоначальная настройка завершена, все остальные действия будут делаться от имени вновь созданного пользователя nodeapp

Теперь подключимся под новым пользователем:

Установка Git

Обновим список пакетов

Установка node

или для установки 7 версии:

После установки можно проверить версию node.js командой

Я не буду описывать, как создавать тестовое приложение на node.js, будем надеяться, что у вас уже есть, что-то готовое.

Создадим директорию для приложения, я делаю в домашней директории пользователя, не знаю насколько это правильно.

Теперь загрузите ваше приложение на сервер в созданную для него директорию.

Перейдите в нее.

Выполните установку пакетов:

Прим. Если вы хотите использовать yarn, его легко установить при помощи npm:

После установки ваше приложение должно запускаться командой node файл_приложения.js Проверим это:

Если приложение запустилось и доступно на порту, останавливаем его командой Ctrl+C

Теперь установим pm2 для демонизации наших приложений:

Запустим наше приложение при помощи pm2:

Если приложение запустилось мы увидим похожую таблицу:

│ Name │ mode │ status │ ↺ │ cpu │ memory │

│ index │ fork │ online │ 0 │ 0% │ 71.0 MB │

Когда вы запустите все приложения для вашего сервера, необходимо добавить опцию автозапуска для pm2, выполнив:

В результате увидим следующее:

[PM2] You have to run this command as root

[PM2] Execute the following command :

[PM2] sudo su -c “env PATH=$PATH:/opt/node/bin pm2 startup ubuntu -u sammy — hp /home/sammy”

Выполним сформированную команду, например:

sudo su -c “env PATH=$PATH:/opt/node/bin pm2 startup ubuntu -u sammy — hp /home/sammy”

Проверим запущенные приложения:

Обновим список пакетов и установим nginx

sudo apt-get update

sudo apt-get install nginx

Далее откроем конфигурационный файл по умолчанию:

sudo nano /etc/nginx/sites-available/default

Удалите все из файла и добавьте такие блоки для каждого Вашего приложения, изменив в них хост, ip и порт приложения:

Сохраните файл и перезапустите службу:

Если Ваше приложение использует статику, ее можно прокинуть как средствами node так и средствами njinx, я выбрал второй вариант вот мой конфиг:

Как можно увидеть, на сервере крутятся два приложения для двух разных доменов, внутренне приложения работают на портах 8080 и 8081, а при запросе по имени домена на порт 80 для каждого домена отвечает свое приложение.

Читайте также: