如何安装PM2以在Production Server上运行Node.js应用程序

PM2是Node.js的免费开源,高级,高效和跨平台的生产级流程管理器,具有内置负载均衡器。

PM2Node.js的免费开源,高级,高效和跨平台的生产级流程管理器,具有内置负载均衡器。 它适用于Linux,MacOS以及Windows。 它支持应用程序监控,高效管理微服务/流程,以群集模式运行应用程序,正常启动和关闭应用程序。

它通过自动重启保持您的应用程序“ 永远活着 ”,并且可以启用系统启动,从而允许高可用性HA )配置或体系结构。

值得注意的是, PM2允许您以群集模式运行应用程序,而无需对代码进行任何更改(这也取决于服务器上的CPU核心数)。 它还允许您轻松管理应用程序日志等等。

此外,它还对ExpressAdonis JsSailsHapi等主要Node.js框架提供了令人难以置信的支持,无需进行任何代码更改。 PM2正被IBMMicrosoftPayPal公司使用。

在本文中,我们将解释如何安装和使用PM2在Linux生产服务器中运行Nodejs应用程序。 我们将创建一个应用程序,用于演示PM2的一些基本功能,以便您开始使用它。

第1步:在Linux中安装Nodejs和NPM

1.要安装最新版本的Node.jsNPM ,首先需要在Linux发行版下启用官方NodeSource存储库,然后安装Node.jsNPM软件包,如图所示。

在Debian / Ubuntu上

---------- 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.现在,让我们创建一个测试应用程序(我们假设它有一个共享相同数据库的客户端和管理员端),微服务将分别在端口30003001上运行。

$ 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步:在Linux中安装PM2 Product Process Manager

3.如图所示,可以通过NPM安装最新稳定版的PM2

$ 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
使用PM2启动Nodejs App

使用PM2启动Nodejs App

第4步:如何在Linux中使用和管理PM2

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
列出所有PM2受管节点应用程序

列出所有PM2受管节点应用程序

7.通过运行以下命令来监视日志,自定义度量标准,来自所有进程的进程信息。

$ sudo pm2 monit
监控所有节点进程

监控所有节点进程

8.使用进程ID或名称查看所示的单个Node进程的详细信息。

$ sudo pm2 show 0
查看单个应用的详细信息

查看单个应用的详细信息

第5步:如何在Linux中使用PM2管理节点应用程序

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步:从Web浏览器访问节点应用程序

12.要从远程Web浏览器访问所有节点应用程序,首先需要在系统防火墙上打开以下端口,以允许客户端连接到应用程序,如图所示。

-------- 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从Web浏览器访问您的应用程序:

http://198.168.43.31:3000
http://198.168.43.31:3001 
从浏览器访问节点应用

从浏览器访问节点应用

最后但同样重要的是, PM2是一个简单的内置模块系统,用于扩展其核心功能,其中一些模块包括pm2-logrotate,pm2-webshel​​l,pm2-server-monit等等 - 你也可以创建和使用你的自己的模块。

有关更多信息,请访问PM2 GitHub存储库: https//github.com/Unitech/PM2/

就这样! PM2Node.js的高级,高效的生产级流程管理器,具有内置的负载均衡器。 在本文中,我们展示了如何安装和使用PM2来管理Linux中的Nodejs应用程序。 如果您有任何疑问,请通过下面的评论表发送给我们。