目录
PM2管理器
一、 nodejs
1、 简介
今天介绍一个生产级的流程管理工具 PM2,通常我们说到 PM2 的时候,都是在说如何部署 Node.js 程序,但是实际上 PM2 很强大,不仅仅可以用来管理 Node.js,它还可以用来管理 Python、PHP、Ruby、perl 等等。
这里就以 Python 举例子,来看看 PM2 如何部署管理 Python 脚本。
但是,在部署之前,我们还需要安装nodejs
2、 安装
这里只使用脚本来演示
wget https://nodejs.org/dist/v16.17.0/node-v16.17.0-linux-x64.tar.xz # 获取压缩包
tar zxvf node-v16.17.0-linux-x64.tar.xz # 解压缩
cd node-v16.17.0-linux-x64 # 进入安装界面
./configure --prefix=/usr/local/node # 设置安装路径
make # 编译
make install # 安装
cd ..
rm -rf node-v16.17.0-linux-x64*
注意,这里编译安装可能会报错,使得无法安装成功
3、 问题
在编译安装的时候,如果我们的gcc
和g++
的版本过低,会无法编译成功
更新gcc
和g++
的版本
yum install centos-release-scl
yum install devtoolset-8-gcc* # 如果要安装7.的,则devtoolset-7-gcc*
scl enable devtoolset-8 bash # 激活对应的版本
gcc --version
g++ --version
但是这个激活,只是本次连接暂时的激活,不是永久激活,那么我们应该如何永久激活呢?
- 使用软链接
mv /usr/bin/gcc /usr/bin/gcc-4.8.5 ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc mv /usr/bin/g++ /usr/bin/g++-4.8.5 ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++ gcc --version g++ --version
然后再进行源码编译,就不会报错啦!
4、 环境变量
vim /etc/profile
编译自启动文件,在文件末尾写入
export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH
source /etc/profile
:修改完成后,重新加载文件,使得修改生效
最后,我们可以使用node -v
来检测是否安装成功
Nodejs 官网提供了编译好的 Linux 二进制包,你也可以下载下来直接应用,但是我还是更喜欢自己编译
5、 yum
通过包管理器来安装nodejs
curl -sL https://rpm.nodesource.com/setup_16.x | bash -
yum install nodejs -y
二、 PM2安装
安装完nodejs后,我们就开始进行pm2安装啦
我们使用npm包管理器来安装:
npm install pm2 -g # 安装
pm2 ls # 初始化
我们的pm2就安装完成啦
其实这个包的安装是挺简单的,下面让我们一起来看一下如何使用吧!
三、 基本使用
官方文档的位置:https://pm2.keymetrics.io/docs/usage/quick-start/
1、 管理进程
1.1 启动程序
启动任何类型的应用程序,例如 bash 命令、脚本、二进制文件
pm2 start api.js
pm2 start "npm run start"
pm2 start "ls -la"
pm2 start app.py
传递参数启动
pm2 start api.js --attach # 启动的同时,检测日志流
pm2 start api.js -- arg1 arg2 # 启动的同时,传递参数给程序
使用配置文件来启动:
关于配置文件的详解,请看官方文档:https://pm2.keymetrics.io/docs/usage/application-declaration/
-
生成配置文件
pm2 ecosystem # or pm2 init
-
修改配置文件
module.exports = { apps : [{ name : 'API', //应用名 script : 'app.js', //应用文件位置 env: { PM2_SERVE_PATH: ".", //静态服务路径 PM2_SERVE_PORT: 8080, //静态服务器访问端口 NODE_ENV: 'development' //启动默认模式 }, env_production : { NODE_ENV: 'production' //使用production模式 pm2 start ecosystem.config.js --env production }, instances:"max", //将应用程序分布在所有CPU核心上,可以是整数或负数 watch:true, //监听模式 output: './out.log', //指定日志标准输出文件及位置 error: './error.log', //错误输出日志文件及位置,pm2 install pm2-logrotate进行日志文件拆分 merge_logs: true, //集群情况下,可以合并日志 log_type:"json", //日志类型 log_date_format: "DD-MM-YYYY", //日志日期记录格式 }], deploy : { production : { user : 'node', //ssh 用户 host : '212.83.163.1', //ssh 地址 ref : 'origin/master', //GIT远程/分支 repo : 'git@github.com:repo.git', //git地址 path : '/var/www/production', //服务器文件路径 post-deploy : 'npm install && pm2 reload ecosystem.config.js --env production' //部署后的动作 } }
-
启动程序
pm2 start ecosystem.config.js --env production
1.2 流程
pm2 restart app_name
pm2 reload app_name
pm2 stop app_name
pm2 delete app_name
而不是
app_name
你可以通过:
all
对所有进程采取行动id
作用于特定的进程 ID
1.3 检测运行状态
列出 PM2 管理的所有应用程序的状态:
pm2 [list|ls|status]
显示日志:
pm2 logs
pm2 logs --lines 200 # 指定输出的日志
仪表盘:
pm2 monit # 基于终端的仪表板
pm2 plus # 监控和诊断 Web 界面
1.4 状态保持
使用您在服务器启动/重新启动时管理的进程重新启动 PM2 至关重要。要解决此问题,只需运行此命令以生成活动启动脚本:
pm2 startup
pm2 save
pm2 的常用方法就讲到这了,更详细的功能请到官方文档学习!
标签:gcc,PM2,pm2,--,流程,管理工具,start,安装 From: https://www.cnblogs.com/liuzhongkun/p/16717449.html