经过一段时间的实践调研后,我决定将 Picals 项目的部署方案分为两个部分:前端部署后端部署

# 前端部署

前端部署的方案主要基于传统 Nginx,打包 dist 上传至服务器进行代理,并使用 Cloudflare 来代理域名,提供免费 CDN,使其能够在国内进行更快的访问。

同时为了加速页面的加载速度,为 Nginx 开启了 brotil 压缩优化。

# 后端部署

后端部署的方案参考借鉴了神光的部署方案,主要是 将后端服务放到 Docker 上进行运行,并且通过 nginx 容器开启 https。

对于后端部署的详细方案描述,可以查看我先前撰写的一篇文章:如何使用 Docker 部署 Nest.js,其中包含了详细的部署步骤。

总而言之,后端的部署方案主要包含以下几个步骤:

  1. 打包 nest 应用
  2. 使用 Docker 对 nest 应用进行部署
  3. 使用 nginx 反向代理后端服务,启用 https
  4. Docker 部署最佳实践(CI/CD)

至于我为什么选择 Docker 进行部署呢?主要有以下几个原因:

  1. Docker 是一个开源的应用容器引擎,可以让开发者打包应用和依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
  2. 我的服务器的操作系统是基于 Linux 的发行版 CentOS,无法安装版本 > 16 的 Node.js,并且无法安装指定版本的 pnpm。而 Docker 则完全无需担心这部分的问题,你只需要一台能够跑 Docker 的服务器,并且能够拉取对应的镜像就可以了。