likes
comments
collection
share

一次 node 项目部署后的随想

作者站长头像
站长
· 阅读数 14

关于部署

服务器部署按道理来说,应该要一步一步来。一个 node 项目的部署需要下面这些。

  • node.js 环境用来运行代码
  • npm & yarn 包管理工具用来安装各种包
  • git 用来同步代码
  • nginx 服务器用来做代理
  • pm2 用来管理 node 任务

不过这次用的腾讯的宝塔面板,倒是省去了不少功夫。

前端部署

直接通过宝塔面板的【文件】上传功能,把静态 HTML 文件上传到了 /www/server/nginx/html 路径下,这里是宝塔面板的 Nginx 默认放网页的地方。直接替换后就可以通过公网 IP 进行访问了。

后端部署

后端的部署并没有用 shell 命令启动 pm2 或者 egg.js 的服务,而是通过宝塔面板的【网站 - Node 项目】来创建。

  1. 首先,通过 git 将项目 clone 到服务器上
  2. 宝塔面板上,添加 Node 项目。
  3. 选中项目目录,并选择 node 项目启动命令,命令是 package.json 中的 script 中定义的。
  4. 选择 node 版本,然后创建项目就好了。

node 项目的运行、启动和停止

在一次次运行 node 启动命令的过程中,不禁引起了我对于这方面的思考。

  1. node 最基本的用法是通过 node index.js 命令执行一个 JavaScript 文件,执行完成后立即退出。
  2. node 也可以通过 http 模块创建一个简单地接口请求服务,通过 listen 方法监听指定端口。这种情况下服务会持续监听,不会断开。
  3. node 代码每次变化后都需要重新执行启动命令,比较麻烦。于是就有了 nodemon 模块,每当代码发生变化后,都会自动执行启动命令。
  4. 无论是 node 还是 nodemon 命令,在 shell 窗口关闭后都会终止服务。于是有了 pm2 这样的工具让 node 服务可以在后台持续运行。
  5. 而到了我使用的 egg.js,他也拥有 pm2 一样管理 node 服务的能力。详见文档

关于后端的 MVC

之前我一直不知道后端项目到底长啥样。在学习了一些后端课程,又加以实践后,我隐约对后端开发有了些自己的理解。

  • 后端本质工作是接收请求 - 处理逻辑 - 产出视图的过程。这里的逻辑包括处理业务和数据,而视图包括模板生成的页面、JSON、XML等可视化的产物(大多数时候接口返回的都是 JSON)。
  • 后端项目很多都是基于 MVC 模式来的,在 egg.js 的 目录结构 中就可以看出一些端倪。
    • router 管理请求的目的地
    • middleware 为中间件
    • public 用来放静态资源
    • view 用来放视图模板文件
    • model 放置领域模型
    • controller 用来处理接口请求
    • service 用来处理业务逻辑
    • structure 用来放置定时任务 嗯!我所知道的常用后端功能齐全了。而显而易见的 model、view、controller 就是大名鼎鼎的 MVC 了。

关于我的项目

目前在基于 puppeteer 做一个爬虫工具,用来帮助老婆爬取公司系统数据,然后帮她自动分析、核对数据,产出分析报告网页以及导出 excel 文件。目前实现了爬虫部分的逻辑,并起了定时任务每天爬取一次。(希望她们公司别发现我,ORZ)后续计划:

  • 在 view 目录下用模板引擎渲染视图
  • 试着写一些中间件
  • 目前爬取的数据直接存在一个 JSON 文件里面,通过 fs 模块存取,后续考虑用 MySQL,并玩一玩 model 的设计。
  • 由于功能简单,报告页面直接在一个 HTML 文件里面写的,后续可以改成 vue3+vite 来写,并通过命令部署都服务器。

最后

以上观点仅为一个后端菜鸟的思考,如有任何问题欢迎大佬批评指正~