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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 有些公司内部存在一些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 . 即可访问这个容器内的站点了,或者重启下整个容器也可以。

 

目录
相关文章
|
2月前
|
Oracle 关系型数据库 数据库
|
2天前
|
运维 Serverless API
Serverless 应用引擎产品使用之在阿里云函数计算中,容器运行过程中的最大内存使用量获取如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
23 2
|
4天前
|
XML Java 数据格式
手写spring第八章-定义标记类型Aware接口,实现感知容器对象
手写spring第八章-定义标记类型Aware接口,实现感知容器对象
4 0
|
5天前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
15 0
|
20天前
|
监控 安全 Java
有了容器化,还有必要制作 system service 来启动服务吗?
尽管有容器化技术,将服务作为 systemd 系统服务管理仍具有价值,因为它能实现系统整合、自动化管理、依赖处理、资源限制、安全增强及长期运行服务支持。systemd 允许设置服务间依赖、控制资源配额、日志监控和安全上下文。在 DevOps 环境中,通过 systemd 单元文件实现基础设施即代码,促进一致性与自动化部署。创建 systemd 服务涉及编写服务文件,定义描述、依赖、执行命令、重启策略等。
25 0
|
29天前
|
Kubernetes Docker 容器
K8s运行Docker容器出现cannot change locale (en_US.UTF-8)
K8s运行Docker容器出现cannot change locale (en_US.UTF-8)
9 0
|
2月前
|
关系型数据库 MySQL Nacos
【深入浅出Nacos原理及调优】「实战开发专题」采用Docker容器进行部署和搭建Nacos服务以及“坑点”
【深入浅出Nacos原理及调优】「实战开发专题」采用Docker容器进行部署和搭建Nacos服务以及“坑点”
51 1
|
2月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
32 0
|
2月前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css
5 0
|
2月前
|
JavaScript Shell Docker