Как установить pm2 ubuntu
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 Параметры объявляют несколько конфигураций среды. Краткое объяснение:
В этой статье я расскажу о самом удобном, на мой взгляд, диспетчере процессов. Покажу, как его установить и настроить свои проекты (например: скрипт для автопостинга, сервис на ReactJS).
PM2 запускает приложения и скрипты в режиме 24/7 и решает проблему с их вылетами путем автоматического перезапуска с сохранением лога. Это решение особенно полезно для тех, кто держит на своем сервере большое количество скриптов и нуждается в их удобном управлении.
Рассмотрим установку и настройку на примере Ubuntu 18.04.
Установка
Так как PM2 написан на Node.js и устанавливается с помощью npm, нужно установить их на свой виртуальный сервер:
Теперь устанавливаем сам диспетчер процессов:
Готово! PM2 на сервере.
Настройка
PM2 в основном предназначен для приложений Node.js, но работает и с остальными языками программирования. Чтобы запустить приложение, используем команды в консоли.
Для остальных языков программирования (на примере Python 3):
Если ваше приложение завершит работу с ошибкой, PM2 автоматически перезапустит его, что очень удобно.
После запуска скриптов и приложений можно посмотреть информацию о них с помощью команды в консоли:
Пример того, что мы увидим:
В таблице показано количество рестартов, потребляемая память и нагрузка на процессор от приложений.
Для удаления, запуска, рестарта и остановки приложений из списка нужно посмотреть порядковый номер (id) процесса в таблице, которую можно вызвать командой, указанной выше, и написать команды в консоли.
Удаление из списка:
Также можно просмотреть логи отдельных приложений. Для этого используем эту команду:
И выбираем свое приложение из списка.
Если вам неудобно следить за логами и запуском приложений через консоль, то это можно делать даже в браузере, установив веб-версию PM2 одной командой:
После этого вводим свои данные для регистрации и переходим по ссылке, которая отобразится в консоли.
Пример того, что мы увидим:
Мы разобрали основные команды менеджера процессов. Удачи в ваших проектах!
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 для каждого домена отвечает свое приложение.
Читайте также: