1.PM2的安装

PM2依赖于nodejs,所以我们首先来安装nodejs。由于我的运行平台是windows,所以直接打开官网下载.msi格式安装包。下载之后直接安装即可(记得选择想要的版本和X64)
image.png

安装之后,打开终端输入以下命令检查安装情况是否正常,如果能输出版本号,说明 Node.js 和 npm 安装正常

node -v
npm -v

接着终端运行以下命令将 PM2 安装到全局:

npm install -g pm2

安装之后,打开终端输入以下命令检查安装情况是否正常,如果能输出版本号,说明 PM2 安装正常

pm2 -v

2.PM2的创建应用操作和常规使用例子

先来介绍一下PM2的创建应用操作(以及相关参数):

# 给这个任务起名
--name {job_name} 或者 -n {job_name}

# 文件更新时自动重启任务
--watch

# 开启多进程
-i {num}

# 设置应用重新加载的内存阈值
--max-memory-restart <200MB>

# 定义日志路径
--log {log_path}

# 脚本额外参数
-- arg1 arg2 arg3

# 默认情况PM2自动重启应用。该命令禁用自动重启功能,即使应用因为崩溃或错误退出
--no-autorestart

# 设置cron定时任务
--cron {定时表达式}

上面的应用启动操作具体怎么写取决于你的使用场景,拿我的使用来举个例子:比如使用PM2启动一个flask代码,并将其命名为 flask_app

pm2 start "C:\Users\QINXIN\AppData\Local\Programs\Python\Python310\pythonw.exe" --name "flask_app" -- "C:\02-文档\python学习\my_toys\18_录音转文本\flask.py" --no-autorestart
  • "C:\Users\QINXIN\AppData\Local\Programs\Python\Python310\pythonw.exe"是解释器的具体路径,由于我这里需要python flask代码无窗口运行,所以需要指定使用pythonw.exe来当解释器而非使用python.exe,否则会弹出前台窗口(关闭前台窗口则flask无法运行)
  • --name flask_app 是给你的应用命名,方便管理。注意不要写中文,否则后续进程会出错
  • -- "C:\02-文档\python学习\my_toys\18_录音转文本\flask.py" 是代码路径,可以指定具体的路径,注意:--后面带有空格,再接代码路径!!
  • --no-autorestart 是禁用自动重启功能,即使应用因为崩溃或错误退出。

3.PM2的常用命令

前面提到的PM2的应用启动操作只是PM2命令的一个,其他常用命令还有:

  • 停止应用

    pm2 stop flask-app
  • 重启应用

    pm2 restart flask-app
  • 删除应用

    pm2 delete flask-app
  • 检查 PM2 运行状态

    pm2 list

    终端会进行以下输出,显示你的 Flask 应用正在运行:

    ┌───────┬────────────┬──────┬─────┬──────────┬───────┬────────┐
    │ Name  │ id         │ mode │ pid │ status   │ cpu   │ mem    │
    ├───────┼────────────┼──────┼─────┼──────────┼───────┼────────┤
    │ flask │ 0          │ fork │ 1234│ online   │ 0.1%  │ 20MB   │
    └───────┴────────────┴──────┴─────┴──────────┴───────┴────────┘
  • 确保 PM2 在系统重启后自动启动

    pm2 startup
  • 查看应用日志

    pm2 logs
  • 重启后自动恢复进程,保存当前 PM2 进程列表的状态到一个名为 dump.pm2 的文件中

    pm2 save
  • 恢复之前通过 pm2 save 命令保存的进程列表(通过 pm2 save 命令)如果你在系统重启后需要手动恢复所有进程,可以使用它。

    pm2 resurrect

4.PM2 在windows上开机自启动服务

pm2 save 命令用于保存当前pm2中的项目:

  • 持久化你的进程列表: 默认情况下,PM2 在重启或者服务器关闭时,不会自动恢复你之前运行的进程。pm2 save 命令会将当前运行的进程列表和它们的配置信息保存到一个 dump 文件(通常是 ~/.pm2/dump.pm2)。
  • 下次启动时自动恢复进程: 当你下次启动 PM2 时,PM2会自动加载这个 dump 文件,并启动其中保存的进程。就像一个快照,记录了你当前运行的所有应用以及它们的配置,下次启动时直接恢复到这个快照状态。

同时我们还需要安装 pm2-windows-service 模块,手动配置 Windows 服务来运行 PM2 并使其开机自启动比较繁琐,需要涉及注册表操作,创建服务脚本等等。pm2-windows-service 模块将这些复杂的操作封装起来,提供了一个简单的命令行接口:

  • pm2-windows-service 模块可以自动创建一个 Windows 服务,该服务会在系统启动时自动运行 PM2,并且会自动恢复之前使用 pm2 save 保存的进程列表

终端运行以下命令将 pm2-windows-service 安装到全局

npm install pm2-windows-service -g

总结来说,在你的pm2中已经有项目并且用 pm2 save 保存项目之后,当你下次重启windows,pm2-windows-service就会自动重启pm2,然后pm2会自动加载dump中的项目进程。实现项目的自启动管理


曼巴
1 声望0 粉丝