CentOS上如何实现.NET CORE Web项目便捷的自动更新部署方案?
- 内容介绍
- 文章标签
- 相关推荐
本文共计769个文字,预计阅读时间需要4分钟。
一、项目运行环境项目采用.NET5开发的Web系统,独立部署在省内外多台CentOS服务器上。系统运行在专网环境中(不接触互联网),业务运营时(在一段时间内)需请求外部服务。
一、项目运行环境项目采用的是.NET5开发的Web系统,独立部署在省内异地多台CentOS服务器上,它们运行在甲方专网环境中(不接触互联网),甲方进行业务运作时(一段时间内)会要求异地服务器开机上线,同时要求我们在总部进行驻场运维和技术支持。
二、自动更新需求每年(次)的业务流程甲方会要求做出一些调整,要求在线的服务器可以自动更新。
异地服务器对使用人员处于黑盒模式,同时项目可以运行在root权限下。
三、自动升级方案对比1、Jenkins+Gitlab+自动代码审查+人工代码审查+人工发布更新;
2、Docker构建私有源,上游更新镜像后下游拉取新镜像启动;
3、国人开发的AntDeploy(github.com/yuzd/AntDeploy)
- 支持docker一键部署(支持netcore)
- 支持iis一键部署(支持netcore和framework)
- 支持windows服务一键部署(支持netcore和framework)
- 支持linux服务一键部署(支持netcore)
- (支持增量发布)(支持一键回滚)(支持点火)(支持选择特定文件发布)(支持查看发布记录)
- 支持脱离Visual Studio独立使用(跨平台支持windows系统和mac系统)
- 支持Agent批量更新
4、国人开发的GeneralUpdate(gitee.com/Juster-zhu/GeneralUpdate)
GeneralUpdate寓意为通用更新力致于成为全平台更新组件,包含常见个人、企业项目所需特性。并提供GeneralUpdate.PacketTool更新包打包工具。不过目前好像尚不支持.NET CORE的更新。
因为我们只有在甲方业务运行期间才有服务器的使用权,异地部署的服务器的使用人员不掌握服务器密码和不具备Linux操作能力,同时由于种种原因我们不能也不方便在甲方内网中部署Jenkins和Docker服务,加上现有的几种自动更新(持续交付)方案对我们来说比较复杂,所以我们只有另辟蹊径寻找一种对我们来说简单实用易部署的方案。
四、使用的自动升级方案在我们开发另外一套客户端程序的时候,集成过一套自动更新组件(SimpleUpdater),简单描述一下就是它可以在客户端程序启动后到指定的192.168.12.25/web.zip" }
6、后续
因为mv命令在使用中没办法移动目录去覆盖程序目录,比如压缩包中有个 wwwroot/abc.js,在使用中发现mv命令好像没有办法把wwwroot/abc.js移动覆盖项目中的同路径文件,所以后续我们在更新脚本中使用了rsync命令,这个命令需要单独安装才可以使用。
可以先去下载安装这个组件后把sh脚本中的mv命令换成rsync即可
本文共计769个文字,预计阅读时间需要4分钟。
一、项目运行环境项目采用.NET5开发的Web系统,独立部署在省内外多台CentOS服务器上。系统运行在专网环境中(不接触互联网),业务运营时(在一段时间内)需请求外部服务。
一、项目运行环境项目采用的是.NET5开发的Web系统,独立部署在省内异地多台CentOS服务器上,它们运行在甲方专网环境中(不接触互联网),甲方进行业务运作时(一段时间内)会要求异地服务器开机上线,同时要求我们在总部进行驻场运维和技术支持。
二、自动更新需求每年(次)的业务流程甲方会要求做出一些调整,要求在线的服务器可以自动更新。
异地服务器对使用人员处于黑盒模式,同时项目可以运行在root权限下。
三、自动升级方案对比1、Jenkins+Gitlab+自动代码审查+人工代码审查+人工发布更新;
2、Docker构建私有源,上游更新镜像后下游拉取新镜像启动;
3、国人开发的AntDeploy(github.com/yuzd/AntDeploy)
- 支持docker一键部署(支持netcore)
- 支持iis一键部署(支持netcore和framework)
- 支持windows服务一键部署(支持netcore和framework)
- 支持linux服务一键部署(支持netcore)
- (支持增量发布)(支持一键回滚)(支持点火)(支持选择特定文件发布)(支持查看发布记录)
- 支持脱离Visual Studio独立使用(跨平台支持windows系统和mac系统)
- 支持Agent批量更新
4、国人开发的GeneralUpdate(gitee.com/Juster-zhu/GeneralUpdate)
GeneralUpdate寓意为通用更新力致于成为全平台更新组件,包含常见个人、企业项目所需特性。并提供GeneralUpdate.PacketTool更新包打包工具。不过目前好像尚不支持.NET CORE的更新。
因为我们只有在甲方业务运行期间才有服务器的使用权,异地部署的服务器的使用人员不掌握服务器密码和不具备Linux操作能力,同时由于种种原因我们不能也不方便在甲方内网中部署Jenkins和Docker服务,加上现有的几种自动更新(持续交付)方案对我们来说比较复杂,所以我们只有另辟蹊径寻找一种对我们来说简单实用易部署的方案。
四、使用的自动升级方案在我们开发另外一套客户端程序的时候,集成过一套自动更新组件(SimpleUpdater),简单描述一下就是它可以在客户端程序启动后到指定的192.168.12.25/web.zip" }
6、后续
因为mv命令在使用中没办法移动目录去覆盖程序目录,比如压缩包中有个 wwwroot/abc.js,在使用中发现mv命令好像没有办法把wwwroot/abc.js移动覆盖项目中的同路径文件,所以后续我们在更新脚本中使用了rsync命令,这个命令需要单独安装才可以使用。
可以先去下载安装这个组件后把sh脚本中的mv命令换成rsync即可

