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


在將“.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/ 文件夾中的內容:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM