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这个命令查看启动程序的id和name,然后启动时指定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应用程序的主要内容,如果未能解决你的问题,请参考以下文章