本文介绍在RHEL/CentOS 8系统上安装和使用PM2的方法,它是Node.js应用程序的开源生产流程管理器,具有内置负载均衡器。使用PM2,您可以永久保持应用程序的活动,重新加载它们而不会导致停机并轻松执行其他Node.js常见的系统管理任务。PM2支持从Node.js 4.X开始的所有主要版本的Node.j,此外,它适用于Linux、macOS和Windows操作系统。
一、安装Nodejs和NPM
在安装PM2之前,我们需要安装Node.js和NPM,RHEL/CentOS自带Node.js 10和8:
$ sudo yum module list | grep nodejs
nodejs 10 [d] development, minimal, s2i, default [d] Javascript runtime
nodejs 8 development, minimal, s2i, default [d] Javascript runtime
安装的默认版本是Nodejs 10,但你可以指定要安装的Node.js的版本:
sudo yum module install nodejs:10
参考:在RHEL 8系统中安装Node.js 10的方法。
要是使用Node.js 8,运行:
sudo yum module install nodejs:8
等待安装完成然后检查版本:
$ node --version
v10.11.0
你可能还需要安装用于构建节点软件的开发工具:
sudo yum install -y gcc-c++ make
二、安装PM2
安装Node.js后,继续安装PM2进程管理器,选项-g用于全局安装:
sudo npm i -g pm2
安装输出信息如下:
/usr/bin/pm2 -> /usr/lib/node_modules/pm2/bin/pm2
/usr/bin/pm2-dev -> /usr/lib/node_modules/pm2/bin/pm2-dev
/usr/bin/pm2-docker -> /usr/lib/node_modules/pm2/bin/pm2-docker
/usr/bin/pm2-runtime -> /usr/lib/node_modules/pm2/bin/pm2-runtime
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/pm2/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"Linux","arch":"x64"})
updated 1 package in 16.992s
应将PM2安装到/usr/bin路径:
$ which pm2
/usr/bin/pm2
三、创建一个测试Node.js应用程序
创建一个项目文件夹:
mkdir hello-world-nodejs
切换到Project文件夹并使用以下数据创建app.js文件:
cd hello-world-nodejs
vi app.js
增加:
const http = require('http');
http.createServer(function(request, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end("Hello, World!\n");
}).listen(process.env.PORT);
console.log('App is running...');
四、在RHEL/CentOS 8上使用PM2
1、使用PM2启动应用程序:
$ pm2 start app.js
2、列出运行应用程序:
$ pm2 list
要监视目标进程,请使用:
$ sudo pm2 monitor
3、查看Node.js进程信息
首先获取进程ID:
$ sudo pm2 list
然后使用进程ID来提取更多信息:
$ sudo pm2 show <ProcessID>
见下面的例子:
4、将应用程序设置为启动时启动
使用pm2启动命令:
$ sudo pm2 startup
[PM2] Init System found: systemd
Platform systemd
Template
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target
[Service]
Type=forking
User=root
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity Environment=PATH=/sbin:/bin:/usr/sbin:/usr/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/root/.pm2
PIDFile=/root/.pm2/pm2.pid
ExecStart=/usr/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/usr/lib/node_modules/pm2/bin/pm2 kill
[Install]
WantedBy=multi-user.target
Target path
/etc/systemd/system/pm2-root.service
Command list
[ 'systemctl enable pm2-root' ]
[PM2] Writing init configuration in /etc/systemd/system/pm2-root.service
[PM2] Making script booting at startup…
[PM2] [-] Executing: systemctl enable pm2-root…
Created symlink /etc/systemd/system/multi-user.target.wants/pm2-root.service → /etc/systemd/system/pm2-root.service.
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save
[PM2] Remove init script via:
$ pm2 unstartup systemd
要禁用运行:
sudo pm2 unstartup
5、查看应用程序日志:
$ sudo pm2 logs
6、更新PM2
使用pm2 update命令来获取PM2更新:
sudo pm2 update
至此,使用PM2的基本方法讲完了。
- 1 玩客云刷armbian架设nginx php mysql 及可道私有云总结
- 2 centos安装好mysql但是无法启动问题(Job for mysqld.service failed because the control process exited with error code.)
- 3 Ubuntu缺少libncurses.so.5的解决办法
- 4 Grafana之Gauge和Bar Gauge使用(第十一篇)
- 5 RHEL 8 安装 Oracle 19c 提示缺少 libnsl.so.1
- 6 df空间占用已满,但du查看home目录空间占用却很少
- 7 linux-kernel – 将设备树中断标志映射到devm_request_irq
- 8 cron: can’t lock /var/run/crond.pid, otherpid may be 2699: Resource temporarily unavailable
- 9 vim.fault.GenericVmConfigFault
- 10 CentOS 7.7 yum方式安装配置Zabbix 4.0 LTS详解(二)
精彩评论