美文网首页
Node.js 服务部署(pm2 详细使用)

Node.js 服务部署(pm2 详细使用)

作者: 天涯笑笑生 | 来源:发表于2019-04-08 10:35 被阅读0次

    一、相关介绍

    1.1 跨平台设置使用环境变量

    cross-env
    github
    npmjs

    1.2 应用管理

    • supervisor
      一个客户端/服务器系统,允许其用户在类UNIX操作系统上控制许多进程
      github(star5.2k)

    • node-supervisor
      nodejs开发的小supervisor,可以运行程序并监视代码修改,依次实现热加载
      github(star3.5k)

    • forever
      一个简单的CLI工具,确保给定脚本永久运行
      github(star12k)

    • nodemon
      用于开发中服务热加载
      github(star17.6k)

    • pm2
      github(star28.4k)
      具有负载均衡器的Nodejs 应用程序进程管理工具(后面重点介绍

    • 一些不太热门的
      node-windows
      用于Windows 的nodejs脚本,支持进程守护,事件日志,账户控制等功能
      (node-mac & node-linux)同

    二、pm2

    优点

    • 管理,监控并保持永久运行Node.js 应用
    • 经常接收超过1800次的测试攻击
    • 可以运行在Linux 、 macOS 、 Windows平台
    • 支持Node.js 4.X以上的所有版本
    • 可以用于Python, Ruby等其他语言的应用程序
    • 使用简单

    简单应用

    首先全局安装pm2

    $ npm install pm2@latest -g
    

    启动应用

    $ pm2 start app.js
    

    通过配置启动

    $ pm2 start process.yml
    

    process.yml(注:yml格式)

    apps:
      - script : app.js
        name : 'app'
        instances: 3
        exec_mode: cluster
        watch: true
    

    其他常用操作具体使用可参考官网文档

    pm2 list
    pm2 logs
    pm2 start app.js -i max
    pm2 restart <id|name>
    pm2 show <id|name>
    pm2 stop <id|name>
    pm2 delete <id|name>
    pm2 describe <id|name>
    pm2 monit
    

    注:id或name 可替换为all,表所有

    开机自启动

    • 保存当前进程状态
    $ pm2 save
    
    • 生成开机自启动脚本
      注:自动检测平台
    $ pm2 startup
    
    • 复制脚本执行

    • 移除启动脚本

    $ pm2 unstartup
    

    ps:上述不适合Windows系统

    使用其他库生成自启动脚本

    > npm install pm2-windows-startup -g
    > pm2-startup install
    

    pm2 将在启动时恢复已保存的进程

    日志分割

    • pm2 安装
      pm2 install pm2-logrotate
    • 配置
      max_size 文件最大值,默认10M
      retain 循环数量,默认30
      compress 是否启用压缩,默认false
      dateFormat YYYY-MM-DD_HH-mm-ss
      rotateModule
      workerInterval 检查日志大小间隔
      rotateInterval
      TZ

    相关文章

      网友评论

          本文标题:Node.js 服务部署(pm2 详细使用)

          本文链接:https://www.haomeiwen.com/subject/ashtvqtx.html