.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的安装非常简单,执行如下命令:
curl https://jexus.org/release/x64/install.sh|sudo sh
注:运行安装命令,需要操作者有root权限。
1.2、Jexus的配置与使用
安装完成后,切换到/usr/jexus目录,修改/usr/jexus/siteconf目录下的default,内容如下所示:
注:因为在前面的章节用了nginx,使用了80端口,因此这儿我使用8099端口。
port=8099 #端口
hosts=* #域名
AppHost={cmd=dotnet Core50Test.dll; root=/root/app_data/core50test/publish; port=5000}
接下来,我们重启jexus,执行如下命令:
/usr/jexus/jws restart
提示Ok后,我们的应用就表示启动起来了。
可以通过执行如下命令,看下执行的结果:
ps -aux
可以看到我们的应用已经启动起来了,到浏览器使用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 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。
容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:
- 您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。
- 他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。
- 当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。
- 测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。
Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。
Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。
2.2、docker安装
执行如下命令:
sudo yum install docker
PS:
遇报错 Another app is currentlty holding the yum lock ,waiting for it to exit…
解决方法: rm –r /var/run/yum.pid 这个命令 解锁即可
安装完成后,执行如下命令设置docker开机启动:
systemctl enable docker
执行如下命令启动docker:
systemctl start docker
查看docker启动状态:
ps:安装过程有问题的话,可能直接运行如命令安装。
yum install docker-ce-cli
查看docker版本命令:
2.3、.net core docker支持
安装docker之后,我们需要在代码里增加dockerfile文件。
通过Visual Studio可以帮我们自动生成,在解决方案中,右击项目名称,依次选择【添加】->【Docker支持】,如下图所示:
生成的dockerfile文件如下所示:
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
WORKDIR /app
EXPOSE 80FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
WORKDIR /src
COPY ["Core50Test.csproj", ""]
RUN dotnet restore "./Core50Test.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "Core50Test.csproj" -c Release -o /app/buildFROM build AS publish
RUN dotnet publish "Core50Test.csproj" -c Release -o /app/publishFROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Core50Test.dll"]
将代码推送到git仓库,然后再linux服务器中拉取最新代码。
切换到/root/app_data/source/core50test目录,执行如下命令,拉取最新代码:
git pull
然后执行如下命令,将代码打包为镜像:
docker build -f Dockerfile -t core50test .
首次打包镜像涉及到拉取.NET Core的官方镜像,拉取速度可能较慢,请耐心等待。
打包完成后,执行如下命令,可查看当前服务器已存在的镜像:
docker images
镜像打包完成后,我们就可以执行docker run命令启用我们的应用了:
docker run -p 81:80 -dit --restart=always --name core50test core50test
执行结果如下:
通过浏览器访问:http://ip:81。如无意外,我们可以看到应用已经成功运行。
**docker run :**创建一个新的容器并运行一个命令
语法
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明:
- -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
- -d: 后台运行容器,并返回容器ID;
- -i: 以交互模式运行容器,通常与 -t 同时使用;
- -P: 随机端口映射,容器内部端口随机映射到主机的端口
- -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
- -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- –name=“nginx-lb”: 为容器指定一个名称;
- –dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
- –dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
- -h “mars”: 指定容器的hostname;
- -e username=“ritchie”: 设置环境变量;
- –env-file=[]: 从指定文件读入环境变量;
- –cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;
- **-m
.NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)相关推荐
- .NET Core部署到linux(CentOS)最全解决方案,常规篇
本文为大家介绍使用 .NET Core部署到Linux服务器的方法,通过本文你将了解到Linux在虚拟机下的安装.Xshell,Xftp的使用方法.git在linux下的交互使用以及.net core ...
- .NET5都来了,你还不知道怎么部署到linux?最全部署方案,总有一款适合你
随着2020进入4季度,.NET5正式版也已经与大家见面了.不过,尽管 .NET Core发布已经有四五年的时间,但到目前为止,依旧有很多.NET开发者在坚守者.NET4,原因不尽相同,但最大的问题可 ...
- 锁相环原理及数字化,用FPGA实现全数字高阶锁相环
FPGA实现全数字高阶锁相环 本人通信专业大三学生,非常感谢杜勇老师的<数字通信同步技术>和<锁相环技术原理>,带领小白的我从零开始一点点了解数字同步技术. 第一次写文章,记录 ...
- ASP.NET Core部署到Linux服务器(CentOS7 x64)
前言 本文主要讲解如何一步步将ASP.NET Core网站发布到Linux服务器,文中会讲解具体步骤及需要避免的各种问题. 目录 一.环境介绍 二.创建及发布ASP.NET Core网站项目 三.服务 ...
- centos+7.2+linux版本,在Linux Centos 7.2 上安装指定版本Docker。
相关资料链接: 先清空下"历史" yum remove docker \ docker-common \ docker-selinux \ docker-engine 安装必要的包 ...
- 【性能测试】如何用一条命令完全掌握linux系统性能监控(top高阶用法)
目 录 一 引 言 二 top命令高阶用法 场景1:采样3次,采样间隔为10s: 场景2:采样2h,采样间隔为10s,性能数据保存到test.csv文件中: 一 引 言 熟悉CentOS linux ...
- mvc可以运行在linux下吗,asp.netmvc部署到linux(centos)
介绍将asp.netmvc项目部署到centos系统. 开发工具:win10+vs2017+.NetFramework4.6.1+Vmware14+centos 1.安装Jexus 这里使用独立版(专 ...
- Linux下数据库连接超时时长,关于.Net Core 部署在Linux下连接SqlServer数据库超时解决办法...
.Net Core 在 Linux 下连接 SqlServer 需要 SqlServer2008 SP3或以上版本,或SqlServer2012,或SqlServer2014. 如果SqlServer ...
- .net core 部署在Linux系统上运行的环境搭建
目录 参照官方文档,地址:https://www.microsoft.com/net/learn/dotnet/hello-world-tutorial#install 1.添加yum ...
最新文章
- .Net使用SignalR实现消息推送功能预研及Demo
- python接口自动化测试框架(post提交添加变量)
- VS2008快捷键大全
- rman删除7天前备份_RMAN备份
- php代码实现对word文件的查找与替换,ThinkPHP5使用phpword实现文件模板字符替换
- Logistic回归与牛顿迭代法
- 字体--Ubuntu手记之系统配置
- Web前端笔试面试题汇总(转自github)
- 使用screen管理后台程序
- FPGA时钟激励编写(方法一)
- python 生成excel像素画_【译】只用 CSS 就能做到的像素画/像素动画
- 刨根问底--struts-default.xml
- linux mysql外网连接不成功的可能原因
- 关于ILRunTime + FGUI 组合使用的补充
- 【Python】利用Python拟合函数曲线
- 详述GPS原理及RTK技术应用
- 【转】很实用的编程英语词库,共收录一千五百余条词汇
- ubuntu下配置apache2+php+mysql By Assassin
- Nagios和ndo2db系统脚本---for gentoo
- 明日之后如何注销一个服务器的账号,明日之后账号怎么注销_明日之后账号注销方法介绍_玩游戏网...
热门文章
- Distantly Supervised NER with Partial Annotation Learning and Reinforcement Learning阅读笔记
- Django Migration Error with MySQL: BLOB/TEXT column *** used in key specification without a key leng
- java do while 循环语句用法
- 《明日边缘》生死轮回,像上帝一样活
- 操作系统经典20题总结==上岸
- python添加高斯白噪声及其原理
- 最简单的基于FFmpeg的推流器(以推送RTMP为例)
- Linux系统(Ubuntu)编写C语言程序
- Javaweb学生信息管理系统(源码)
- 为什么现在90后员工离职率那么高?
- .NET Core部署到linux(CentOS)最全解决方案,常规篇