如何在生产服务器上安装PM2运行Node.js应用程序


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

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

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

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

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

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

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

在Debian/Ubuntu上

---------- 安装 Node.js v11.x ----------
$ curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
$ sudo apt-get install -y nodejs

---------- 安装 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上

---------- 安装 Node.js v11.x ----------
$ curl -sL https://rpm.nodesource.com/setup_11.x | bash -

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

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

$ sudo npm i -g pm2

4.安装PM2后,可以使用以下命令启动node应用程序。

$ 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

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

5.例如,使用-i标志以集群模式启动应用程序以指定实例数。

$ sudo pm2 start /var/www/html/app/server.js -i 4
$ sudo pm2 scale 0 8   #将群集应用扩展到8个进程

6.要列出所有节点应用程序(进程/微服务),请运行以下命令。

$ sudo pm2 list

列出所有PM2管理node应用程序

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

$ sudo pm2 monit

监控所有Node进程

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

$ sudo pm2 show 0

查看单个应用的详细信息

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

9.以下是您应注意的一些常见流程(单个或所有)管理命令的列表。

$ sudo pm2 stop all                    #停止所有应用
$ sudo pm2 stop 0                      #停止ID为0的进程
$ sudo pm2 restart all                #重启所有应用
$ sudo pm2 reset 0           #重置所有计数器
$ sudo pm2 delete all                  #杀死并删除所有应用
$ sudo pm2 delete 1                  #杀死并删除ID为1的应用

10.要管理应用程序日志,请使用以下命令。

$ sudo pm2 logs                       #查看所有进程的日志
$ sudo pm2 logs 1           #查看应用1的日志
$ sudo pm2 logs --json               #以JSON格式查看所有进程的日志
$ sudo pm2 flush   #刷新所有日志

11.要管理PM2进程,请使用以下命令。

$ sudo pm2 startup            #启用PM2在启动系统时启动
$ sudo pm2 startup systemd    #或者将systemd明确指定为启动系统
$ sudo pm2 save              #重启时保存当前进程列表
$ sudo pm2 unstartup          #禁用PM2从系统引导启动
$ sudo pm2 update      #更新PM2包

步骤6:从Web浏览器访问node应用程序

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

-------- Debian 与 Ubuntu --------
$ sudo ufw allow 3000/tcp
$ sudo ufw allow 3001/tcp
$ sudo ufw reload

-------- RHEL 与 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-webshell,pm2-server-monit等等 - 你也可以创建和使用你的 自己的模块。

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

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

linuxboy的RSS地址:https://www.linuxboy.net/rssFeed.aspx

本文永久更新链接地址:https://www.linuxboy.net/Linux/2019-07/159432.htm

相关内容