Поиск по сайту:

Как установить 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. Если у вас есть какие-либо вопросы, отправьте их через форму комментариев ниже.