源码安装使用Node.js

安装使用线上程序

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操作后将执行的命令列表。

发表评论

error: Content is protected !!