NET MVC接口服务如何运行在容器中

简介: 有些公司内部存在一些NET项目,而公司服务器后期都换成了Linux,若单纯为这一个项目占用一台Windows服务器显得极其浪费,因此需要将NET项目嵌入到Linux服务器中,为了后期方便迁移和运维最好是Docker容器中运行。

  有些公司内部存在一些NET项目,而公司服务器后期都换成了Linux,若单纯为这一个项目占用一台Windows服务器显得极其浪费,因此需要将NET项目嵌入到Linux服务器中,为了后期方便迁移和运维最好是Docker容器中运行。

  新的.net core都已经支持docker,手头有一些原来开发的asp.net旧项目,用的asp.net mvc开发的,跑在.net formwork 4.6上。

  我们的web项目要想运行,需要有一个像IIS一种的服务器组件,在这里有两层意思:

1.Net接口服务运行在Linux系统上

2.Net接口服务打包成镜像运行在Docker容器中

Net接口服务运行在Linux系统上

  在linux里我们一般使用jexus来实现这个功能,用docker镜像的话应该有mono还要有jexus的基础镜像集成,也可以使用现成的镜像azraelrabbit/monupw。

  Mono包含了一个C#语言的编译器,一个CLR的运行时和一组类库,并且实现了ADO.NET和ASP.NET,能够使的开发人员在Linux下用C#开发程序。

  Jexus即Jexus Web Server,简称JWS是在linux平台上的一款ASP.NET WEB服务器,Jexus并非全部由mono的.NET组件构成,非常巧妙的大量采用了Linux/Unix本身的优秀特性,从代码层面保证了Jexus的性能优势,同时Jexus的框架特征也为 高性能提供了基础保证。

  需要注意的是Mono需要配置GDI+兼容API的库Libgdiplus。

yum -y install gcc gcc-c++ bison pkgconfig glib2-devel gettext make libpng-devel libjpeg-devel libtiff-devel libexif-devel giflib-devel libX11-devel freetype-devel fontconfig-devel  cairo-devel

备注:可能电脑已经安装了这些文件,可用rpm -qa libexif*命令查看,但是这里为了确保万无一失,直接全部执行。

  如何安装Mono和Jexus请参考其他园友写的比较仔细的教程。

  部署ASP.NET MVC项目

  jexus安装的路径下/usr/jexus下有一个siteconf文件夹,这里面的每一个文件都 是一个网站的配置文件,每一个配置文件就代表一个网站,在(/usr/jexus/siteconf/)中,就已经有一个默认的网站配置文件,文件名 为:"default";你可以修改这个配置文件,也可以将这个配置文件赋值并修改为一个新的站点,更改端口、发布文件虚拟根路径。

  将编译的文件上传至此目录。

  重新启动Jexus就可以通过ip端口访问,还要注意端口是否被防火墙拦截,需要放开或关闭防火墙。

注意:

桌面的net程序是无法通过此方式使用的,会异常。

Linux下是区分大小写的。

Docker部署asp.net mvc站点

  用Docker部署net程序相对容易得多,首先需要Docker环境,这个不用说,再拉取已经内建了mono 和jexus 服务器的 docker镜像

docker pull azraelrabbit/monupw

  运行一个端点,启动对应的服务端口22: sshd, 80: jexus,ssh工具连接主机的 2022 端口,即可连接到这个已启动的容器内,2080主机端口为映射的站点端口。

docker run --name cmsnet -d -p 2022:22 -p 2080:80 -v /mydata:/data azraelrabbit/monupw

  将你的mvc工程或asp.net工程复制到 /mydata路径下. 并在ssh到容器里用sudo 重启一下jws . 即可访问这个容器内的站点了,或者重启下整个容器也可以。

 

目录
相关文章
一个.NET开源、轻量级的运行耗时统计库 - MethodTimer
一个.NET开源、轻量级的运行耗时统计库 - MethodTimer
171 3
|
4月前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
971 2
|
4月前
|
Linux 网络安全 Docker
盘古栈云,创建带ssh服务的linux容器
创建带ssh服务的linux容器
354 146
|
10月前
|
中间件 Go
Golang | Gin:net/http与Gin启动web服务的简单比较
总的来说,`net/http`和 `Gin`都是优秀的库,它们各有优缺点。你应该根据你的需求和经验来选择最适合你的工具。希望这个比较可以帮助你做出决策。
519 35
|
8月前
|
存储 缓存
.NET 6中Startup.cs文件注入本地缓存策略与服务生命周期管理实践:AddTransient, AddScoped, AddSingleton。
记住,选择正确的服务生命周期并妥善管理它们是至关重要的,因为它们直接影响你的应用程序的性能和行为。就像一个成功的建筑工地,工具箱如果整理得当,工具选择和使用得当,工地的整体效率将会大大提高。
311 0
|
11月前
|
Kubernetes 安全 数据安全/隐私保护
容器云服务是什么?
容器云基于容器技术,实现应用及其依赖的标准化封装,支持跨平台快速部署和高效管理。与传统虚拟机相比,容器共享宿主机操作系统内核,资源占用少、启动快,但隔离性稍弱。Docker Engine通过Dockerfile定义应用环境并生成容器镜像,适合单机场景;Kubernetes作为行业标准编排工具,支持自动扩缩容和服务发现,适用于大规模集群管理;OpenShift提供企业级全流程平台,满足合规要求;Rancher简化多云环境下的Kubernetes管理;CoreOS Tectonic专注于安全性,适用于高安全需求领域。容器云正朝着无服务器化、智能运维和边缘协同等方向发展。
785 2
|
12月前
|
人工智能 监控 安全
容器化AI模型的安全防护:构建可信的AI服务
在AI模型广泛应用的背景下,容器化AI模型的安全防护至关重要。主要安全威胁包括数据窃取、模型窃取、对抗样本攻击和模型后门攻击等。为应对这些威胁,需采取多层次防护措施:容器安全(如使用可信镜像、限制权限)、模型安全(如加密、水印)、数据安全(如加密、脱敏)和推理安全(如输入验证、异常检测)。此外,利用开源工具如Anchore Engine、Falco和ART等,可进一步加强防护。遵循安全开发生命周期、最小权限原则和深度防御等最佳实践,确保AI服务的安全性和可信度。
|
开发框架 监控 .NET
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
通过本文的介绍,希望您能深入理解并掌握ASP.NET WebForms中调用ASMX WebService接口的方法和技巧,并在实际项目中灵活运用这些技术,提高开发效率和应用性能。
890 5
|
Kubernetes Cloud Native Docker
云原生之旅:从传统架构到容器化服务的演变
随着技术的快速发展,云计算已经从简单的虚拟化服务演进到了更加灵活和高效的云原生时代。本文将带你了解云原生的概念、优势以及如何通过容器化技术实现应用的快速部署和扩展。我们将以一个简单的Python Web应用为例,展示如何利用Docker容器进行打包和部署,进而探索Kubernetes如何管理这些容器,确保服务的高可用性和弹性伸缩。
|
前端开发 Android开发
WinForm 直接运行 Admin.NET
本文介绍了如何将 Admin.NET 以 WinForm 桌面程序模式运行,简化了手动配置 Web 服务的过程,便于演示和作为单机软件使用。通过添加特定 NuGet 包、修改 `Program.cs` 和 `Form1.cs` 文件,并调整项目配置,最终实现了在 WinForm 中嵌入 WebView 组件显示 Admin.NET 界面的效果。
212 0
WinForm 直接运行 Admin.NET