.NET Core多平台開發體驗[3]: Linux (Windows Linux子係統)
如果想體驗Linux環境下開發和運行.NET Core應用,我們有多種選擇。一種就是在一台物理機上安裝原生的Linux,我們可以根據自身的喜好選擇某種Linux Distribution,目前來說像RHEL、Ubuntu、Debian、Fedora、CentOS和SUSE這些主流的Distribution都是支持的。如果讀者朋友們覺得這種方式比較麻煩,我們也可以采用虛擬機的形式安裝相應的Linux Distribution,比如我經常使用的都是安裝在VirtualBox上的Ubuntu。對於64為Windows 10的用戶來說,我們有了第三種選擇,那就是(WSL: Windows Subsystem for Linux),接下來我們就來演示在WSL上運行.NET Core應用。
接下來我們來簡單介紹一下如何啟用Linux子係統。首選需要提醒讀者朋友們的是:隻有64位的Windows 10周年紀念版本才提供對Linux子係統的支持,如果你的Windows 10版本比較老,你需要將它升級到較新的版本。在這之後,我們需要開啟係統的,對此我們隻需要選擇“設置(Settings)”>“更新與安全(Update and Security)”打開如下這個對話框。我們隻需在左側選擇“針對開發人員(For developers)”,並在右側提供的三個選項中選擇“開發者模式(Developer Model)”。
係統的開發者模式被啟用之後,我們需要通過“控製麵板(Control Panel)”>“程序與功能(Programs and Features)”打開如下圖所示的“程序與功能”對話框,並選擇“啟用或關閉Windows功能(Turn Windows features on or off)”打開“Windows功能”對話框。當我們勾選“適用於Linux的Windows子係統(Windows Subsytem for Linux”)選項並重啟後,針對Linux的Windows子係統特性被正式啟用。
當針對Linux的Windows子係統特性其中之後,係統賦予了我們一個名為的命令來管理這個子係統,我們可以利用它來安裝、卸載和更新Linux係統。到目前為止,我們僅僅是開啟了Linux子係統這個Windows特性,並沒有一個具體的Linux Distribution被安裝,所以我們現在需要做的就是以如下圖所示的形式執行“”命令安裝一個具體的Linux Distribution,該命令目前為我們安裝的是Ubuntu。Linux子係統完成之後,我們隻需要製定用戶名和密碼創建一個登錄賬號即可。
當Linux被成功安裝之後,我們可以在CMD命令行中執行命令進入Linux Bash Shell。如下圖所示,我們在CMD命令行中執行bash命令之後會自動進入Linux Bash Shell。我們在Bash Shell中執行lsb_release -a命令輸出當前安裝的Linux Distribution的版本信息。如果想恢複到CMD命令行模式,我們隻需要執行exit命令退出Bash Shell即可。
作為主係統的Windows和Linux子係統可以共享網絡係統和文件係統。Windows下的文件係統直接掛載到“”目錄下,所以Windows下的文件或者目錄路徑加上行“/mnt”前綴就變成了基於Linux子係統下的路徑。如圖1-25所示,CMD命令行環境下的當前工作目錄為“c:\users\jinnan”,當我們切換到Bash Shell後,當前工作目錄其實並沒有發生變化,隻是路徑變成了“”而已。
如果我們想在Linux下運行.NET Core應用,我們也隻需要安裝.NET Core SDK就可以了。針對不同的Linux Distribution,.NET Core SDK的安裝略有不同。對於主流的Linux發行版本(RHEL、Ubuntu、Debian、Fedora、CentOS和SUSE等), .NET Core的官方站點上給出了安裝.NET Core SDK的詳細教程,在這裏我們針對WSL的版本( )簡單介紹一下如何安裝對應的SDK。
對於Ubuntu下安裝.NET Core SDK,我們隻需要執行apt-get安裝對應的deb包就可以了,不過在這之前我們需要確保該包所在Feed的URL在本地被注冊。至於該Feed URL的注冊,則主要涉及到兩個步驟,第一個步驟是注冊用於檢驗deb包完整性的簽名密鑰(Signature Key)文件,該密鑰編碼後的內容(ASCII Armor)可以直接從地址“https://packages.microsoft.com/keys/microsoft.asc”下載。為了在本地注冊該密鑰文件,我們執行如下的命令下載該文件並執行“gpg --dearmor”將文本內容轉換成二進製保存在文件“microsoft.gpg”,最終將後者保存到受信任密鑰目錄“/etc/apt/trusted.gpg.d”下。
~$ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg ~$ sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
完成針對簽名密鑰文件的注冊之後,我們可以執行如下命令將在表示deb包源的“/etc/apt/sources.list.d”目錄下創建一個dotnetdev.list文件,.NET Core SDK所在deb包對應的Feed URL(https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod)就包含在這個文件中。在這之後微軟通過該Feed提供的所有的deb包都可以直接通過apt-get命令安裝。
~$ sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod xenial main" > /etc/apt/sources.list.d/dotnetdev.list'
當所在deb包的Feed被成功注冊並通過執行apt-get update命令作相應同步操作之後,我們就可以按照如下的方式執行apt-get install命令安裝.NET Core SDK了。值得一提的時候,如果你在本地曾經安裝過之前的版本,你最好先將它們卸載。
~$ sudo apt-get update ~$ sudo apt-get install dotnet-sdk-2.0.0
安裝完成之後,我們可以執行命令查看當前.NET Core SDK的基本信息,如果得到如下圖所示的輸出結果,那就證明.NET Core SDK被成功安裝。
.NET Core SDK同樣為Linux提供了dotnet這個重要的命令行工具,意味著這我們同樣可以利用它提供的腳手架模板創建相應的.NET Core應用。這次我們直接創建一個ASP.NET Core MVC,為此我們在執行dotnet new命令得時候將模板名稱指定為“mvc”。如下圖所示,我們在執行dotnet new命令時的當前工作目錄為“/mnt/c/”,也就是主係統Windows下的“c:\”,所以創建出來的ASP .NET Core MVC應用所在的根目錄為“c:\helloworld”,我們列了該目錄下的所有文件和子目錄。如果我們在Windows下執行相同的命令創建一個ASP.NET Core MVC命令,它也具有相同的目錄結構和文件內容。
和在Windows和Mac OS X下利用腳手架命令創建的應用一樣,我們在Linux下同樣可以在無需對它們作任何更改的情況下直接運行它們,為此我們隻需要在當前應用所在的目錄下執行dotnet run命令即可。如下圖所示,啟動後的ASP .NET Core MVC應用默認會綁定在5000端口進行請求監聽,由於Linux是當前Windows的子係統而非虛擬機,所以主子係統可以共享網絡,因此我們利用瀏覽器請求地址“https://localhost:5000”可以訪問這個應用的主頁。
.NET Core多平台開發體驗
.NET Core多平台開發體驗[1]: Windows
.NET Core多平台開發體驗[2]: Mac OS X
.NET Core多平台開發體驗[3]: Linux
.NET Core多平台開發體驗[4]: Docker
作者:蔣金楠
微信公眾賬號:大內老A
微博:www.weibo.com/artech
如果你想及時得到個人撰寫文章以及著作的消息推送,或者想看看個人推薦的技術資料,可以掃描左邊二維碼(或者長按識別二維碼)關注個人公眾號(原來公眾帳號蔣金楠的自媒體將會停用)。
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁麵明顯位置給出原文連接,否則保留追究法律責任的權利。
最後更新:2017-10-24 15:34:25