pm2

使用pm2一键部署多个服务

月盾
pm2支持远程部署服务,创建文件ecosystem.json,内容形式如: { // Applications part "apps" : [{ "name" : "API", "script" : "app.js", "env": { "COMMON_VARIABLE": "true" }, // Environment variables injected when starting with --env production // http://pm2.keymetrics.io/docs/usage/application-declaration/#switching-to-different-environments "env_production" : { "NODE_ENV": "production" } },{ "name" : "WEB", "script" : "web.js" }], // 部署部分 // Here you describe each environment "deploy" : { "production" : { "user" : "node", // 多主机配置 "host" : ["212.

pm2设置NODE_ENV环境变量

月盾
nodejs中经常使用到环境变量,最常见的如:process.env.NODE_ENV。那么在生产环境中使用pm2如何设置环境变量? 设置方式一:shell命令设置 linux:export NODE_ENV=development&& node app.js win:set NODE_ENV=development&& node app.js 一般是作临时变量在系统启动时设置,不影响其他系统,也可同时运行开发环境和生产环境,只需要根据process.env.NODE_ENV来运行不同逻辑即可。 设置方式二:配置文件设置 要在pm2设置环境变量也很简单。 pm2 start pm2.json –env production --env production参数是为了设置环境变量,由pm2.json中的配置决定设置什么样的环境变量。 pm2.json { "apps" : [{ "name": "issue", "cwd": "dest", "script" : "bin/www.js", "instances" : "2", "exec_mode" : "cluster", "env": { "NODE_ENV": "development", "PORT": 3002 }, "env_production" : { "NODE_ENV": "production", "PORT": 3003 }, "log_date_format": "YYYY-MM-DD_HH:mm Z", "merge_logs": true }] } 如果不加参数则默认使用 "env": { "NODE_ENV": "development", "PORT": 3002 } 结果:NODE_ENV=development,PORT=3002

pm2日志记录和日志分割

月盾
pm2介绍 pm2是nodejs进程管理工具,现在基本是node生产服务器的标准选择,可以帮助我们实现node多进程服务,开启的多个实例自动实现负载均衡。 最重要的是保证node单进程不会因为错误退出,作为守护进程保证nodejs服务不宕机。 总体来说就是有性能监控、自动重启、负载均衡的作用。 pm2-logrotate介绍 pm2本身是可以输出日志文件的,默认的文件路径: error log path │ /home/username/.pm2/logs/app-error-0.log out log path │ /home/username/.pm2/logs/app-out-0.log 但是pm2的日志文件不能自动分割,这会导致一个文件不断变大,不但影响性能,查看这些日志也会带来麻烦。所以需要pm2-logrotate来实现自动分割日志。 安装pm2-logrotate pm2 install pm2-logrotate,是用pm2命令,不是npm命令 pm2-logrotate配置 max_size (默认 10M): 最大为多少时进行分割,例如: 10G, 10M, 10K retain (Defaults to all): This number is the number of rotated logs that are keep at any one time, it means that if you have retain = 7 you will have at most 7 rotated logs and your current one. compress (默认 false): 是否压缩日志 dateFormat (默认 YYYY-MM-DD_HH-mm-ss) : 日志格式 rotateModule (Defaults to true) : Rotate the log of pm2’s module like other apps workerInterval (Defaults to 30 in secs) : You can control at which interval the worker is checking the log’s size (minimum is 1) rotateInterval (Defaults to 0 0 * * * everyday at midnight): This cron is used to a force rotate when executed.

pm2的fork模式和cluster模式的区别

月盾
pm2的fork模式和cluster模式的区别 fork模式 pm2默认启动的是fork模式,是以单核单进程运行的,在fork模式下可以直接运行coffee-script,PHP,python。 参考:http://pm2.keymetrics.io/docs/tutorials/using-transpilers-with-pm2 运行非js语言必须设置运行模式为fork_mode cluster模式 cluster模式可以根据CPU数量进行实例扩展,可以开启多进程而不需要修改代码。可提高程序性能和可靠性。类似于分布式系统,只不过是在单台机器上开启多实例,而pm2自带负载均衡。 ** 使用方法 ** pm2 start app.js -i max 使用-i参数,max代表最大CPU进程数 也可以使用文件方式: processes.json文件: { "apps" : [{ "script" : "api.js", "instances" : "max", "exec_mode" : "cluster" }] } pm2 start processes.json