手机微信小程序流程_使用pm2布置node出产环境的方

发布时间:2021-01-07 15:16 作者:jianzhan

摘要: 应用pm2布署node生产制造自然环境的方式流程 本文关键详细介绍了应用pm2布署node生产制造自然环境的方式流程,网编感觉挺好的,如今共享给大伙儿,也给大伙儿做下参照。一起追

使用pm2部署node生产环境的方法步骤       这篇文章主要介绍了使用pm2部署node生产环境的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
是可以用于生产环境的Nodejs的进程管理工具,并且它内置一个负载均衡。它不仅可以保证服务不会中断一直在线,并且提供0秒reload功能,还有其他一系列进程管理、监控功能。并且使用起来非常简单。 嗯嗯,最好的用处就是监控我们的生产环境下的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 ; 。。。。。太过强大!
//max 表示PM2将自动检测可用CPU的数量并运行尽可能多的进程 //max可以自定义,如果是4核CPU,设置为2则占用2个 pm2 start app.js -i max //启用群集模式(自动负载均衡) pm2-dev start ... // 开发模式启动,即不启用后台运行

查看启动列表pm2 list

显示应用程序

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 = {
 ap凡科抠图: [
 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: 'git: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

 "ap凡科抠图": [{
 "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. ap凡科抠图:json结构,ap凡科抠图是一个数组,每一个数组成员就是对应一个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启动时通常会发现log4js记录不到日志信息;

2、解决方案,进程间通信模块

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

pm2: true, 
pm2InstanceVar: 'INSTANCE_ID' 

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

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

其他

log4js日志配置使用详情

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


  • 微信小程序商城系统如何

    模拟题目:手机微信微信小程序商城系统系统软件怎样做营销推广营销推广?你务必掌握这类 手机微信微信小程序商城系统系统软件的进入门槛越来越越越低,很多本人工商局局户还能

  • 运动健身制造行业为何必

    现阶段,运动健身健身运动健身运动运动健身已经是便于一的浪潮流,越来越越越大的健身运动运动健身房也如如雨后春笋涌出。如何更强的吸引住客人户?大部分分是每一个健身运动

  • 工信部曝光82款问题软件,

    国家工信部此前发布的电信网效力品质通告显示信息,一一季度国家工信部机构对40家手机上运用店铺架上手机软件开展检验,发觉存有难题的运用手机软件82款。据网编掌握,在这

  • 非著名程序员:微信小程

    导语:在一开始之前,先祝福大家新年高兴,祝福新的一年里工作中中完满,身体心身身心健康,阖家开心。不知道道道大家这一元旦节节暑期过得怎样样?总而言之我曾人感觉我过得

  • 教你几招,做到小程序A

    开启你周边的微信小程序,你能发觉尽管微信小程序目前还不健全但的的确确已经偷偷获得临,如同手机微信造就了微信公众号捧红了H5一样,坚信不在久的未来每个人都是有一款归属于