• Linux_CentOS下搭建Nodejs 生产环境-以及nodejs进程管理器pm2的使用


    nodejs安装:https://www.cnblogs.com/loaderman/p/11596661.html

    nodejs 进程管理器 pm2 的使用

    PM2 是一款非常优秀的 Node 进程管理工具,它有着丰富的特性:能够充分利用多核 CPU 且能够负载均衡、能够帮助应用在崩溃后、指定时间(cluster model)和超出最大内存限制 等情况下实现自动重启。

    PM2 是开源的基于 Nodejs 的进程管理器,包括守护进程,监控,日志的一整套完整的功能。

    PM2 的主要特性:

    1、内建负载均衡(使用 Node cluster 集群模块)
    2、后台运行
    30 秒停机重载,我理解大概意思是维护升级的时候不需要停机. 4、具有 Ubuntu CentOS 的启动脚本 5、停止不稳定的进程(避免无限循环)
    6、控制台检测

    PM2 的常见命令:
    1pm2 的安装

    npm install pm2 -g # 命令行安装 pm2

    2、运行 pm2 的程序并指定 name

    pm2 start app.js --name www_aaa_com
    pm2 start app.js -i 3 --name www_bbb_com 3 启动 3 个进程 (自带负载均衡)

    3、显示所有进程状态

    pm2 list

    4、显示所有进程状态

    pm2 logs

    5、显示一个进程的日志

    的日志 pm2 logs www_aaa_com

    6、关闭重启所有进程

    pm2 stop all# 停止所有进程
    pm2 restart all# 重启所有进程
    pm2 reload all # 0 秒停机重载进程 (用于 NETWORKED 进程)

    7、关闭重启指定进程

    pm2 stop 0 # 停止指定的进程 
    pm2 restart 0 # 重启指定的进程
    pm2 stop www_aaa_com
    pm2 restart www_aaa_com

    8、杀死进程

    m2 delete 0   # 杀死指定的进程
    pm2 delete all   # 杀死全部进程
    pm2 delete www_aaa_com  # 杀死指定名字的进程

    10、显示相应进程/应用的总体信息

    pm2 show www_aaa_com

     测试演示过程说明:

    到home下,创建www_aaa_com 和www_bbb_com 文件夹,将项目代码分别拷贝进去

    用cnpm(gzip 压缩支持) 命令行工具代替默认的 npm:

    npm install -g cnpm --registry=https://registry.npm.taobao.org

    然后cnpm install 安装环境依赖

    www_aaa_com app.js代码:

    //引入 koa模块
    
    var Koa=require('koa');
    
    var router = require('koa-router')();  /*引入是实例化路由** 推荐*/
    
    //实例化
    var app=new Koa();
    
    router.get('/',async (ctx)=>{
    
        console.log('aaaa执行');
        ctx.body="这是www_aaa_com的首页";
    
    })
    
    router.get('/news',async (ctx)=>{
        ctx.body="这是www_aaa_com的新闻列表页面";
    
    })
    
    app.use(router.routes());   /*启动路由*/
    app.use(router.allowedMethods());
    app.listen(3001);

    www_bbb_com 中app.js代码:

    //引入 koa模块
    
    var Koa=require('koa');
    
    var router = require('koa-router')();  /*引入是实例化路由** 推荐*/
    
    //实例化
    var app=new Koa();
    
    router.get('/',async (ctx)=>{
    
        console.log('bbb执行');
        ctx.body="这是www_bbb_com的首页111111111111";
    
    })
    
    router.get('/news',async (ctx)=>{
        ctx.body="这是www_bbb_com的新闻列表页面";
    
    })
    
    app.use(router.routes());   /*启动路由*/
    app.use(router.allowedMethods());
    app.listen(3002);

    关闭防火墙

    systemctl stop firewalld 

    在对应的目录下,分别用pm2启动项目

    pm2 start app.js --name www_aaa_com   
    pm2 start app.js --name www_bbb_com
  • 相关阅读:
    select 的readonly效果
    HTML5与CSS3设计模式
    关于htons和htonl
    Http Range
    如何隐藏aspx文件格式,变成html
    UITableView的cell 自定义 高度,样式
    gson 数据里面设置特殊字符不转换为十六进制
    HDU2164:Rock, Paper, or Scissors?
    黑马程序员java基础学习网络编程2
    HDU2137:circumgyrate the string
  • 原文地址:https://www.cnblogs.com/loaderman/p/11654348.html
Copyright © 2020-2023  润新知