windows下pm2安装使用

1. PM2简介

PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。

PM2的运行需要node 环境和npm的支持,node 环境和npm安装检查:

 

PM2常用命令:

--watch:监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件。

-i --instances:启用多少个实例,可用于负载均衡。如果-i 0或者-i max,则根据当前机器核数确定实例数目。

--ignore-watch:排除监听的目录/文件,可以是特定的文件名,也可以是正则。例如,–ignore-watch=”test node_modules “some scripts”“

-n --name:应用的名称,查看应用信息的时候可以用到。

-o --output :标准输出日志文件的路径。

-e --error :错误输出日志文件的路径。

--interpreter :the interpreter pm2 should use for executing app (bash,python…)。比如你用的coffee script来编写应用。

参考官网文档

2. 安装

1) 全局安装

管理员cmd窗口运行: npm install pm2 -g

 

2) 安装windows自启动包

npm install pm2-windows-startup -g

 

3) 执行命令

pm2-startup install 

 

4) 查看是否安装成功

pm2 -v

 

3. PM2使用
1) 官方样例使用指南

pm2 examples

2) 启动

语法: pm2 start 路径 --name 名称 --watch

pm2 start app.js //启动app.js应用

pm2 start app.js --name demo //启动应用并设置name

pm2 start app.sh //脚本启动

举例(注意命令行空格):

pm2 start D:/XLDNPSService/XLConsulInfoExportTool/XLConsulInfoExportTool.exe --name XLConsulInfoExportTool --watch

 

3) 查看列表

pm2 ls

4) 停止

pm2 stop all //停止所有应用

pm2 stop [名称] //根据应用名停止指定应用

pm2 stop [ID] //根据应用id停止指定应用

举例: pm2 stop XLConsulInfoExportTool

5) 重启

pm2 restart 名称 //同时杀死并重启所有进程。短时间内服务不可用。生成环境推荐使用reload

举例: pm2 restart XLConsulInfoExportTool

6) 删除进程

pm2 delete all //关闭并删除应用

pm2 delete [AppName] //根据应用名关闭并删除应用

pm2 delete [ID] //根据应用ID关闭并删除应用

举例: pm2 delete XLConsulInfoExportTool

7) 自动重启

pm2 start 路径 --name 名称 --watch

pm2 start app.js –watch

8) 日志查看

除了可以打开日志文件查看日志外,还可以通过pm2 logs来查看实时日志

pm2 logs

9) 更新

pm2 update

10) 保存

pm2 save

11) 创建开机启动

pm2 startup

补充命令:

$ npm install pm2 -g     # 命令行安装 pm2 
$ pm2 start app.js -i 4  # 后台运行pm2,启动4个app.js 
                         # 也可以把'max' 参数传递给 start
                         # 正确的进程数目依赖于Cpu的核心数目
$ pm2 start app.js --name my-api # 命名进程
$ pm2 list               # 显示所有进程状态
$ pm2 monit              # 监视所有进程
$ pm2 logs               # 显示所有进程日志
$ pm2 stop all           # 停止所有进程
$ pm2 restart all        # 重启所有进程
$ pm2 reload all         # 0 秒停机重载进程 (用于 NETWORKED 进程)
$ pm2 stop 0             # 停止指定的进程
$ pm2 restart 0          # 重启指定的进程
$ pm2 startup            # 产生 init 脚本 保持进程活着
$ pm2 web                # 运行健壮的 computer API endpoint (http://localhost:9615)
$ pm2 delete 0           # 杀死指定的进程
$ pm2 delete all         # 杀死全部进程

 参考链接

4. PM2配置文件方式启动

1) 生成示例配置文件

pm2 ecosystem        //生成一个示例JSON配置文件

pm2 init 

 2) 配置文件示例(实际使用自行修改)

{
    "apps": {
        "name": "wuwu",                             // 项目名          
        "script": "./bin/www",                      // 执行文件
        "cwd": "./",                                // 根目录
        "args": "",                                 // 传递给脚本的参数
        "interpreter": "",                          // 指定的脚本解释器
        "interpreter_args": "",                     // 传递给解释器的参数
        "watch": true,                              // 是否监听文件变动然后重启
        "ignore_watch": [                           // 不用监听的文件
            "node_modules",
            "logs"
        ],
        "exec_mode": "cluster_mode",                // 应用启动模式,支持fork和cluster模式
        "instances": 4,                             // 应用启动实例个数,仅在cluster模式有效 默认为fork;或者 max
        "max_memory_restart": 8,                    // 最大内存限制数,超出自动重启
        "error_file": "./logs/app-err.log",         // 错误日志文件
        "out_file": "./logs/app-out.log",           // 正常日志文件
        "merge_logs": true,                         // 设置追加日志而不是新建日志
        "log_date_format": "YYYY-MM-DD HH:mm:ss",   // 指定日志文件的时间格式
        "min_uptime": "60s",                        // 应用运行少于时间被认为是异常启动
        "max_restarts": 30,                         // 最大异常重启次数,即小于min_uptime运行时间重启次数;
        "autorestart": true,                        // 默认为true, 发生异常的情况下自动重启
        "cron_restart": "",                         // crontab时间格式重启应用,目前只支持cluster模式;
        "restart_delay": "60s"                      // 异常重启情况下,延时重启时间
        "env": {
           "NODE_ENV": "production",                // 环境参数,当前指定为生产环境 process.env.NODE_ENV
           "REMOTE_ADDR": "爱上大声地"               // process.env.REMOTE_ADDR
        },
        "env_dev": {
            "NODE_ENV": "development",              // 环境参数,当前指定为开发环境 pm2 start app.js --env_dev
            "REMOTE_ADDR": ""
        },
        "env_test": {                               // 环境参数,当前指定为测试环境 pm2 start app.js --env_test
            "NODE_ENV": "test",
            "REMOTE_ADDR": ""
        }
    }
}

 

posted @ 2024-03-18 16:41  曲琦  阅读(2065)  评论(0编辑  收藏  举报