首页 > 其他分享 >流程管理工具 PM2

流程管理工具 PM2

时间:2022-09-21 22:44:41浏览次数:87  
标签:gcc PM2 pm2 -- 流程 管理工具 start 安装

目录

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 : '[email protected]: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

相关文章

  • NGUI 图片管理工具 AtlasMaker
    1.AtlasMaker制作图集1.什么是Atlas?Atlas:图集,图片的一个集合,或者说打包格式。NGUI中的UISprite组件显示图片,需要用到图集,就和UILabel显示需要用到字体是一样的道......
  • Java流程控制01(Scanner用法)
    使用next():packageScanner;importjava.util.Scanner;publicclassDemo01{publicstaticvoidmain(String[]args){//创建一个扫描器对象,用于接受......
  • Activiti7 多实例子流程
    顾名思义,子流程是一个包含其他活动、网关、事件等的活动,这些活动本身形成了一个流程,该流程是更大流程的一部分。使用子流程确实有一些限制:一个子流程只能有一个none类型......
  • 使用pm2管理Node进程
    1.PM2是啥简单而言,就是一个自带负载均衡的node应用进程管理器2.为什么使用PM2在使用nodejs启动项目时,一个项目就会对应一个终端,而且如果终端关闭了,项目也就无......
  • 测试:禅道使用流程大纲
    管理员*、添加用户。*、项目集:有预算,有状态(挂起,暂停)、子项目集。*、产品:(关联项目集),指定负责:产品、测试、发布(通常为研发经理)。*、添加需求:(关联产品),维护模块。*、创建产品开......
  • git 公司内部分支流程
    目录git分支定义公司内部流程图git分支定义公司内部流程图黄色是发版点,蓝色是修改代码点,蓝色箭头表示需要代码走查的分支合并。分支定义:dev受保护分支,开发分支,发......
  • dotnet 为大型应用接入 ApplicationStartupManager 启动流程框架
    对于大型的应用软件,特别是客户端应用软件,应用启动过程中,需要执行大量的逻辑,包括各个模块的初始化和注册等等逻辑。大型应用软件的启动过程都是非常复杂的,而客户端应用软件......
  • 【小程序】小程序认证服务接入流程分享
    ​1、 agc网站创建web应用,并启用相关服务:创建web应用    ​启用认证服务​获取应用配置信息 ​    2、认证接口调用通过邮箱/手机号获取验证......
  • dotnet 为大型应用接入 ApplicationStartupManager 启动流程框架
    对于大型的应用软件,特别是客户端应用软件,应用启动过程中,需要执行大量的逻辑,包括各个模块的初始化和注册等等逻辑。大型应用软件的启动过程都是非常复杂的,而客户端应用软件......
  • Python实验报告——第3章 流程控制语句
    实验报告实例01:判断输入的是不是黄蓉所说的数代码如下:运行结果如下:  实例02:验证瑛姑给出的答案是否正确代码如下: 运行结果如下:  实例03:输出......