Linux系统中使和PM2管理多个Node应用程序

Posted aiguangyuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统中使和PM2管理多个Node应用程序相关的知识,希望对你有一定的参考价值。

1. 搭建Node生产环境

1. 下载二进制Node程序包

cd /mnt/

wget https://nodejs.org/dist/v14.17.0/node-v14.17.0-linux-x64.tar.xz

如果提示未找到wget这个命令,则需要安装该插件。

yum install -y wget

当然,也可以去Node的官网下载好二进制的包上传到服务器上对应的文件夹里去。

2. 解压二进制的程序包

首先解压 xz 包。

cd /mnt/

xz -d node-v14.17.0-linux-x64.tar.xz

然后解压 tar 包。

tar xvf node-v14.17.0-linux-x64.tar

3. 复制解压的程序包

为了区分运行程序与安装包文件,需要把解压后的二进制包放到另外一个文件夹中,为此,我们需要首先在指定的目录新建一个文件夹来存放该运行程序。

cd /usr/local/

mkdir node

将解压后的运行程序复制到node这个文件夹里面。

cd /mnt/

cp -rf node-v14.17.0-linux-x64/* /usr/local/node/

复制完成以后,进放node这个文件夹,执行bin目录下的node,即可看到node的版本。

cd /usr/local/node/

cd bin/

./node -v

4. 配置环境变量

为了能在全局访问node程序,需要在配置文件中添加环境变量。

(1). 编辑profile配置文件。

vi /etc/profile

(2). 把光标定位到文件内容最下面,按 i 键进入编辑模式,添加如下代环境变量代码。

export NODE_HOME=/usr/local/node/bin
export PATH=$NODE_HOME:$PATH

(3). 保存修改。

esc键退出编辑模式,输入:wq保存退出,执行以下命令让配置的环境变量生效。

cd /

source etc/profile

完成以上操作后,可以在全局任意一个目录执行node应用程序看是否完装成功。

node -v 

npm -v

 

2. 进程管理程序PM2

PM2 是一款非常优秀的 Node 进程管理工具,它有着丰富的特性:能够充分利用多核 CPU 且能够负载均衡、能够帮助应用在崩溃后、指定时间(cluster model)和超出最大内存限制等情况下实现自动重启。

PM2 是开源的基于 Node 的进程管理器,包括守护进程,监控,日志的一整套完整的功能。

1. 安装PM2

npm install -g pm2

如果用npm安装比较慢,可以先注册cnpm,然后用cnpm安装。

npm install cnpm -g --registry=https://registry.npm.taobao.org

2. 显示所有的进程

pm2 list

3. 启动某个应用进程

要启动某个应用进程,需要先进入到该程序中,以下以www.baidu.com这个应用网站为例。

cd /home/www_root/www_baidu_com/

用pm2启动该应用程序,需要注意的是,由于node.js应用程序启动的都是app.js文件,多个应用程序同时启动时,为了便于区分,启动时需要指定一个别名,别名通常就是网站的域名。

pm2 start app.js --name www_baidu_com

执行以上命令后,就启动了www.baidu.com这个应用程序的服务了,在浏览器中就可以访问这个域名了,如果有多个网站放在一个服务器下面,还可以用这个命令启动其它的应用程序,这样也就达到了在一个服务器下同时启动多个网站的目的。

由于pm2内建了负载均衡,即只有一个服务器时,也可以对一个服务开启多个进程。

pm2 start app.js -i 3 --name www_baidu_com

执行以上命令即对www_baidu_com开启了3个进程,3个进程会轮流进行访问分摊压力。 

4. 查看调试的打印输出

pm2 logs

如果你的服务器上有多个网站应用程序,上面这个命令在输出时不会区分是哪个网站应用程序输出的,如果想查看指定网站应用程序的输出,可以用pm2 list这个命令查看启动程序的idname,然后启动时指定id或是name后就可以。

# 按id输出某个进程的日志
pm2 logs 0

# 按name输出某个进程的日志
pm2 logs www_baidu_com

5. 关闭进程

# 停止所有进程
pm2 stop all

# 按id停止某个进程
pm2 stop 0

# 按name停止某个进程
pm2 stop www_baidu_com

6. 重启进程

# 重启所有进程
pm2 restart all

# 按id重启某个进程
pm2 restart 0

# 按name重启某个进程
pm2 restart www_baidu_com

7. 杀死进程

# 杀死全部进程
pm2 delete all 

# 按id杀死指定的进程
pm2 delete 0 

# 按name杀死指定的进程
pm2 delete www_baidu_com 

8. 重载进程

# 重载全部进程
pm2 reload all 

# 按id重载指定的进程
pm2 reload 0 

# 按name重载指定的进程
pm2 reload www_baidu_com 

9. 查看指定进程的总体信息

pm2 show www_baidu_com

 

3. 防火墙配置

在用pm2管理进程的时候,会涉及到一些防火墙的配置,主要有以下几种:

1. 查看防火墙所有打开的端口

firewall-cmd --zone=public --list-ports

2. 添加一个打开的端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

3. 移除一个打开的端口

firewall-cmd --zone= public --remove-port=3306/tcp --permanent

4. 重新载入,使配置生效

firewall-cmd --reload

以上是关于Linux系统中使和PM2管理多个Node应用程序的主要内容,如果未能解决你的问题,请参考以下文章

PM2 简单使用,守护node进程

使用PM2管理Node.js集群

pm2使用 node 进程管理

如何在同一台服务器起多个pm2进程

linux上利用pm2和nginx部署项目

linux安装pm2