自动发布.NET Core Web应用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了自动发布.NET Core Web应用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4365字,纯文字阅读大概需要7分钟。
内容图文
![自动发布.NET Core Web应用](/upload/InfoBanner/zyjiaocheng/985/1117fe941f2345aab729b7818429a7fe.jpg)
1 原因和目的
相信很多开发者都需要将自己的编写的应用进行编译并部署到服务器上,这个过程在个人或小型团队的项目中都是一个简单的事情。但是对于并行化开发而言,就需要通过工具来辅助这个过程。于是,我参考了一下DevOps技术中的CI/CD。工作环境主要是Windows Server,而且目前环境没有Docker,我就考虑直接部署在中间件上,并通过OpenSSH和WinRM实现远程命令控制。
2 工作原理
通过Git实现软件版本控制,再通过Jenkins负责CI的操作,通过Syncthing实现文件同步传输。
2.1 图解
-
PC 1
- 作为开发者的客户端,编写代码
- 通过Git client提交代码,并Git push至CentOS服务器
-
CentOS 7
- 作为Git Repository
- 部署Jenkins,持续集成Git Repository的代码
- 通过Syncthing同步发布编译的代码至WindowsServer服务器
-
Windows Server 2012 R2
- 部署Jenkins,持续集成Git Repository的代码
- 通过Syncthing同步发布编译的代码至CentOS服务器
2.2 主要演示
- 实现对Windows Server远程控制,自动化部署IIS服务。
- 实现对Linux远程控制,自动化部署Nginx服务。
3 部署服务
3.1 模拟环境
我的环境是i7(6C12T),内存 16G的windows 10,通过VMware Workstation 15虚拟环境:
- 一台Windows 10(1C2T,2G)
- 一台CentOS 7(2C2T, 8G)
- 一台Windows Server 2012 R2(2C2T, 8G)
3.2 安装软件
-
PC 1,软件如下:
- 安装.net core 3.1 sdk
- 安装Visual Studio 2019
- 安装最新版Git
-
CentOS 7, 软件如下:
-
Windows Server 2012,软件如下:
- 安装Chrome浏览器,原因是IE的安全等级默认最高,不利于网页浏览。
- 安装.net core 3.1 sdk
- 安装OpenJDK 11及以上版本
- 安装Tomcat 9及以上版本
- 在Jenkins官网下载war包,操作同CentOS。
- 安装最新版Git
- 下载并安装Syncthing,官方提供了GTK客户端或无GUI版(CLI及Web版本),我安装的是后者syncthing-windows-amd64-v1.16.1.zip(替代方案是FTP服务或其他文件同步工具,读者可以自行研究)
- 下载安装windows版的Openssh
3.3 模拟试验
3.3.1 实现对Windows Server远程控制,自动化部署IIS服务。
- 在CentOS中创建Git Repository,而在PC 1客户端下运行Git Bash,输入
git clone
命令克隆Git远程库。参考文档 - 在PC 1的客户端中,通过VS2019提供的.net core MVC Web模板,生成代码,并运行。
- git初学者建议使用gitignore来过滤需要提交的文件,避免将运行编译文件提交造成版本冲突,可以登陆此网站查找对应工具的.gitignore文件格式。
- 运行Git Bash, 依次运行
git add
,git commit
和git push
。 - 通过浏览器访问CentOS下Jenkins,创建自由项目,配置Git数据源信息。参考文档
- Jenkins中安装.net sdk插件,用于自动运行dotnet编译发布命令。
- 在CentOS服务器中,运行syncthing解压目录下的syncting执行文件 参考文档
tomcat@syncthing$ ./syncthing
- 在Windows server服务器中,运行syncthing解压目录下的syncting执行文件,双击exe即可
- 配置CentOS下
/用户空间/.jenkins/workspace/自由项目名
目录与Windows Server的本地某个目录同步,并配置IIS服务指向Windows下该目录\bin\Release\netcoreapp3.1\publish
目录 - python + winrm 实现远程连接Windows服务器,并执行指定命令,在CentOS端Jenkins执行bash,通过Python访问windows server的winrm,发送对IIS的启动/停止命令
3.3.2 实现对Linux远程控制,自动化部署Nginx服务。
参考微软官方的原理图,可以发现Nginx的作用是反向代理,主要还是依赖dotnet自带的Kestrel。IIS不愧是微软亲生的。
- 通过浏览器访问CentOS下Jenkins,创建自由项目,配置Git数据源信息。这里直接使用CentOS下的Git Repository 参考文档
- Jenkins中安装.net sdk插件,用于自动运行dotnet编译发布命令。
- 如3.3.1配置类似,将windows下
C:\Users\用户空间\.jenkins\workspace\自由项目名
目录与CentOS的本地某个目录同步 - 参考官网通过systemd配置的dotnetcore web的daemon进程,这样可以像IIS一样通过命令
systemctl start 服务名
和systemctl stop 服务名
控制daemon的启动和停止。Nginx的反向代理官网有所提及,此处不再追述。 - 在Jenkins上安装Powershell插件,方便使用windows cmd。通过openssh发送上一步骤的bash命令,控制CentOS上的HTTP.sys服务。
注意:
- 由于C#是一个编译型语言,对dll存在文件读写锁,必须通过停止服务来关闭。
- 本文未涉及计算机安全的内容,请读者结合自身项目的实际环境,对身份验证和数据加密进行深入研究。
- 服务器自带防火墙,所以对于端口都需要结合需要进行配置,方便网络共享。
4 总结
自动化部署的方式有很多种。DevOps工程师一般都采纳虚拟化容器的方式打包服务,并通过Kubernetes进行分布式分发,为开发者提供良好的生产环境和管理运维环境。Jenkins软件的功能很强大,但是我这里只用了几个简单的功能。建议有兴趣的读者,继续深入探索Jenkins的全部奥秘。虽然微软的Powershell支持Linux,但是我比较习惯bash语法和Python语言。读者也可以结合自身擅长使用Node.js或Go等其他开发语言来制作脚本或工具。
内容总结
以上是互联网集市为您收集整理的自动发布.NET Core Web应用全部内容,希望文章能够帮你解决自动发布.NET Core Web应用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。