安装使用线上程序
NodeJS安装好之后还有另一个命令npm,使用此命令可以方便地安装线上别人已经开发好的程序包,例如PM2。在上面的使用中我们可能会遇到Node进程挂掉的情况,这样的话就不得不进行手工重启。
PM2是一个带有负载均衡功能的Node应用的进程管理器,当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的。它非常适合IaaS结构。
Tips:使用npm命令进行安装时,默认连接的是官方境外服务器,境内连接很慢,甚至需要翻墙,可以使用npm config set registry https://registry.npm.taobao.org命令来切换到淘宝镜像源。
安装PM2
npm install pm2@latest -g
启动程序
启动server.js,启动后pm2以守护进程在后台运行,当程序挂掉后,pm2会自动帮你重启
pm2 start server.js
启动程序,并指定PM2中的标识为Web
pm2 start server.js --name="Web"
以cluster_mode按CPU核数启动多个进程实例,请求将在多个实例间进行负载。-i后面也可以自己指定启动的进程个数。
pm2 start server.js -i 0
监听到文件改变后,会自动重新加载。
pm2 start server.js --watch
查看程序
pm2 list
监控
pm2 monit
列出程序信息
pm2 show server
重载
pm2 reload all
all代表重载所有管理的应用,后面也可以跟程序名称或id,来重载指定的程序
重启
pm2 restart all
停止
pm2 stop server
添加开机启动
pm2 startup centos pm2 save
删除进程
上面停止后还存在于列表之内,如想删除执行:
pm2 delete server
升级PM2
pm2 update PM2
自定义启动文件
当有多个应用需要维护或不想输入过长的参数,我们可以创建启动文件来进行启动。
vim test.json
{ "apps":{ "name": "Web", "cwd": "/data/node", "script": "./server.js", "instances": "0", "exec_mode": "cluster", "error_file": "./web-err.log", "out_file": "./web-out.log", "pid_file": "./web.pid", "watch": "true" } }
pm2 start test.json
可用属性列表:
名称 | 类型 | 示例 | 说明 | |
通用 | name | (string) | “my-api” | 应用名称(未指定默认使用文件名) |
cwd | (string) | “/var/www/” | 应用程序所在目录 | |
script | (string) | “./api/app.js” | 应用程序脚本的相对路径 | |
args | (string) | “-a 13 -b 12” | 通过CLI传递给脚本的参数 | |
interpreter | (string) | “bash” | 应用程序脚本类型,可以是python,ruby,或其它脚本解释器,默认为node | |
interpreter_args | (string) | “–harmony” | 传递给解释器的参数 | |
node_args | (string) | interpreter_args的别名 | ||
高级 | instances | number | 4 | 应用运行实例的数量,设置为0则启动数量 为CPU核数 |
exec_mode | string | “cluster” | 可以设置为cluster或fork,默认fork | |
watch | Boolean | true | 是否启用监控模式,默认为false。如果设置为true,当应用变动时,pm2会自动重载。 | |
ignore_watch | list | [“[\/\\]\./”, “node_modules”] | 正则表达式列表,以忽略监听部分文件和目录 | |
max_memory_restart | string | “150M” | 当达到指定内存时,PM2将重启应用。人性化格式,单位可以是K,M,G | |
env | object | {“NODE_ENV”: “development”, “ID”: “42”} | 将会显示在应用中的evn变量 | |
source_map_support | boolean | true | 当抛出异常时,启用/禁用源文件映射支持,默认为true. | |
日志相关 | log_date_format | (string) | “YYYY-MM-DD HH:mm Z” | 日志时间格式 |
error_file | (string) | error日志文件位置,默认为$HOME/.pm2/logs/XXXerr.log | ||
out_file | (string) | 应用程序日志文件位置,默认为$HOME/.pm2/logs/XXXout.log | ||
merge_logs | boolean | true | 别名以组合日志 | |
pid_file | (string) | PID文件位置,默认$HOME/.pm2/pid/app-pm_id.pid | ||
控制选项 | min_uptime | (string) | 应用最小运行时间,当程序在设置时间内退出,pm2会认为程序异常退出,触发重启max_restarts设置数量 | |
max_restarts | number | 10 | 设置程序异常退出重启次数,默认15次(从0开始计数) | |
kill_timeout | number | 1600 | 发送杀死进程的等待时间(毫秒) | |
autorestart | boolean | false | 默认为true,PM2在应用崩溃后会自动重启的你应用 | |
cron_restart | string | “1 0 * * *” | 定期重启你的应用,目前只工作于cluster模式,fork模式将很快可用 | |
force | boolean | true | 默认为false。如果开启,则可以启动同一脚本多次,这通常是不允许的。 | |
restart_delay | number | 4000 | 默认为0。当应用崩溃后等待的时间(毫秒) | |
post_update | list | [“npm install”, “echo launching the app”] | 从Keymetrics仪表盘执行Pull/Upgrade操作后将执行的命令列表。 |
页码: 1 2