当前位置 主页 > 服务器问题 > win服务器问题汇总 >

    nodejs高大上的部署方式(PM2)

    栏目:win服务器问题汇总 时间:2019-12-11 15:48

    如果直接通过node app来启动,如果报错了可能直接停在整个运行,supervisor感觉只是拿来用作开发环境的。再网上找到pm2.目前似乎最常见的线上部署nodejs项目的有forever,pm2这两种。

    使用场合:

    supervisor是开发环境用。 forever管理多个站点,每个站点访问量不大,不需要监控。 nodemon 是开发环境使用,修改自动重启。 pm2 网站访问量比较大,需要完整的监控界面。

    PM2的主要特性:

    内建负载均衡(使用Node cluster 集群模块) 后台运行 0秒停机重载,我理解大概意思是维护升级的时候不需要停机. 具有Ubuntu和CentOS 的启动脚本 停止不稳定的进程(避免无限循环) 控制台检测 提供 HTTP API 远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 )

    1、最常用的属nohup了,其实就是在后台执行进程,末尾加个&

    [zhoujie@ops-dev ~]$ nohup node /home/zhoujie/ops/app.js &
    [1] 31490nohup: ignoring input and appending output to `nohup.out'

    即此时程序已启动,直接访问即可,原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。

    该命令的一般形式为:nohup command &

    这个不太靠谱的样子,经常默默的进程在后台就挂了

    2、用screen另开一个屏幕,这种方式可以直接在屏幕上看到程序运行情况

    给该应用程序开个screen,如:screen -r ops ,用npm start启动,

    退出该后台:ctrl + a,再按d,可不能直接ctrl +c,否则就退出了

    这种方式很不专业,呵呵,不过方便看在生产环境的操作。

    这个本质上用的forever,package.json里配置的:

     "scripts": {
      "start": "forever app.js",
      "test": "supervisor app.js"
     },

    3、PM2

    使用它要先安装它,用root账号和全局模式安装一下:

    npm install -g pm2

    用它来启动程序(在当前目录下可以直接启动,pm2 start app.js --name uops)

    [zhoujie@ops-dev uops]$ pm2 start app.js 
    [PM2] Spawning PM2 daemon
    [PM2] Success
    [PM2] Process app.js launched
    ┌──────────┬────┬──────┬─────┬────────┬───────────┬────────┬─────────────┬──────────┐
    │ App name │ id │ mode │ PID │ status │ restarted │ uptime │   memory │ watching │
    ├──────────┼────┼──────┼─────┼────────┼───────────┼────────┼─────────────┼──────────┤
    │ app   │ 0 │ fork │ 308 │ online │     0 │ 0s   │ 21.879 MB  │ disabled │
    └──────────┴────┴──────┴─────┴────────┴───────────┴────────┴─────────────┴──────────┘
     Use `pm2 info <id|name>` to get more details about an app
    [zhoujie@ops-dev uops]$

    看,它显示了Success,程序已经默默的成功的启动了,可以实时监控程序的运行,比如执行个pm2 restart,则上述restarted那栏变成1,可以显示程序运行了多长时间、占用内存大小,实在是太赞啦!