.NET Core部署到linux(CentOS)最全解决方案,常规篇

本文为你们介绍使用 .NET Core部署到Linux服务器的方法,经过本文你将了解到Linux在虚拟机下的安装、Xshell,Xftp的使用方法、git在linux下的交互使用以及.net core在linux下的发布与运行全过程,本文皆在总结了一些经验与笔记在部署过程当中遇到的一些问题,同时分享给你们,供你们参考,欢迎讨论交流。linux

一、Linux操做系统、Xshell、Xftp安装

操做系统可选择你比较熟悉的Linux发行版,若是你是第一次接触Linux,推荐使用CentOs,由于本文的内容都是在CentOs中进行演示的。git

至于系统的安装,你能够选择云服务器,或者使用虚拟机安装。虚拟机安装CentOs的方式能够参考:一网打尽,一文讲通虚拟机安装及Linux使用github

1.一、Xshell链接工具

咱们推荐使用XShell做为链接工具,下载地址:https://www.netsarang.com/zh/xshell-download/web

Xshell是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 经过互联网到远程主机的安全链接以及它创新性的设计和特点帮助用户在复杂的网络环境中享受他们的工做。docker

Xshell能够在Windows界面下用来访问远端不一样系统下的服务器,从而比较好的达到远程控制终端的目的。除此以外,其还有丰富的外观配色方案以及样式选择。shell

安装完成后,打开软件,点击左上角的新建回话按钮,打开新建回话属性,以下图所示:c#

Xshell新建回话

在【主机】中填写服务器的ip地址,相应的用户与密码设置好,而后点击【链接】按钮。链接成功的界面以下所示:centos

1.二、Xftp文件上传工具

外部与Linux服务文件交互可使用Xftp工具上传或git仓库中转等其余方法,本文会演示使用Xftp与git仓库两种方式进行代码文件的中转。Xftp工具,下载地址:https://www.netsarang.com/zh/xftp-download/安全

Xftp是一个功能强大的SFTP、FTP 文件传输软件。使用了 Xftp 之后,MS Windows 用户能安全地在 UNIX/Linux 和 Windows PC 之间传输文件。服务器

安装完成后,能够经过XShell一键打开Xftp,Xftp打开后,在软件的右侧能够切换要上传文件的目标路径,而后将文件拖到右侧释放后,就会自动上传了。

1.三、使用git仓库进行中转

相对开发来讲,使用Git仓库中转的方式是咱们推荐的使用方式,在频繁的迭代更新中,先在本地编译发布后,再将文件拷贝到服务器,这个操做流程稍显繁琐。而经过git仓库来中转的方式则相对比较简单,开发者仅须要将开发好的代码推送(push)到git仓库,而后在服务器中执行build,publish等操做,减小了繁琐的拷贝文件的过程,由于build和publish都是在服务器中执行,能够经过编写shell部署脚本的方式,最终实现一键快速部署。

要使用git须要在服务器安装git客户端,并配置ssh公钥(配置公钥的目的是拉取私有的仓库,公开的仓库无需配置公钥)。

下面讲解具体的操做步骤:

首先安装git客户端,执行以下命令:

yum -y install git

在安装过程若是出现错误:Couldn't resolve host

通常是由于DNS服务器没有配置正确,解决办法:
一、打开文件/etc/resolv.conf在其中添加:

二、退出保存后重启网络:

service network restart

git安装后,经过以下命令生成sshkey:

# 这里的xx@xxx.com只是生成的sshkey的名称,并不约束货要求具体命名为某个邮箱。
ssh-keygen -t rsa -C "xx@xxx.com"

按照提示,按三次回车,便可生成sshkey,以下图所示:

经过以下命令可查看公钥:

cat ~/.ssh/id_rsa.pub

复制生成后的sshkey,配置到代码仓库的公钥中。

公钥已经生成,如何在代码托管平台进行配置呢?

接下来咱们将学习如何在gitee代码托管平台下配置公钥(github相似)。

进入私有仓库的【管理】页面,找到【公钥管理】,点击【添加公钥】,将刚刚生成的公钥复制过去,以下图所示:

出现相似于Hi xxx的字样,则表示git公钥配置成功了。

ssh -T git@gitee.com

次使用须要确认并添加主机到本机SSH可信列表,以下图所示:

输入yes后,出现相似于Hi xxx的字样,则表示git公钥配置成功了。

二、安装.NET Core SDK与运行时

在前面咱们已经作好了部署前的准备工做,安装了xshell、xftp、git、对仓库配置了公钥等。

接下来咱们将在linux服务器上安装.net core sdk。

