介绍
在本文中,我们将解释如何在 Linux 操作系统(Ubuntu 20.04 LTS)上安装 .NET Core 并能够运行 .NET Core 应用程序,此外还可以运行它们并能够运行例如 ASP.NET Core并且您可以从客户端看到以测试其操作。
为什么要在 Linux 上运行 Microsoft 应用程序?答案可能有很多,我们可以说是为了超越长期存在的壁垒,以及他们应该在这两个操作系统环境之间看到的“竞争”,另一个是为了吸引所有 Linux 社区,以便他们可以更多地工作舒适地,很好地支持 C# 应用程序或具有 .NET Core 的所有功能的网页,另一个答案可能是降低开发公司的成本或作为用户程序员的自己,总之,有很多原因导致 .NET Core在基于 Linux 的操作系统上受支持。
.NET Core 与 Ubuntu 兼容。本文介绍如何在 Ubuntu 上安装 .NET Core。当某个版本的 Ubuntu 不再受支持时,.NET Core 将不再与该版本兼容。但是,您可以在这些版本上安装 .NET Core 的自定义说明稍多一些。
支持的发行版
在下图中,根据来源(https://docs.microsoft.com/en-us/dotnet/core/install/linux-ubuntu),我们有到目前为止支持和不支持的版本的比较表有它。
在本文中,我们将使用 Ubuntu 20.04 LTS (https://ubuntu.com/#download) 和 .NET Core 3.1 稍后我们将使用 .NET Core 5.0
我们将需要以下内容:
- Linux 安装在一些已安装和配置的实例中(https://www.process.st/checklist/ubuntu-server-setup-process/)我把它留到第 14 步,这样你就已经有了一个配置良好的安装。
- Putty 通过SSH访问 Linux 服务器。
- 非常渴望学习。
目录
- 在 Linux 环境中安装 .NET Core 3.1 SDK 和运行时。
- 在 .NET Core 中创建和编译您的第一个应用程序。
- 在 ASP.NET Core 中创建应用程序。
- 从 Web 浏览器测试我们的 ASP.NET Core 应用程序。
在 Linux 环境中安装 .NET Core 3.1 SDK 和 Runtime
安装 Ubuntu 后,转到它一步一步解释谁是他们的第一次的链接,我们必须通过 SSH(安全外壳)访问操作系统,我使用 Putty 作为参考,但他们可以使用那个有最大的亲和力。
现在,我们需要在两台计算机或虚拟机之间进行互连,调用客户端和另一台服务器,在我的情况下,它是同一网络上的两台计算机,以便能够控制我们想要运行的 Linux 环境.NET Core,为此,一旦安装了 Putty,我们会在 Windows 控制台中使用 Ping 命令检查两台计算机是否已很好地连接到网络。
现在我们运行 Putty 并输入安装了我们的 Linux 的远程计算机的 IP 地址。
接下来,我们已经通过 SSH 建立了连接,如果一切都应该出现,它请求访问的 Linux Shell 的窗口,这是之前配置的 Ubuntu 用户的凭据(用户名/密码)
到目前为止,我们已经在 Linux 机器中,现在,因为我们要运行安装,所以尝试切换到在 UNIX 级别上拥有最多权限的 root 用户是很重要的,因此,我们必须执行第一条命令才能从普通用户更改为 root。
hughfernandez@neptuno:~$ su -
它将询问 root 用户密码,此时我们可以继续安装 .NET Core,但首先,始终建议使用以下命令运行最近的更新。
sudo apt-get update # 获取可用更新列表。
sudo apt-get upgrade # 严格更新当前软件包
sudo apt-get dist-upgrade # 安装(新)更新
sudo reboot # 重启操作系统
sudo apt-get upgrade # 严格更新当前软件包
sudo apt-get dist-upgrade # 安装(新)更新
sudo reboot # 重启操作系统
由于您在安装 .NET 之前重新启动了系统,因此请运行以下命令将 Microsoft 包签名密钥添加到您的受信任密钥列表中,并添加包存储库。
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
SDK安装
要安装 .NET Core SDK,请运行以下命令:
sudo apt-get update; \
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-3.1
运行时安装
以下命令安装 ASP.NET Core 运行时,它是 .NET Core 最兼容的运行时。在您的终端中,运行以下命令。
sudo apt-get update; \
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
sudo apt-get install -y aspnetcore-runtime-3.1
作为 ASP.NET Core Runtime 的替代方案,您可以安装不包含 ASP.NET Core 支持的 .NET Core Runtime:将上述命令中的 aspnetcore-runtime-3.1 替换为 dotnet-runtime-3.1。
sudo apt-get install -y dotnet-runtime-3.1
在 .NET Core 中创建和编译您的第一个应用程序
通过这种方式,我们可以已经安装了 .NET Core 3.1 的 SDK 版本和运行时来运行我们的应用程序。如果您想知道可以运行哪些项目包含在此框架中,您可以通过执行以下命令获得完整列表:
dotnet new --help
我们将开始我们的“hello world”,首先我们将在 Linux 中创建我们的项目,然后我们以 root 用户身份进入主文件夹,我们将看到我们的 Ubuntu 用户的文件夹,在这个在这种情况下,我的用户是“hughfernandez”,我们将在其中创建文件夹,我们将在其中使用命令执行我们的第一个应用程序。
mkdir holamundoConsola
我们访问它并看到我们什么都没有,但我们已经在文件夹中。
我们执行以下命令:
dotnet new console
如果我们使用以下命令检查生成的控制台项目文件列表:
ls -1l
如果我们已经想查看特定文件,例如“Program.cs”,我们必须执行以下命令(重要的是要完全按照其显示的方式写入文件,否则 nano 将打开一个新文件)
sudo nano Program.cs
如上图所示,我可以访问名为“Program”的 .cs 文件,并且可以添加“Hello world from Linux!”,要保存更改,我们按 Control + X,它会要求覆盖更改并在 Linux 中再次返回命令环境。
到目前为止,我们已经可以编译我们的应用程序并使用以下命令运行它
dotnet build
dotnet run
这样我们已经创建了控制台解决方案,我们输入了文件“Program.cs”,我们用我们的hello world修改了代码行,最后是程序的编译和执行,但这次是在Linux环境下。
在 ASP.NET Core 中创建应用程序
对于 ASP.NET Core 主题,我们必须像上一个示例一样创建文件夹,在我的例子中,我给它命名为“demoAsp”,我们输入它并执行以下命令来创建一个 ASP.NET Core 项目,
dotnet new razor
要么
dotnet new mvc
如果他们询问项目名称,命令“dotnet new”默认为他们在执行命令时创建的文件夹的名称
要在 ASP.NET Core 中运行我们的应用程序,您必须首先使用“dotnet build”命令对其进行编译,使其生成文件夹“/bin/Debug/netcoreapp3.1”,然后在上述最后一个文件夹中执行以下命令
dotnet demoAsp.dll
只做一个直接测试,如果一切都不是位于项目的根文件夹中,并且通常运行“dotnet run”。
从 Web 浏览器测试我们的 ASP.NET Core 应用程序
已经以这种方式并且我们在 ASP.NET Core 中的应用程序正在 .NET Core 的 Kestrel 服务器上运行,但是我们还没有能够从浏览器访问它的出口,这是因为它在 localhost 中运行并且 Linux 假设只能访问它,因此,必须从 Linux 本身执行以下命令,
dotnet run --urls "http://0.0.0.0:5000"
在这种情况下,“URLs”参数指定 Kestrel 应该侦听的 IP 地址和端口。默认情况下,Kestrel 只会侦听 localhost 地址,因此我们必须明确指定我们希望它侦听任何 IP 地址以执行此测试。
现在为了测试我们可以从任何客户端访问,我们转到 Windows 计算机并打开任何 Web 浏览器并输入 Linux 机器的 IP 地址和端口 5000 "http://the-ip-of-your-server: 5000"要验证 Web 应用程序是否正常工作,
如果您需要能够在不执行 URLs 命令的情况下自动从其他计算机远程(外部)访问该网站,您可以直接在项目中对其进行编程,您必须将其链接不同。
为此,您必须访问新创建项目的文件并打开“Program.cs”。在这里,您添加对“UseUrls”方法的调用,如下所示。
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://0.0.0.0:5000")
.UseStartup<Startup>();
这会将 ASP.NET Core 网站绑定到所有服务器的 IP 地址,而不仅仅是 localhost,这是它默认执行的操作。
结论
到目前为止,如果您能够成功执行本文中的所有步骤,那么您已经能够执行以下操作。
- 配置安装 Linux Ubuntu。
- 了解如何使用 SSH 协议远程访问 Linux 机器。
- 了解如何将 SDK 和 .NET Core Runtime 安装到您希望可用的版本中。
- 知道如何在 Linux 目录中移动。
- 在 Linux 环境中开始在 .NET Core 中生成项目。
- 编译并能够在 Linux 上运行 .NET Core 应用程序。
- 从任何 Web 浏览器在 ASP.NET Core 中运行页面。