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

这篇具有很好参考价值的文章主要介绍了.NET Core部署到linux(CentOS)最全解决方案,常规篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

1、Linux操作系统、Xshell、Xftp安装

操作系统可选择你比较熟悉的Linux发行版,如果你是第一次接触Linux,推荐使用CentOs,因为本文的内容都是在CentOs中进行演示的。

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

1.1、Xshell连接工具

我们推荐使用XShell作为连接工具,下载地址:https://www.netsarang.com/zh/xshell-download/

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

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

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

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

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

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

1.2、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.3、使用git仓库进行中转

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

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

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

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

  1. yum -y install git

在安装过程如果出现错误:Couldn’t resolve host

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

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

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

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

service network restart

git安装后,通过如下命令生成sshkey:

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

按照提示,按三次回车,即可生成sshkey,如下图所示:
.NET Core部署到linux(CentOS)最全解决方案,常规篇

通过如下命令可查看公钥:

  1. cat ~/.ssh/id_rsa.pub

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

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

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

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

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

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

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

  1. ssh -T git@gitee.com

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

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

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

2、安装.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 包存储库。

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

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

通过如下命令安装SDK:

  1. sudo yum install -y dotnet-sdk-5.0

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

.NET Core SDK 使你可以通过 .NET Core来 开发我们的应用。

安装完成后,可以验证安装。

dotnet --info

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

通过如下命令安装netcore运行时:

  1. sudo yum install -y aspnetcore-runtime-5.0

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

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

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

3、发布程序到服务器

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

3.1、通过Xftp发布到服务器

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

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

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

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

  1. dotnet publish -o ./publish

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

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

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

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

框架依赖部署:

依赖框架的部署 (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 文件

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

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

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

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

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

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

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

也可以指定端口

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

这里urls配置,如果需要局域网或者外网访问,不能填成urls=”http://localhost:8081;http://localhost:8082“

3.2、通过git中转发布

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

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

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

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

执行结果如下图所示:

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

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

  1. cd core50test

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

  1. dotnet publish -o /yonghu/web/publish

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

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

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

  1. dotnet core50test.dll

执行结果如下图:

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

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

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

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

 

作者|国思软件文章来源地址https://www.toymoban.com/news/detail-427779.html

到了这里,关于.NET Core部署到linux(CentOS)最全解决方案,常规篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一个基于ASP.NET Core完全开源的CMS 解决方案

    MixCore CMS是一个基于.NET Core框架的开源内容管理系统(CMS),提供了丰富的的基础功能和插件,是一款面向未来的企业 Web  CMS ,可轻松构建任何类型的应用程序。集成了Google Analytics分析,以及友好的Seo功能,非常适合用于创建企业网站、内容系统、个人博客,也可以用于开发

    2024年02月05日
    浏览(83)
  • linux(centos7)定时关机解决方案

    使用场景与痛点:        根据实际需求,每个星期五都要关闭服务器若干,痛点如下: 1是服务器比较多,按起来麻烦。 2是因为周五时间点特殊,着急下班容易忘记关闭服务器。 那些要关注才能看的博客,不是我喷,写的不咋地,还TNN的要关注,有毛病 解决方案:    

    2024年02月11日
    浏览(37)
  • Linux centos7.x系统 下没有ens33 网卡的解决方案

    安装完windows11 + Centos7.9 版本的双系统之后 , 启动Centos7.9时发现没有网卡信息 , 只有ifcfg-lo网卡的信息 , 这个时候就证明没有网卡信息,或者网卡驱动不匹配(我这里是没有网卡),所以我们要重新安装 , 安装步骤如下 : 我这里的型号是 : 00:1f.6 Ethernet controller: Intel Corporation Ether

    2024年02月08日
    浏览(38)
  • 【虚拟机开不了】linux、centOS虚拟机出现entering emergency mode解决方案

    按他的操作输入journalctl之后输入shift+g到日志最后查看报错发现是xfs(dm-0有问题) 解决问题

    2024年02月09日
    浏览(61)
  • CentOS7上部署langchain-chatglm或stable-diffusion可能遇到的Bug的解决方案

    进入你的代码目录下 下载依赖 这里可能有的朋友会有问题会出现某些包下载不了,这里建议直接使用阿里源即可,在确定你的cuda版本之后(使用nvidia-smi确定cuda版本) 命令行执行 卸载掉刚才pip安装的版本!!!!因为此处安装的版本还缺少cuda的支持,确定卸载掉之后 执行 此处X为

    2024年02月16日
    浏览(39)
  • CentOS7在Linux下用yum安装Development Tools(开发工具套件)时报错的解决方案

    目录 1、操作环境 2、问题描述 3、原因分析 4、解决方案  本机系统:Window 10 专业版 虚拟机中的操作系统:CentOS Linux release 7.4.1708 (Core) -x86_64 虚拟机中的操作系统内核:Linux 当用yum安装Development Tools时出现如下报错,无法安装。 报错释义:没有安装组信息文件,可能要运行:

    2024年02月11日
    浏览(53)
  • 80端口被System占用最全解决方案

    想要启动若依系统,启动失败,提示80端口被占用。百度搜索了很多方法无法解决,现将自己尝试的方法都总结一下,希望对碰到这个问题的朋友有点帮助。 进入命令提示行(开始运行输入 CMD),输入命令 netstat –ano ,就可以看到本机所有端口的使用情况,一般80端口在第一

    2024年01月16日
    浏览(47)
  • 可能是最全的:虚拟机使用失败解决方案汇总

    目录 前言  简单说说 1、安装时报错/安装后无法启用虚拟机  如何解决 方法一:移除Hype-V,成功率:40% 方法二:安装WHP,成功率:99% 方法三:恢复出厂设置,成功率:100% VBX:想滥竽充数?不好意思 补充  2、无法读取键盘输入且无法安装tool(灰色) 方法一:切换至微软默

    2024年02月20日
    浏览(39)
  • Linux Centos7安装后,无法查询到IP地址,无ens0,只有lo和ens33的解决方案

    在VMware中,安装Linux centos7操作系统后,想查询本机的IP地址,执行ifconfig命令 结果如下: 结果显示本机有一个ens33网卡,和一个lo回环网卡,没有其余的网卡信息。并且,ens33网卡无法查询到ip地址。此时需要手动配置。 首先需要确认,在/etc/sysconfig/network-scripts/目录下,是否

    2024年02月05日
    浏览(48)
  • IDEA中Maven爆红,依赖下载失败的最全解决方案

    目录 1. 先排查Maven的配置信息是否正确 1.1 maven的settings.xml中的配置 1.2 idea中配置maven  2. 可能是网络卡顿原因,导致依赖下载失败,或者依赖下载不全,依赖包丢失 2.1 网络卡顿 2.2 maven依赖jar包下载不全,导致依赖包丢失。 3. 检查jdk版本是否正确,因为有些依赖与jdk版本不

    2024年02月16日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包