IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 流程管理工具 PM2 -> 正文阅读

[系统运维]流程管理工具 PM2

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、 问题

在编译安装的时候,如果我们的gccg++的版本过低,会无法编译成功

更新gccg++的版本

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

2、 日志管理

pm2 logs            //查看所有应用日志
pm2 logs [Name]    //根据指定应用名查看应用日志
pm2 logs [ID]      //根据指定应用ID查看应用日志
pm2 flush  // 清空日志信息

3、 均衡负载

pm2 serve ./dist 9090        # 静态服务器,将目录dist作为静态服务器根目录,端口为9090
# max 表示PM2将自动检测可用CPU的数量并运行尽可能多的进程
# max可以自定义,如果是4核CPU,设置为2者占用2个
pm2 start app.js -i max

pm2 的常用方法就讲到这了,更详细的功能请到官方文档学习!

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 21:30:38  更:2022-09-24 21:30:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 19:43:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计