部署规划
创建时间:2022年07月14日 11:19:21
最后更新:2024年06月16日 13:48:12
项目发布和部署到生产环境,可以分为两大步骤:
- ASP.NET Core MVC 项目 Docker 容器化部署
- ABP Framework 分层项目 Docker 容器化部署
先搞定 ASP.NET Core MVC 项目基于 Docker 容器化部署的要求,然后再搞定 ABP Framework 分层项目在部署时的特殊要求。
服务器部署环境:
- Centos 7.4
- Docker
- Nginx
- SQL Server
ASP.NET Core MVC 项目 Docker 容器化部署
满足条件
- 通过 Docker 容器启动所有应用
- Nginx 作为反向代理服务器,响应发送到服务器的请求,并转发给 Docker 容器
- 宿主服务器和容器之间设置共享文件,这一点很重要。
将项目编译后的可执行文件保存在容器之外,并以“共享”方式供 Docker 容器使用,方便后续项目发布新版本,直接覆盖服务器上对应文件,不需要重新创建新的 Docker 容器。
这样设计的好处是:应用和数据分离,容器就是一个可运行应用的“壳”,真正的“数据”文件保存在服务器上。比如:WEB应用中上传图片到服务器,图片保存在服务器中,而不是 Docker 容器中。
实现步骤和思路
- 通过 Docker 容器启动应用
- 编写 dockerfile 配置文件(参看项目中的文件模板)
- 编译应用,上传到服务器
- 根据 dockerfile 创建容器
- Nginx 转发请求到 Docker 容器
- 配置 Nginx 配置文件,设置响应转发,将服务器请求转发到 Docker 容器
- 宿主服务器和容器之间共享文件
- 在 dockerfile 配置文件里,定义容器卷,定义容器当前工作目录。
- 启动命令通过参数
-v
将当前目录挂载到容器。
ABP Framework 分层项目 Docker 容器化部署
满足条件
- 全站支持 HTTPS
- OpenSSL 证书
- Nginx 反向代理设置,获取真实请求信息
考虑到网站的安全性,全站支持 HTTPS 是一个基本要求,此时需安装 OpenSSL 证书。
Nginx 通过转发请求到 Docker 容器中,所以在 Docker 容器中接收到的是转发请求,而不是用户真实请求,为了能够跟踪网站请求的真实来源,设置 Nginx 反向代理。这样在 ABP Framework 中的日志系统就能够记录真实的用户请求。
小结
在整理发布和部署过程中的问题之后,回过头来总结,发现填的坑还不少,这里重点要提示的 Docker 容器化部署,WEB应用的运行环境发生本质的变化,特别是支持 Https 之后,我们需要对WEB应用进行一系列设置才能正确获取 Url,否则获取的默认是容器本地Url,即localhost
。
Nginx 设置也非常重要,需要设置真实请求转发,以及解除 Nginx 请求头大小的限制。
上一篇:
理解应用程序和应用模块的区别
下一篇:
服务器环境准备