• 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,再执行,即正常了。

  • 相关阅读:
    一起来构建前端工具链吧~(新建项目)
    我的前端故事----高仿支付宝密码输入框
    我的前端故事----疯狂倒计时(requestAnimationFrame)
    Oracle 导入导出SQL 查看登录用户表个数
    Oracle11g使用exp导出空表
    Spring Boot(二)Application events and listeners
    Spring Boot(一)启动方式
    Android BroadcastReceiver
    钱格式化
    Intellij idea 快键键
  • 原文地址:https://www.cnblogs.com/Denny_Yang/p/16711559.html
Copyright © 2020-2023  润新知