3分钟学会 koa-2 框架 pm2部署

1. 使用koa2 和 express 对比

  • express中间件是异步回调,koa2原生支持async/awit
  • 新开发的框架和系统,都开始基于koa2,例如ess.js
  • express虽然为过时,但是koaw肯定是未来趋势

2. 介绍async/await

1. await 后面可以追加 promise 对象,获取resolve 的值
2. await 必须包裹在 async 函数里面
3. async 函数执行返回的也是一个promise
4. try-catch 截获Promise 中的reject 的值

3. 介绍koa2

  • 安装(使用脚手架)
    • npm install -g koa-generator
    • Koa2 koa2–test
    • npm install & npm run dev
  • 初始化代码,处理路由
  • 使用中间件

3.1 实现session

  • 和express 类似
  • 基于koa-generic-session 和 koa-redis
        cnpm i koa-generic-session koa-redis redis --save
    

3.2 开发路由

  • 复用之前代码,如mysql,登录中间件,controller,model
  • 初始化路由,前端联调
cnpm i mysql xss --save

3.3 日志

  • access log 记录,使用morgan
    npm i koa-morgan --save
  • 自定义日志使用console.log 和 console.error
  • 日志拆分、日志内存分析

4. 中间件原理分析

  • 洋葱圈模型
    • Request —> Response
  • 分析
    • app.use 用来注册中间件,先收集起来
    • 实现next机制,即上一个next触发下一个
    • 不涉及method 和 path 判断

5. 进程守护 pm2

PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。

  • node app.js 和 nodemon app.js 进程崩溃则不能访问
  • pm2 遇到进程崩溃,会自动重启
  • pm2需要全局安装 npm install -g pm2

5.1 常用配置 pm2

  • 新建pm2 配置文件(包括进程数量,日志文件目录等)
  • 修改pm2 启动命令,重启
  • 访问server, 检查日志文件的内容(日志记录是否生效)

5.2 pm2 常用命令

  1. 启动进程/应用 pm2 start bin/www 或 pm2 start app.js
  2. 重命名进程/应用 pm2 start app.js --name wb123
  3. 添加进程/应用watch pm2 start bin/www --watch
  4. 结束进程/应用 pm2 stop www
  5. 结束所有进程/应用 pm2 stop all
  6. 删除进程/应用 pm2 delete www
  7. 删除所有进程/应用 pm2 delete all
  8. 列出所有进程/应用 pm2 list
  9. 查看某个进程/应用具体情况 pm2 describe www
  10. 查看进程/应用的资源消耗情况 pm2 monit
  11. 查看pm2的日志 pm2 logs
  12. 若要查看某个进程/应用的日志,使用 pm2 logs www
  13. 重新启动进程/应用 pm2 restart www
  14. 重新启动所有进程/应用 pm2 restart all

6. 多进程

  • 为什么使用多进程
    • 操作系统会限制一个进程的最大可用内存
    • 内存:无法充分利用机器的全部内存
    • CPU:无法充分利用多核CPU的优势
  • 多进程redis
    • 多进程之间,内存无法共享
    • 多进程访问一个redis,实现数据共享

7. 上线与配置总结

  • 服务器运维,一般由专业的OP人员和部门来处理

  • 大公司都有自己的运维团队

  • 中小型工期推荐使用一些云服务,如华为云的node平台

  • pm2的核心价值 进程守护

  • pm2的常用命令和配置,日志记录

  • 多进程

koa2_blogs

项目来源于imooc.com
前端晋升全栈工程师必备课程
Node.js 从零开发web server博客项目
https://coding.imooc.com/learn/list/320.html

  • 仅供学习参考交流使用。

学会node.js,晋升全栈工程师

https://juejin.im/post/5eae2a6d5188256d72314688

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论