• 三狮军团首秀 只有两千多球迷观战 2019-05-19
  • 人民网2017呼和浩特徒步迎新活动--内蒙古频道--人民网 2019-05-19
  • 【品牌资讯】环球网斩获“全国行业新闻网站传播力2017年6月榜”多项冠军 2019-05-15
  • 深化对经济工作主线的认识 从供需关系看供给侧结构性改革 2019-05-15
  • 格拉斯哥艺术学院起火 4年前曾遭火灾仍在整修 2019-05-14
  • 回复@地瓜干17世:猪临死才会嚎叫呢~ 2019-05-14
  • 婺源古村溪中发现鹰嘴龟 2019-05-08
  • 编辑评测:高夫净源控油平衡露 极速补水长效控油 2019-05-08
  • 四部门发文规范特色小镇建设防止“新瓶装旧酒” 2019-05-02
  • 【地球的盛会文明的聚会艺术的盛宴四海一家足球为人类和平幸福而荣耀!!!普京是当今人类世界最优秀的一代伟人俄罗斯赢啦!!!】 2019-04-29
  • 学习新思想,千万师生同上一堂课 2019-04-28
  • 你这种个体户都干不了的老蚕也配谈计划?真是笑死人不偿命哦? 2019-04-23
  • 感人!的哥带着患病父亲出车 孝心感动乘客 2019-04-23
  • 图解:习近平在纪念马克思诞辰200周年大会上讲话的16个金句 2019-04-16
  • 感触名家笔下的端午文化 吃香粽原来可以这样"文艺" 2019-04-16
  • 快三玩法中奖规则:使用pm2部署node生产环境的方法步骤

    山西体彩11选5直选遗漏 www.caxru.com  更新时间:2019年03月09日 09:48:44   作者:keywords   我要评论

    这篇文章主要介绍了使用pm2部署node生产环境的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    一、PM2是什么

    • 是可以用于生产环境的Nodejs的进程管理工具,并且它内置一个负载均衡。它不仅可以保证服务不会中断一直在线,并且提供0秒reload功能,还有其他一系列进程管理、监控功能。并且使用起来非常简单。
    • 嗯嗯,最好的用处就是监控我们的生产环境下的node程序运行状态,让它给我们日以继日的处于工作状态。
    • pm2官方文档

    二、为森么要使用pm2

    • 原始社会的我们开发node服务端程序一般过程:
      • 编写好node程序app.js,运行node app.js;或者写入script使用npm运行;打开浏览器访问;
      • 好像需要修改内容,浏览器对修改的内容没有显示出来?->node app.js->再次运行;
      • 浏览器忽然访问不到服务,好像出错啦?重启下->node app.js->再次运行;
      • 哎呀开了好多控制台窗口,一不小心关闭了,服务又访问不到了,继续打开控制台->node app.js->再次运行;
    • 好崩溃!好像有个工具nodemon;安装使用nodemon app.js;哇,可以自动监听文件修改变化自动重启,但是关闭控制台服务还是会被摧毁。
    • 通过这个很常用的场景,我们了解到要避免这些麻烦一个服务器至少需要有:后台运行和自动重启,这两个能力。
    • 再来看看使用pm2可拥有的能力:
      • 日志管理;两种日志,pm2系统日志与管理的进程日志,默认会把进程的控制台输出记录到日志中;
      • 负载均衡:PM2可以通过创建共享同一服务器端口的多个子进程来扩展您的应用程序。这样做还允许以零秒?;奔渲匦缕舳τ贸绦?。
      • 终端监控:可以在终端中监控应用程序并检查应用程序运行状况(CPU使用率,使用的内存,请求/分钟等)。
      • SSH部署:自动部署,避免逐个在所有服务器中进行ssh。
      • 静态服务:支持静态服务器功能
      • 支持开发调试模式,非后台运行,pm2-dev start <appName>;
      • 。。。。。太过强大!

    pm2常用命令

    启动服务pm2 start <script_file|config_file> [options] 启动指定应用

    pm2 start app.js        //启动app.js应用
    pm2 start app.js --name app  //启动应用并设置name
    pm2 start app.sh        //脚本启动
    
    pm2 start app.js --watch  //监听模式启动,当文件发生变化,自动重启
    
    //max 表示PM2将自动检测可用CPU的数量并运行尽可能多的进程
    //max可以自定义,如果是4核CPU,设置为2则占用2个
    pm2 start app.js -i max //启用群集模式(自动负载均衡)
    
    pm2-dev start ... // 开发模式启动,即不启用后台运行
    

    查看启动列表pm2 list

    显示应用程序详细信息pm2 show <appName> [options] 显示指定应用详情

    pm2 show [Name]   //根据name查看
    pm2 show [ID]    //根据id查看

    停止指定应用pm2 stop <appName> [options] 停止指定应用

    pm2 stop all        //停止所有应用
    pm2 stop [AppName]    //根据应用名停止指定应用
    pm2 stop [ID]       //根据应用id停止指定应用

    重启应用pm2 reload|restart <appName> [options] 重启指定应用

    pm2 restart app.js    //同时杀死并重启所有进程,短时间内服务不可用,生成环境慎用
    pm2 reload app.js    //重新启动所有进程,0秒重启,始终保持至少一个进程在运行
    pm2 gracefulReload all  //以群集模式重新加载所有应用程序

    启动静态服务器pm2 serve ./dist 8080将目录dist作为静态服务器根目录,端口为8080

    删除应用pm2 delete <appName> [options] 删除指定应用;如果修改了应用配置行为,需要先删除应用,重新启动后方才会生效,如修改脚本入口文件;

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

    pm2 kill 杀掉pm2管理的所有进程;

    pm2 logs <appName> 查看指定应用的日志,即标准输出和标准错误

    pm2 logs      //查看所有应用日志
    pm2 logs [Name]  //根据指定应用名查看应用日志
    pm2 logs [ID]   //根据指定应用ID查看应用日志

    pm2 monit 监控各个应用进程cpu和memory使用情况;

    PM2配置方式

    命令生产默认示例配置文件pm2 ecosystem或pm2 init,运行默认会生成ecosystem.config.js配置文件

    module.exports = {
     apps: [
      {
       name: 'back-Api',   //应用名
       script: './server/start.js',  //应用文件位置
       env: {
        PM2_SERVE_PATH: "./apidoc",  //静态服务路径
        PM2_SERVE_PORT: 8080,  //静态服务器访问端口
        NODE_ENV: 'development' //启动默认模式
       },
       env_production : {
        NODE_ENV: 'production' //使用production模式 pm2 start ecosystem.config.js --env production
       },
       instances:"max",     //将应用程序分布在所有CPU核心上,可以是整数或负数
       instance_var: "INSTANCE_ID",
       exec_mode: "cluster",
       watch:[
        "server",
       ], //监听模式,不能单纯的设置为true,易导致无限重启,因为日志文件在变化,需要排除对其的监听
       merge_logs: true,     //集群情况下,可以合并日志
      }
     ],
     deploy: {
       production : {
        user: 'node',           //ssh 用户
        host: '212.83.163.1',       //ssh 地址
        ref: 'origin/master',       //GIT远程/分支
        repo: '[email protected]:repo.git',  //git地址
        path: '/var/www/production',    //服务器文件路径
        "post-deploy": 'npm install && pm2 reload ecosystem.config.js --env production' //部署后的动作
       }
     }
    }; 
    

    自定义json配置文件如:processes.json;启动pm2 start processes.json

      {
       "apps": [{
        "name": "app", //名称
        "script": "./", //程序入口
        "cwd": "./",      //根目录
        "watch":[
          "views"
        ],//需要监控的目录
        "error_file":"./logs/err.log",//错误输出日志
        "out_file":"./logs/out.log", //日志
        "log_date_format":"YYYY-MM-DD HH:mm Z" //日期格式
        }]
      }
    

    pm2常用配置项解析

    1. apps:json结构,apps是一个数组,每一个数组成员就是对应一个pm2中运行的应用

    2. name:应用程序名称"app"

    3. cwd:应用程序所在的目录"./"

    4. script:应用程序的脚本路径"./"

    5. log_date_format: 日志文件名输出日期格式"YYYY-MM-DD HH:mm Z"

    6. error_file:自定义应用程序的错误日志文件"./logs/app-err.log",

    7. out_file:自定义应用程序日志文件"./logs/app-out.log"

    8. instances: 应用启动实例个数,仅在cluster模式有效 默认为fork;或者 max

    9. min_uptime:最小运行时间,这里设置的是60s即如果应用程序在60s内退出,pm2会认为程序异常退出,此时触发重启max_restarts设置数量

    10. max_restarts:设置应用程序异常退出重启的次数,默认15次(从0开始计数)

    11. cron_restart:定时启动,解决重启能解决的问题

    12. watch:是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。

    13. "ignore_watch": [                           // 不用监听的文件
                "node_modules",
                "logs"
            ],
    13. merge_logs:// 设置追加日志而不是新建日志

    14. exec_interpreter:应用程序的脚本类型,这里使用的shell,默认是nodejs

    15. exec_mode:应用程序启动模式,这里设置的是cluster_mode(集群),默认是fork

    16. autorestart:启用/禁用应用程序崩?;蛲顺鍪弊远仄?默认为true, 发生异常的情况下自动重启

    17. vizion:启用/禁用vizion特性(版本控制)

    18. "args": "", // 传递给脚本的参数

    19. env: {
            PM2_SERVE_PATH: "./apidoc",    //静态服务路径
            PM2_SERVE_PORT: 8080,   //静态服务器访问端口
            NODE_ENV: 'development' //启动默认模式
          },

    20. env_production : {
            NODE_ENV: 'production'  //使用production模式 pm2 start ecosystem.config.js --env production
          },

    pm2配合log4js处理日志

    1、pm2启动时通?;岱⑾謑og4js记录不到日志信息;

    2、解决方案,安装pm2的pm2-intercom进程间通信???br />

    3、在log4js的配置文件logger.js里添加如下命令:

    pm2: true, 
    pm2InstanceVar: 'INSTANCE_ID' 

    4、pm2配置文件中添加"instance_var": "INSTANCE_ID", // 添加这一行 字段

    5、发现如果没有设置群集模式"exec_mode": "cluster",也会记录不到;

    其他

    log4js日志配置使用详情Koa日志中间件封装开发(log4js)

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    相关文章

    • 使用Node.js实现ORM的一种思路详解(图文)

      使用Node.js实现ORM的一种思路详解(图文)

      这篇文章主要介绍了用Node.js实现ORM的一种思路详解(图文),需要的朋友可以参考下
      2017-10-10
    • Node.js的项目构建工具Grunt的安装与配置教程

      Node.js的项目构建工具Grunt的安装与配置教程

      Grunt是为Node打造的项目构建工具,相当于C/C++世界中的makefile,可以执行像压缩、编译、单元测试、代码检查以及打包发布的任务,下面我们就来一起看一下Node.js的项目构建工具Grunt的安装与配置教程:
      2016-05-05
    • nodejs操作mongodb的增删改查功能实例

      nodejs操作mongodb的增删改查功能实例

      这篇文章主要介绍了nodejs操作mongodb的增删改查功能,简单分析了mongodb??榈陌沧安⒔岷鲜道问椒治隽薾odejs操作mongodb数据库进行增删改查的相关实现技巧,需要的朋友可以参考下
      2017-11-11
    • 解决Linux无法正常安装与卸载Node.js的方法

      解决Linux无法正常安装与卸载Node.js的方法

      最近在学习node.js,所以下面这篇文章主要给大家介绍了关于如何解决Linux无法正常安装与卸载Node.js的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧。
      2018-01-01
    • 详解node Async/Await 更好的异步编程解决方案

      详解node Async/Await 更好的异步编程解决方案

      这篇文章主要介绍了详解Async/Await 更好的异步编程解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
      2018-05-05
    • node.js中axios使用心得总结

      node.js中axios使用心得总结

      这篇文章主要介绍了node.js中axios使用心得总结,以及分析了中间遇到的错误,大家参考一下。
      2017-11-11
    • 详解Node.js中的事件机制

      详解Node.js中的事件机制

      Node.js能够在众多的后端JavaScript技术之中脱颖而出,正是因其基于事件的特点而受到欢迎,所以这篇文章小编给大家详细介绍了Node.js中的事件机制,本文介绍的很详细,对大家的理解和学习很有帮助,下面来一起看看吧。
      2016-09-09
    • node.js中的buffer.toString方法使用说明

      node.js中的buffer.toString方法使用说明

      这篇文章主要介绍了node.js中的buffer.toString方法使用说明,本文介绍了buffer.toString的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
      2014-12-12
    • 详解从NodeJS搭建中间层再谈前后端分离

      详解从NodeJS搭建中间层再谈前后端分离

      这篇文章主要介绍了详解从NodeJS搭建中间层再谈前后端分离,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
      2018-11-11
    • Nodejs中session的简单使用及通过session实现身份验证的方法

      Nodejs中session的简单使用及通过session实现身份验证的方法

      session的本质使用cookie来实现。本文给大家介绍Nodejs中session的简单使用及通过session实现身份验证的方法,对node.js session相关知识感兴趣的朋友一起学习吧
      2016-02-02

    最新评论

  • 三狮军团首秀 只有两千多球迷观战 2019-05-19
  • 人民网2017呼和浩特徒步迎新活动--内蒙古频道--人民网 2019-05-19
  • 【品牌资讯】环球网斩获“全国行业新闻网站传播力2017年6月榜”多项冠军 2019-05-15
  • 深化对经济工作主线的认识 从供需关系看供给侧结构性改革 2019-05-15
  • 格拉斯哥艺术学院起火 4年前曾遭火灾仍在整修 2019-05-14
  • 回复@地瓜干17世:猪临死才会嚎叫呢~ 2019-05-14
  • 婺源古村溪中发现鹰嘴龟 2019-05-08
  • 编辑评测:高夫净源控油平衡露 极速补水长效控油 2019-05-08
  • 四部门发文规范特色小镇建设防止“新瓶装旧酒” 2019-05-02
  • 【地球的盛会文明的聚会艺术的盛宴四海一家足球为人类和平幸福而荣耀!!!普京是当今人类世界最优秀的一代伟人俄罗斯赢啦!!!】 2019-04-29
  • 学习新思想,千万师生同上一堂课 2019-04-28
  • 你这种个体户都干不了的老蚕也配谈计划?真是笑死人不偿命哦? 2019-04-23
  • 感人!的哥带着患病父亲出车 孝心感动乘客 2019-04-23
  • 图解:习近平在纪念马克思诞辰200周年大会上讲话的16个金句 2019-04-16
  • 感触名家笔下的端午文化 吃香粽原来可以这样"文艺" 2019-04-16
  • pk10为何前赢后输 足彩4场进球中奖计算 怎么买新时时彩 北京赛车不定位技巧 北京时时彩赛车下载安装 彩票开奖 陕西福利彩票 麦久3d试机号 排列五中奖规则 七乐彩预测专家 163老时时彩 双色球预测 新新疆时时彩开奖号码 网赌北京pk10输的人 pk10猜冠军技巧 彩票走势图综合