本文介绍在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 要是使用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: fsevents@1.2.7 (node_modules/pm2/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.7: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) pm2@3.4.0 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的基本方法讲完了。
相关主题 |