Как установить PM2 для запуска приложений Node.js на рабочем сервере
PM2 — это бесплатный, расширенный, эффективный и кроссплатформенный менеджер процессов производственного уровня с открытым исходным кодом для Node.js со встроенным балансировщиком нагрузки. Он работает как на Linux, MacOS, так и на Windows. Он поддерживает мониторинг приложений, эффективное управление микросервисами/процессами, запуск приложений в режиме кластера, плавный запуск и завершение работы приложений.
Он сохраняет ваши приложения «вечными» живыми с автоматическим перезапуском и может быть включен при загрузке системы, что обеспечивает высокую доступность (HA). конфигурации или архитектуры.
Примечательно, что PM2 позволяет запускать приложения в режиме кластера без внесения каких-либо изменений в код (это также зависит от количества ядер ЦП на вашем сервере). Это также позволяет вам легко управлять журналами приложений и многим другим.
Кроме того, он также обеспечивает невероятную поддержку основных фреймворков Node.js, таких как Express, Adonis Js, Sails. , Hapi и другие без необходимости внесения изменений в код. PM2 используется такими компаниями, как IBM, Microsoft, PayPal и другими.
В этой статье мы объясним, как установить и использовать PM2 для запуска приложений Nodejs на рабочем сервере Linux. Мы создадим приложение для демонстрации некоторых фундаментальных функций PM2, чтобы вы могли начать с ним работать.
Шаг 1. Установите Nodejs и NPM в Linux
1. Чтобы установить самую последнюю версию Node.js и NPM, сначала вам необходимо включить официальный репозиторий NodeSource в вашем дистрибутиве Linux, а затем установить Пакеты Node.js и NPM, как показано.
В Дебиан/Убунту
---------- Install Node.js v11.x ----------
curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
sudo apt-get install -y nodejs
---------- Install Node.js v10.x ----------
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs
В CentOS/RHEL и Fedora
---------- Install Node.js v11.x ----------
curl -sL https://rpm.nodesource.com/setup_11.x | bash -
---------- Install Node.js v10.x ----------
curl -sL https://rpm.nodesource.com/setup_10.x | bash -
Шаг 2. Создайте приложение Nodejs
2. Теперь давайте создадим тестовое приложение (предположим, что у него есть клиентская и административная стороны, которые используют одну и ту же базу данных), микросервисы будут работать на портах 3000 и 3001 соответственно.
sudo mkdir -p /var/www/html/app
sudo mkdir -p /var/www/html/adminside
sudo vim /var/www/html/app/server.js
sudo vim /var/www/html/adminside/server.js
Затем скопируйте и вставьте следующие фрагменты кода в файлы server.js
(замените 192.168.43.31 на IP-адрес вашего сервера).
##mainapp code
const http = require('http');
const hostname = '192.168.43.31';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('This is the Main App!\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
##adminside code
const http = require('http');
const hostname = '192.168.43.31';
const port = 3001;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('This is the Admin Side!\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
Сохраните файл и выйдите.
Шаг 3. Установите Product Process Manager PM2 в Linux
3. Последнюю стабильную версию PM2 можно установить через NPM, как показано.
sudo npm i -g pm2
4. После установки PM2 вы можете запускать приложения узла с помощью следующих команд.
sudo node /var/www/html/app/server.js
sudo node /var/www/html/adminside/server.js
Обратите внимание, что в производственной среде их следует запускать с помощью PM2, как показано (команда sudo может не понадобиться, если ваше приложение хранится в месте, где обычный пользователь имеет разрешения на чтение и запись).
sudo pm2 start /var/www/html/app/server.js
sudo pm2 start /var/www/html/adminside/server.js
Шаг 4. Как использовать и управлять PM2 в Linux
5. Чтобы запустить приложение в режиме кластера, используйте флаг -i
, чтобы указать, например, количество экземпляров.
sudo pm2 start /var/www/html/app/server.js -i 4
sudo pm2 scale 0 8 #scale cluster app to 8 processes
6. Чтобы просмотреть все приложения узла (процессы/микросервисы), выполните следующую команду.
sudo pm2 list
7. Чтобы отслеживать журналы, пользовательские метрики и обрабатывать информацию всех процессов, выполните следующую команду.
sudo pm2 monit
8. Чтобы просмотреть сведения об одном процессе узла, как показано, используя идентификатор или имя процесса.
sudo pm2 show 0
Шаг 5. Как управлять приложениями Node с помощью PM2 в Linux
9. Ниже приведен список некоторых общих команд управления процессами (одним или всеми), на которые следует обратить внимание.
sudo pm2 stop all #stop all apps
sudo pm2 stop 0 #stop process with ID 0
sudo pm2 restart all #restart all apps
sudo pm2 reset 0 #reset all counters
sudo pm2 delete all #kill and remove all apps
sudo pm2 delete 1 #kill and delete app with ID 1
10. Для управления журналами приложений используйте следующие команды.
sudo pm2 logs #view logs for all processes
sudo pm2 logs 1 #view logs for app 1
sudo pm2 logs --json #view logs for all processes in JSON format
sudo pm2 flush #flush all logs
11. Для управления процессом PM2 используйте следующие команды.
sudo pm2 startup #enable PM2 to start at system boot
sudo pm2 startup systemd #or explicitly specify systemd as startup system
sudo pm2 save #save current process list on reboot
sudo pm2 unstartup #disable PM2 from starting at system boot
sudo pm2 update #update PM2 package
Шаг 6. Доступ к приложениям Node из веб-браузера
12. Чтобы получить доступ ко всем приложениям вашего узла из удаленного веб-браузера, сначала вам необходимо открыть следующие порты на брандмауэре вашей системы, чтобы разрешить клиентские подключения к приложениям, как показано.
-------- Debian and Ubuntu --------
sudo ufw allow 3000/tcp
sudo ufw allow 3001/tcp
sudo ufw reload
-------- RHEL and CentOS --------
firewall-cmd --permanent --add-port=3000/tcp
firewall-cmd --permanent --add-port=3001/tcp
firewall-cmd --reload
13. Затем получите доступ к своим приложениям из веб-браузера по этим URL-адресам:
http://198.168.43.31:3000
http://198.168.43.31:3001
И последнее, но не менее важное: PM2 — это простая встроенная система модулей, расширяющая его основные возможности. Некоторые из модулей включают pm2-logrotate, pm2-webshell, pm2-server-monit и другие. вы также можете создавать и использовать свои собственные модули.
Для получения дополнительной информации перейдите в репозиторий PM2 на GitHub: https://github.com/Unitech/PM2/.
Вот и все! PM2 — это продвинутый и эффективный менеджер процессов производственного уровня для Node.js со встроенным балансировщиком нагрузки. В этой статье мы показали, как установить и использовать PM2 для управления приложениями Nodejs в Linux. Если у вас есть какие-либо вопросы, отправьте их через форму комментариев ниже.