linux nodejs 安装 pm2 及 pm2的常用命令

安装

1. 安装:
npm install pm2 -g
安装完成之后要创建软链接(我自己测试安装时,发现没有创建软链接也是能用的,即下面2、3步不需要)。

2. 用find命令查找pm2安装目录:
find / -name pm2

3. 建立软链接:
ln -s /usr/local/src/app/node-v15.4.0-linux-x64/lib/node_modules/pm2/bin/pm2 /usr/local/bin/
-s 后面的路径就是在步骤2查找到的路径, 后面的 /usr/local/bin/ 不用改.
要注意的是建立软链接的源路径不能是一个文件夹,也就是说,要对应到pm2文件夹里面的pm2,也就是:pm2/bin/pm2

4. 测试安装
查看版本号:

pm2 -v

没有出现pm2 not command. 说明我们配置成功了。

5. 启动服务
pm2 start app.js

 

执行执行环境参数和启动配置:

1、根目录创建启动文件:ecosystem.config.js

module.exports = {
  apps: [{
    name: 'xxx',
    script: 'app.js',
    cwd: './',
    watch: false,
    max_memory_restart: '900M',
    log_date_format: 'YYYY-MM-DD HH:mm:ss',
    error_file: '/root/xxx/logs/xxx.error.log',
    out_file: '/root/xxx/logs/xxx.out.log',
    merge_logs: true,
    env: {
      NODE_ENV: 'prod',
      RUN_ENV: 'prod',
    },
    env_prod: {
      NODE_ENV: 'prod',
      RUN_ENV: 'prod',
    },
    env_dev: {
      NODE_ENV: 'dev',
      RUN_ENV: 'dev',
    },
    watch: ['xxx'], // 这个应该是表示热重启,即监控代码变化后,自动重启用的(xxx和上面的name必须一致?) 待测试
    ignore_watch: ['node_modules', 'logs', 'build'],
  }]
};

2、启动命令

pm2 start ecosystem.config.js --env production --interpreter babel-node
 --interpreter 什么用?
 babel-node 什么用?
其他:

3.查看版本 pm2 -v

4.查看启动的列表  pm2 list

5.关闭 pm2 stop  id|name

6.pm2 show server 查看运行情况

7.重载 pm2 reload server (前提是启动时指定了name为server

    ps:reload 可以实现0秒宕机加载新代码

8.重启 pm2 restart server(前提是启动时指定了name为server)

    ps:重新启动

9.开发中使用 pm2 start server.js --name server --watch (如果在server.js中已经配置了name, 则--name可以不需要,如果在配置文件配置了watch,--watch是否也可以不需要?[待验证])

    ps:修改代码无需重启,自动更新,相同功能的插件有supervisor

10.监控 pm2 monit

 

常用命令

npm install pm2 -g  //安装pm2
cd  {项目目录}
pm2 start "vendors/server/app.js" --name yapi //pm2管理yapi服务
pm2 info yapi //查看服务信息(这个可以看到日志在哪个位置
pm2 stop yapi //停止服务
pm2 restart yapi //重启服务

之前在wnidows上直接使用 pm2 start *.js --name *** 的方式在后台服务启动后(不显示窗体),不知道到底执行成功没有,也不知道日志在哪里,后来通过 pm2 info yapi 找到了日志目录。

E:\etc\.pm2\logs

 

1、在windows中使用了任务计划,并使用了Sytem角色来执行pm2启动脚本。在终端查看pm2状态时[pm2 list],报错:

connect EPERM //./pipe/rpc.sock
[PM2] Spawning PM2 daemon with pm2_home=C:\Users\Administrator\.pm2
events.js:291
      throw er; // Unhandled 'error' event
      ^

Error: connect EPERM //./pipe/rpc.sock
    at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1145:16)
Emitted 'error' event on ReqSocket instance at:
    at Socket.<anonymous> (D:\nodejs\node_global\node_modules\pm2\node_modules\pm2-axon\lib\sockets\sock.js:201:49)
    at Socket.emit (events.js:314:20)
    at emitErrorNT (internal/streams/destroy.js:106:8)
    at emitErrorCloseNT (internal/streams/destroy.js:74:3)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  errno: -4048,
  code: 'EPERM',
  syscall: 'connect',
  address: '//./pipe/rpc.sock'
}

  经查,是因为我启动的角色问题,然后使用管理员身份打开cmd,再执行,即正常了。

posted @ 2022-09-20 16:34  流失的痕迹  阅读(3279)  评论(0编辑  收藏  举报