麒麟服务器上安装.Net Core环境并发布web网站

本文主要记录在麒麟服务器上安装.Net Core的运行环境,并运行.Net Core webApi程序。

准备工作

我使用的是华为云主机,操作系统为:银河麒麟高级服务器操作系统V10,CPU为鲲鹏,架构为Arm64。

如何购买一台云主机?各位自己在网上搜索吧!

由于麒麟系统是基于linux系统的,所以以下操作同样适用于linux系统。

.Net Core版本: 5.0

在window系统上,使用visual studio 2019创建一个.net core 5.0的webApi应用程序,编译后发布到D:\publish目录下。目录名称不一定是publish,可以任意命名。我们的最终的目的是要将我们编写好的webApi应用程序文件夹上传到linux服务器上,并启动web服务。

登录Linux服务器

首先安装putty工具,点此下载

这个工具可以用来远程登录Linux服务器。当然,登录后仍然是命令行的方式。

安装完成后,打开PuTTY软件,输入IP地址,然后点击"Open"接口即可打开终端窗口。
PuTTY登录界面
输入管理员账户:root,然后再输入你的Linux服务器的登录密码,即可远程登录Linux服务器,见下图。
随后即可在此终端窗口内输入各种命令来配置.Net Core运行环境和运行网站了。
PuTTY-Login

下载.net 5.0 SDK

此处采用原始的方式来安装,即下载.net 5.0 压缩包安装。

打开.net 5.0的下载页面,即可看到各种操作系统版本的SDK,见下图。

由于我选用的麒麟服务器为Arm64架构的,因此选择Arm64。读者根据服务器的需要,点击相应的版本。
.net 5.0 download
点击"Arm64"后进入具体的下载地址页面,如下图。
Linux Arm64 .net 5.0
此页面直接给出了下载地址。点击“Copy”,即可。

在Linux终端输入下面命令即可下载(同样的原理可以下载其它版本的.net sdk,只要更换对应的下载地址接口):

wget https://download.visualstudio.microsoft.com/download/pr/4d323232-ffcc-4c09-a043-a36b554c883e/096822e81dc29383b649cd015d1ff99a/dotnet-sdk-5.0.400-linux-arm64.tar.gz

下载完成后如图所示,最终的文件名为"dotnet-sdk-5.0-400-linux-arm64.tar.gz"。
wget

安装.Net 5.0 SDK, 并创建dotnet环境变量

linux 终端里采用以下命令,在HOME目录下创建dotnet文件夹,并将刚下载好的压缩包解压在其中;然后创建环境变量。

mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-5.0.400-linux-arm64.tar.gz -C $HOME/dotnet
export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet

上述后面两个命令"export"用于设置环境变量,但是这种方式每次登录都需要输入,很不方便。可以直接通过修改文件的方式一劳永逸的解决,具体如下:

vim /etc/profile

# 在最后一行加上
export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet

然后保存退出即可。使用vim命令打开文件修改、编辑、保存退出的命令自行查询,此处不再详述。

可通过"dotnet --info"命令查看安装后的.Net版本信息,见下图。.net sdk安装完成后,包含了.net runtime和asp.net core runtime。
dotnet --info
至此,linux系统下的.net core运行环境即安装完毕。

下面阐述一下如何部署.net core web程序。

前面说过,我们已经在windows系统下编译好web应用程序,并发布到文件夹publish中(在D盘根目录下),我们需要将此文件夹上传至linux服务器的“Rocket”文件夹中,Rocket文件夹也是任意指定的。

上传文件至linux服务器

首先要在Windows系统里将需要发布的文件上传到linux服务器上。

那么,如何上传文件到远程的linux服务器?

安装putty工具后,它提供了pscp命令用来上传或下载文件。

打开windows系统的控制台(cmd),通过以下命令可将D盘的readme.txt文件(需要有此文件)上传到linux服务器的rocket目录(之前创建好的)下,其中124.71.167.97是我的linux服务器地址,替换为你的即可:

pscp d:\readme.txt root@124.71.167.97:rocket/

之后提示输入linux服务器的密码,输入正确后,即可成功上传文件,见下图。
pscp上传文件
如果上传整个文件夹,则需加"-r"。例如,下面命令将D盘的publish文件夹整体上传到linux系统的rocket目录下.

pscp -r  D:\publish root@124.71.167.97:rocket/

注意,上述命令是在windows系统的控制台里输入的,不是在Linux服务器终端窗口里输入的!!

启动网站

现在,linux服务器上有了.net core运行环境,也有了需要发布的网站内容(/rocket/publish文件夹)。

1. 进入需要部署网站的文件夹:publish文件夹;

cd rocket
cd publish

cd-publish
2. 启动网站

dotnet AeroSpace.Rocket.WebApi.dll --urls "http://*:80"

上述命令启动网站后,访问的端口为80,这样我们在浏览器里访问的时候就可以不需输入端口号了;当然你也可以设置其它的端口号。

注意!!AeroSpace.Rocket.WebApi.dll就是publish文件夹中的主文件l。
dotnet--urls
3. 访问网站
在联网的任一台终端中,打开浏览器,输入地址:http://124.71.167.97/swagger,即可看到网站的webApi接口页面。
大功告成。
swagger
可使用Postman等工具来测试webApi端口。

Linux路径问题

在部署.net core webApi应用程序时,发现如果内部有读取文件的语句,则必须格外注意。
例如,以下代码在Windows系统下运行没有任何问题:

// CurrentDir为当前dll所在目录
string CurrentDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
// Facilities.dat文件的完整路径:
string path1 =Path.Combine(CurrentDir, @"Data\Rocket\Facilities.dat")

但是在Linux运行下,path1的值为:" /root/rocket/publish/Data\Rocket\Facilities.dat"。

Linux系统下,路径使用“/”,而我们使用了"",所以会出错。而"/“路径分隔符在Windows系统里也可以,因此,最保险的办法是在编写.Net Core程序时,全部使用”/"符号用作路径分隔符。

因此,将上述代码的写法改为下面形式即可:

// CurrentDir为当前dll所在目录
string CurrentDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
// Facilities.dat文件的完整路径:
string path1 =Path.Combine(CurrentDir, @"Data/Rocket/Facilities.dat")

此外,文件名为中文也不行!待后续解决!

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
麒麟桌面操作系统可以通过Mono或Wine来运行.NET应用程序,您可以根据自己的需求选择其中的一种方式。 1. Mono方式: Mono是一个开源的.NET框架实现,可以在Linux和其他Unix系统上运行.NET应用程序。在麒麟桌面操作系统中安装Mono的方法如下: (1)打开终端并输入以下命令,添加Mono的软件源: ``` sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list sudo apt update ``` (2)安装Mono运行时和开发工具: ``` sudo apt install mono-devel ``` (3)安装完成后,您可以在终端中输入以下命令,检查Mono是否安装成功: ``` mono --version ``` 2. Wine方式: Wine是一个兼容Windows应用程序的开源软件,可以在Linux和其他Unix系统上运行Windows应用程序。在麒麟桌面操作系统中安装Wine的方法如下: (1)打开终端并输入以下命令,添加Wine的软件源: ``` sudo dpkg --add-architecture i386 wget -nc https://dl.winehq.org/wine-builds/winehq.key sudo apt-key add winehq.key sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main' sudo apt update ``` (2)安装Wine: ``` sudo apt install --install-recommends winehq-stable ``` (3)安装完成后,您可以在终端中输入以下命令,检查Wine是否安装成功: ``` wine --version ``` 安装完成后,您可以将.NET应用程序安装在麒麟桌面操作系统中,并使用Mono或Wine来运行它。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值