1.3 Linux
在Linux环境下开发.NET Core应用有多种选择。第一种选择是在一台物理机上安装原生的Linux,读者可以根据自己的习惯选择某种 Linux Distribution,目前的 RHEL、Ubuntu、Debian、Fedora、CentOS和SUSE这些主流的Distribution都是支持.NET Core的。第二种选择是采用虚拟机的形式安装相应的 Linux Distribution,笔者经常使用的是安装在 VirtualBox上的 Ubuntu。对于X64 Windows 10的用户来说,第三种选择更加方便快捷,也就是使用Windows 10提供的Linux子系统(Windows Subsystem for Linux,WSL),目前最新版本为WSL 2。
1.3.1 启用Linux子系统
WSL 2要求操作系统必须是Windows 10 build 18917或者更高的版本。在Windows 10上启用WSL 2只需要开启“Virtual Machine Platform”和“Windows Subsystem for Linux”这两个特性即可。开启这两个特性的方式主要有两种:第一种是在 PowerShell 中以如下方式执行“Enable-WindowsOptionalFeature”命令(该命令需要以管理员身份执行)。
第二种是采用可视化的方式。具体来说,可以通过“Control Panel”→“Programs and Features”打开图 1-17 所示的“Programs and Features”对话框,并选择“Turn Windows features on or off”,打开“Windows Features”对话框。选中“Virtual Machine Platform”和“Windows Subsystem for Linux”复选框,确定并重启计算机之后,针对Linux的Windows子系统就会被启用。
图1-17 开启WSL 2相关特性
启用WSL之后,我们可以根据需要安装对应的Linux Distribution。最方便的方式就是直接在Microsoft Store中下载并安装对应的Linux Distribution,如Microsoft Store提供了图1-18所示的免费版Ubuntu 18.04 LTS。
图1-18 利用Microsoft Store安装Ubuntu 18.04 LTS
如果 Microsoft Store 不可用(笔者的操作系统就是没有 Microsoft Store 的 Windows 10 Enterprise LTSC版本),我们可以直接利用curl.exe or the Invoke-WebRequest以命令行的方式下载Linux安装包。下面列举了几个常用的Linux Distribution的下载地址。
● Ubuntu 18.04:https://aka.ms/wsl-ubuntu-1804.
● Ubuntu 18.04 ARM:https://aka.ms/wsl-ubuntu-1804-arm.
● Ubuntu 16.04:https://aka.ms/wsl-ubuntu-1604.
● Debian GNU/Linux:https://aka.ms/wsl-debian-gnulinux.
● Kali Linux:https://aka.ms/wsl-kali-linux.
● OpenSUSE:https://aka.ms/wsl-opensuse-42.
● SLES:https://aka.ms/wsl-sles-12.
当 Linux 被成功安装之后,我们可以通过在 CMD 命令行中执行“bash”命令进入 Linux Bash Shell。如图 1-19 所示,在 CMD 命令行中执行“bash”命令之后会自动进入 Linux Bash Shell。在Bash Shell中执行“lsb_release-a”命令会输出当前安装的Linux Distribution的版本信息。如果想恢复到CMD命令行模式,只需要执行“exit”命令退出Bash Shell即可。
图1-19 查看Linux Distribution的版本信息
作为主系统的 Windows和 Linux子系统可以共享网络系统与文件系统。Windows下的文件系统直接挂载到“/mnt”目录下,所以 Windows 下的文件或者目录路径加上“/mnt”前缀就会变成基于 Linux 子系统下的路径。如图 1-19 所示,CMD 命令行环境下的当前工作目录为“C:\Users\jinnan”,当我们切换到Bash Shell后,当前工作目录其实并没有发生变化,只是路径变成“/mnt/c/Users/jinnan”而已。
1.3.2 构建开发环境
如果想在 Linux 下运行.NET Core 应用,只需要安装.NET Core SDK 即可。针对不同的Linux Distribution,.NET Core SDK 的安装略有不同。对于主流的 Linux 发行版本(RHEL、Ubuntu、Debian、Fedora、CentOS 和 SUSE 等),.NET Core 官方网站给出了安装.NET Core SDK的详细教程。对于Ubuntu 18.04 LTS,.NET Core 3.0 SDK可以执行如下命令进行安装。
安装完成之后,可以执行“dotnet--info”命令查看当前.NET Core SDK的基本信息,如果得到图1-20所示的输出结果,就证明.NET Core 3.0 SDK安装成功。
图1-20 执行“dotnet--info”命令查看.NET Core SDK(Linux)的基本信息
1.3.3 利用命令行创建ASP.NET Core应用
.NET Core SDK同样为Linux提供了重要的命令行工具dotnet,这说明利用该命令提供的脚手架模板可以创建相应的.NET Core应用。下面直接创建一个空的ASP.NET Core应用,所以在执行“dotnet new”命令的时候将模板名称指定为“web”。如图1-21所示,执行“dotnet new”命令时的当前工作目录为“/mnt/c/helloworld”,也就是主系统 Windows 下的“C:\helloworld”,图1-21列出了该目录下的所有文件和子目录。
图1-21 执行“dotnet new”命令创建一个ASP.NET Core应用
与在Windows和macOS下利用脚手架命令创建的应用一样,在Linux下可以在无须对这些命令做任何更改的情况下直接加以运行,为此我们只需要在当前应用所在的目录下执行“dotnet run”命令即可。如图 1-22 所示,启动后的 ASP.NET Core 应用默认绑定在 5000(HTTP)和5001(HTTPS)端口上进行请求监听,由于 Linux是当前 Windows的子系统而非虚拟机,所以主、子系统可以共享网络。因此,利用浏览器请求地址“http://localhost:5000”可以访问这个应用的主页。
图1-22 启动并访问ASP.NET Core应用