ToB企服应用市场:ToB评测及商务社交产业平台

标题: .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus [打印本页]

作者: 饭宝    时间: 2023-4-30 12:54
标题: .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus

在前两篇:
.NET Core部署到linux(CentOS)最全解决方案,常规篇
.NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx)
我们对.netcore部署到linux有了一个充分的了解,已经可以满足应用要求了,这篇文章我们继续深入带你了解使用Doker+jexus或Nginx来部署.net core应用。

1、使用Jexus作为web服务器

Jexus是一款Linux平台上的高性能WEB服务器和负载均衡网关服务器,以支持ASP.NET、ASP.NET CORE、PHP为特色,同时具备反向代理、入侵检测等重要功能。可以这样说,Jexus是.NET、.NET CORE跨平台的最优秀的宿主服务器,如果我们认为它是Linux平台的IIS,这并不为过,因为,Jexus不但非常快,而且拥有IIS和其它Web服务器所不具备的高度的安全性。同时,Jexus Web Server 是完全由中国人自主开发的的国产软件,真正做到了“安全、可靠、可控”, 具备我国党政机关和重要企事业单位信息化建设所需要的关键品质。
jexus官网:https://www.jexus.org/

1.1、Jexus的安装

jexus的安装非常简单,执行如下命令:

注:运行安装命令,需要操作者有root权限。

1.2、Jexus的配置与使用

安装完成后,切换到/usr/jexus目录,修改/usr/jexus/siteconf目录下的default,内容如下所示:
注:因为在前面的章节用了nginx,使用了80端口,因此这儿我使用8099端口。

接下来,我们重启jexus,执行如下命令:

提示Ok后,我们的应用就表示启动起来了。
可以通过执行如下命令,看下执行的结果:

可以看到我们的应用已经启动起来了,到浏览器使用8099端口浏览看下效果。

关于jexus更详细的使用说明,请参考官方文档。

1.3、Jexus的操作命令

Jexus包括如下操作命令(首先 cd /usr/jexus):
启动:sudo ./jws start
停止:sudo ./jws stop
重启:sudo ./jws restart

2、Docker+Nginx或Jexus部署

在前面的文章介绍中,不管是supervisor+nginx还是jexus,都需要在服务器安装 .NET Core的SDK或者运行时,假如咱们多个应用程序,各应用程序所用.net core版本不一样,上面的做法就需要咱们分别安装对应的SDK或者运行时,对于维护还是比较麻烦的。Docker的出现,可以完美解决上述问题。


2.1、Docker是什么?

Docker有如下优点:
1、快速,一致地交付您的应用程序
Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。
容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:
2、响应式部署和扩展
Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。
Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。
3、在同一硬件上运行更多工作负载
Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。

2.2、docker安装

执行如下命令:
PS:
遇报错 Another app is currentlty holding the yum lock ,waiting for it to exit..
解决方法: rm –r /var/run/yum.pid 这个命令 解锁即可


安装完成后,执行如下命令设置docker开机启动:
执行如下命令启动docker:
查看docker启动状态:

ps:安装过程有问题的话,可能直接运行如命令安装。
yum install docker-ce-cli
查看docker版本命令:


2.3、.net core docker支持

安装docker之后,我们需要在代码里增加dockerfile文件。
通过Visual Studio可以帮我们自动生成,在解决方案中,右击项目名称,依次选择【添加】->【Docker支持】,如下图所示:

生成的dockerfile文件如下所示:
将代码推送到git仓库,然后再linux服务器中拉取最新代码。
切换到/root/app_data/source/core50test目录,执行如下命令,拉取最新代码:

然后执行如下命令,将代码打包为镜像:
首次打包镜像涉及到拉取.NET Core的官方镜像,拉取速度可能较慢,请耐心等待。


打包完成后,执行如下命令,可查看当前服务器已存在的镜像:

镜像打包完成后,我们就可以执行docker run命令启用我们的应用了:
执行结果如下:

通过浏览器访问:http://ip:81。如无意外,我们可以看到应用已经成功运行。

docker run :创建一个新的容器并运行一个命令

语法

OPTIONS说明:

2.4、通过shell脚本实现docker一键更新应用

可以通过编写shell脚本,实现一键更新应用。在/root目录中,创建dockerbuild.sh文件,文件内容如下:

给dockerbuild.sh文件设置执行权限,命令如下:
当有新代码推送到git仓库时,进入服务器,执行dockerbuild.sh即可快速更新应用程序。
./dockerbuild.sh


至此,.net core使用docker方式部署介绍完成。

2.5、docker常用命令

Docker常用命令,总的来说分为以下几种:
从docker命令使用出发,梳理出如下命令结构图:

要查看更详细的命令,可以查看官网或者命令帮助

3、总结

通过前面三篇文章的介绍,我们已经对.net core多方案部署到linux下有了非常全面的认识,小型团队已经足够使用。留心的同学会注意到,虽然目前的方案可以实现一键部署更新,但是还是需要登陆到linux服务器去执行相应的命令。
显示,这不是最优的方案,那么还有没有更好的方案呢?比如:当我们提交给git仓库后,自动出发部署命令是不是就更方便了呢?
答案是肯定的,我们可以借助jenkins来实现。如有兴趣,可以自行研究,或者敬请期待后面的讲解。以及在大型项目中基于k8s实现的devops。其实k8s实现devops的原理以上面的介绍差不多,基于就是借助gitlab的runner或者jenkins,监听git仓库的状态,当发现指定的分支发生变化后,打包镜像,然后通过替换k8s的deployment的镜像来实现自动更新。同时,k8s实现了弹性伸缩、滚动更新等功能。
 
作者|国思软件

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4