IT之家學院:.Net Core在Linux伺服器上部署.NET框架教程
感謝IT之家網友
DotNet碼農
的投稿
1、簡介
一直以來,微軟只對自家平臺提供.NET支持,這樣等於讓這個“理論上”可以跨平臺的框架在Linux和macOS上的支援只能由協力廠商項目提供(比如Mono .NET)。直到微軟推出完全開源的.NET Core。這個開源的平臺相容.NET Standard,並且能在Windows、Linux和MacOS上提供完全一致的API。雖然這個小巧的.NET框架只是標準.NET的一個子集,但是已經相當強大了。
一方面,這個小巧的框架可以讓某些功能性應用同時運行在三個平臺上(就像某些功能性的Python腳本一樣),另一方面,這也可以讓伺服器運維人員將ASP .NET服務程式部署在Linux伺服器上(特別是對於運行Windows Server較為吃力的伺服器)。
2、部署.NET Core
由於我沒有可用的macOS設備,我將僅用Linux(伺服器)作示範。我作示範的伺服器是CentOS7作業系統。
SSH連接至伺服器,安裝.NET Core的依賴項:
然後從微軟官方獲取.NET Core的主程序:
如果你的伺服器不能正確訪問這個位址,你可能需要手動訪問後面的位址,下載完畢之後,用任意一種方法傳遞進伺服器,並命名為dotnet.tar.gz。
執行指令將元件解壓至指定的位置:
創建連結以在任何路徑下直接引用dotnet指令:
至此,.NET Core框架應該就在你的伺服器上搭建好了。
3、嘗試部署一個ASP .NET服務程式
在本地電腦上,修改Visual Studio功能,確保這一項是被安裝的:
啟動Visual Studio,新建一個ASP .NET Core項目:
類型選擇Web應用程式。我們不對示例作太大的修改,僅僅是為了演示ASP .NET運行於.NET Core的狀況。在專案資源管理器內打開Program.cs,依然是熟悉的C#代碼:
為了能正常運行,我們稍稍修改代碼,讓host的物件初始化器看起來是這個樣子:
保存工程,將整個解決方案上傳至伺服器。再次連接伺服器,導航到你存放工程檔的目錄下,執行指令:
該指令指揮.NET Core恢復這個工程引用的包,耐心等待指令執行完畢。
接著,執行指令:
這條指令將使.NET Core編譯並運行這個工程。控制台沒有錯誤資訊並產生類似輸出,你的ASP .NET Core應用程式就應該在正確運行了:
試著在任意設備上訪問你伺服器的IP位址(或者功能變數名稱),如果能正確載入預設頁面,你的.NET Core環境就算部署完畢了:
這個.NET框架只是.NET標準的一個子集,不一定能100%相容一個複雜的ASP .NET服務程式。但是利用這個框架,你可以把伺服器切換至Linux系統,卻仍然採用ASP .NET作為服務程式的具體實現方法。你也不必為了調試運行於Linux的服務程式而專門去配置一個Linux工作環境——因為.NET Core也可以運行在Windows上,Visual Studio本身就支援使用IIS Express來本地調試一個ASP .NET Core應用程式。