.NET运行时是.NET程序运行的先决条件,而SDK并非必须的,但若是经过git方式进行文件中转的话,就须要到在服务器端进行编译,因此SDK也须要安装。(注:docker部署方式无需在服务器安装SDK和运行时,在后面的文章中咱们介绍

下面一块儿看看在CentOs中如何安装SDK和运行时(其余环境可参考官方文档:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux)。

在安装 .NET 以前,咱们须要将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。若是以前安装过.NET Core3.1 ,那么这个步骤能够省略

运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

经过以下命令安装SDK:

sudo yum install -y dotnet-sdk-5.0

.NET Core SDK 使你能够经过 .NET Core来 开发咱们的应用。

安装完成后,能够验证安装。

dotnet --info

经过以下命令安装netcore运行时:

sudo yum install -y aspnetcore-runtime-5.0

注:上述命令中的最后的5.0表示的是版本号,若是安装其余版本如:3.1,修改对应的版本号便可。参考资料:https://dotnet.microsoft.com/download/dotnet-core

若是已经安装了安装 .NET Core SDK,则无需安装相应的运行时,在上面咱们已经安装了sdk,再安装运行时会提示已经安装,以下图所示。

三、发布程序到服务器

在前面的准备工做中咱们介绍了两种将文件发布到服务器的方式,分别为:xftp与git,下面咱们分别演示这两种方式的方法与步骤。

3.一、经过Xftp发布到服务器

首先,准备好要发布的程序,
下图是我建立的一个.NET5.0的示例代码:


能够经过打开vs的程序包管理器控制台,执行以下命令进行发布:

dotnet publish -o ./publish

也能够右键项目发布,发布到文件夹中,以下图所示。

在这儿须要注意的是框架依赖部署模式,由于以前咱们已经安装了.NET Core环境,这里就不使用独立部署模式了,默认也就是“框架依赖”。

框架依赖部署:

依赖框架的部署 (FDD) 依赖目标系统上存在共享系统级版本的 .NET Core。 因为已存在 .NET Core,所以应用在 .NET Core 安装程序间也是可移植的。 应用仅包含其本身的代码和任何位于 .NET Core 库外的第三方依赖项。 FDD 包含可经过在命令行中使用 dotnet 实用程序启动的 .dll 文件。 例如,dotnet app.dll 就能够运行一个名为 app 的应用程序。
对于 FDD,仅部署应用程序和第三方依赖项。 不须要部署 .NET Core,由于应用将使用目标系统上存在的 .NET Core 版本。 这是定目标到 .NET Core 的 .NET Core 和 ASP.NET Core 应用程序的默认部署模型

优势:
①、不须要提早定义 .NET Core 应用将在其上运行的目标操做系统。 由于不管什么操做系统,.NET Core 的可执行文件和库都是用通用的 PE 文件格式,所以,不管什么基础操做系统,.NET Core 均可执行应用。
②、部署包很小。 只需部署应用及其依赖项,而无需部署 .NET Core 自己。
③、许多应用均可使用相同的 .NET Core 安装,从而下降了主机系统上磁盘空间和内存使用量。

缺点:
①、仅当主机系统上已安装你设为目标的 .NET Core 版本或更高版本时,应用才能运行。
②、若是不了解未来版本,.NET Core 运行时和库可能发生更改。 在极少数状况下,这可能会更改应用的行为。

独立部署:

独立部署 (SCD) 不依赖目标系统上存在的共享组件。 全部组件(包括 .NET Core 库和 .NET Core 运行时)都包含在应用程序中,而且独立于其余 .NET Core 应用程序。 SCD 包括一个可执行文件(如 Windows 平台上名为 app 的应用程序的 app.exe),它是特定于平台的 .NET Core 主机的重命名版本,还包括一个 .dll 文件(如 app.dll),而它是实际的应用程序。
对于独立部署,能够部署应用和所需的第三方依赖项以及生成应用所使用的 .NET Core 版本。 建立 SCD 不包括各类平台上的 .NET Core 本机依赖项,所以运行应用前这些依赖项必须已存在

优势:
①、能够对与应用一块儿部署的 .NET Core 版本具备单独的控制权
②、目标系统能够运行你的 .NET Core 应用,由于你提供的是应用将在其上运行的 .NET Core 版本

缺点:
①、因为 .NET Core 包含在部署包中,所以必须提早选择为其生成部署包的目标平台
②、部署包相对较大,由于须要将 .NET Core 和应用及其第三方依赖项包括在内。
③、向系统部署大量独立的 .NET Core 应用可能会使用大量磁盘空间,由于每一个应用都会复制 .NET Core 文件

在上图能够看到,发布以后的文件的路径为:bin/Release/net5.0/publish/

打开Xftp,将publish文件夹拖到Xftp右侧窗口,便可完成上传。

切换到发布的目录,启动运行,以下图所示,成功运行。

也能够指定端口

#启动站点,自定义端口号,运行环境
dotnet Core50Test.dll --urls="http://*:8081;http://*:8082" --environment=Development

这里urls配置,若是须要局域网或者外网访问,不能填成urls="http://localhost:8081;http://localhost:8082"

3.二、经过git中转发布

首先,将代码推送到git仓库中,复制SSH地址。以下图所示:

而后在服务器中,执行克隆命令:

mkdir core50test
cd core50test
git clone git@gitee.com:******/core50test.git

执行结果以下图所示:

此时项目代码已经下载到服务器中,切换工做目录到解决方案所在的目录。

cd core50test

而后执行dotnet publish命令对程序进行编译发布。

dotnet publish -o /yonghu/web/publish

执行完毕后,编译发布后的文件将被保存在/yonghu/web/publish目录中。

将工做目录切换到/yonghu/web/publish,执行以下命令:

dotnet core50test.dll

执行结果以下图:

到这里为止,我们的程序已经在linux服务器运行起来了。

经过上在的介绍,相信不少小伙伴已经对.netcore项目到linux的发布有了深入的认识了,但这些操做仍是略显繁琐,启动、中止、摘取等都是单独的去处理,下篇文章咱们将介绍经过配置使用Supervisor+Nginx,以及shell脚原本实现.net core的高效部署。


一路走来数个年头,感谢RDIFramework.NET框架的支持者与使用者,你们能够经过下面的地址了解详情。

RDIFramework.NET官方网站:http://www.rdiframework.net/

RDIFramework.NET官方博客:http://blog.rdiframework.net/

特别说明,框架相关的技术文章请以官方网站为准,欢迎你们收藏!

RDIFramework.NET框架由海南国思软件科技有限公司专业团队长期打造、一直在更新、一直在升级,请放心使用!

欢迎关注RDIFramework.NET框架官方微信公众号(微信号:guosisoft),及时了解最新动态。

使用微信扫描二维码当即关注

相关文章
相关标签/搜索