天天看點

.NET跨平台之旅:在Linux上以本地機器碼(native)運作ASP.NET Core站點

在将“.NET跨平台之旅”示例站點about.cnblogs.com從ASP.NET 5 RC1更新至ASP.NET Core 1.0之後,我們有一個難以抗拒的沖動 —— 體驗一下 dotnet cli 引入的一個最激動人心的特性 —— 将 .NET 程式編譯為本地(native)機器碼。

在将“.NET跨平台之旅”示例站點 about.cnblogs.com 從 ASP.NET 5 RC1 更新至 ASP.NET Core 1.0 (博文連結)之後,我們有一個難以抗拒的沖動 —— 體驗一下 dotnet cli 引入的一個最激動人心的特性 —— 将 .NET 程式編譯為本地(native)機器碼。對應于我們的示例站點,就是将 ASP.NET Core 應用程式編譯為本地機器碼。

如何編譯呢?非常簡單,隻需運作下面的指令:

dotnet build --native      

編譯輸出如下:

Project AboutUs (.NETStandardApp,Version=v1.3) will be compiled because some of its inputs were newer than its oldest output.
Compiling AboutUs for .NETStandardApp,Version=v1.3

Compilation succeeded.
    0 Warning(s)
    0 Error(s)

Time elapsed 00:00:02.7095915
Input Assembly: /data/AboutUs/bin/Debug/netstandardapp1.3/AboutUs.dll      

然後看一下 bin/Debug/netstandardapp1.3/ 檔案夾中的内容:

.NET跨平台之旅:在Linux上以本地機器碼(native)運作ASP.NET Core站點

ubuntu.14.04-x64 檔案夾中的内容就是 native build 的輸出,AboutUs 是可執行檔案。

接下來,激動人心的時刻就要到了 —— 我們将以 AboutUs 這個編譯為本地機器碼的可執行檔案運作 ASP.NET Core 站點。

在運作之前,需要做2個小小的準備工作:

1)為了與示例站點源代碼所在的項目檔案夾劃清界線,我們建立了一個 about.cnblogs.com 檔案夾,并将 ubuntu.14.04-x64 檔案夾中的所有檔案複制到這個檔案夾。

2)将 config.json 檔案複制到 about.cnblogs.com 檔案夾中,示例站點有資料庫操作(資料庫用的是SQL Server),config.json 中存放着資料庫連接配接字元串。

做好準備工作,演出就開始了!我們在 about.cnblogs.com 檔案夾中運作下面的指令:

./AboutUs      

控制台輸出如下:

dbug: Microsoft.AspNetCore.Hosting.Internal.WebHost[3]
      Hosting starting
dbug: Microsoft.AspNetCore.Hosting.Internal.WebHost[4]
      Hosting started
Hosting environment: Production
Application base path: /data/websites/about.cnblogs.com
Now listening on: http://*:8001
Application started. Press Ctrl+C to shut down.      

太帥了!站點成功運作起來了!

浏覽器通路站點,一切正常。你現在看到的  about.cnblogs.com 就是在 Linux Ubuntu 伺服器上以 native 方式運作的。 

以前隻能在做夢時才敢想想的事情,現在正在逐漸成為現實。

注:我們在用 dotnet build --native 指令編譯時,有時 ubuntu.14.04-x64 檔案夾中無輸出,可以改用 

dotnet build --native --no-incremental 指令解決這個問題。

【更新】

後來出現502錯誤與.NET Core沒有關系,是因為沒有以背景服務的方式運作指令,ssh會話一斷開,程序就結束了。現已改為用下面的指令運作:

screen -d -m -s "AboutUs" /data/websites/about.cnblogs.com/AboutUs      

繼續閱讀