如何在 Ubuntu v14.04 上執行 ASP.NET 5 的應用程式

ASP.NET 5 是真正的跨平台 (Corss Platform) 解決方案,經過我們測試,它確實可以在 Ubuntu、OS X 等其他的環境執行 ASP.NET MVC 6 的應用程式,只是目前跨平台的 Runtime (dnvm/dnx) 部分是倚靠 Mono 來執行,未來等微軟官方自己的 .NET Core 5 Runtime 推出,就不需要再依靠 Mono 來執行了

前言

在今年的 4/2 集英信誠-與大師對談,與 [Study4.TW] 社群中筆者演說了 ASP.NET 5 新功能與變革,課程中筆者也說明了 ASP.NET 5 真正走向跨平台並走向開源,不過真正開源的部分只有下圖中黃色框起來的部分。

image

詳細的 .NET 開源的專案可參考:

image

連結如下:

http://www.dotnetfoundation.org/projects

 

想了解筆者上過的 ASP.NET 5 相關課程詳細內容可以參考:

[Study4.TW] - 投影片分享 - ASP.NET 5 新功能與變革

集英信誠與大師對談系列 (技術論壇) - ASP.NET MVC 6 新功能初探

 

學習 ASP.NET 5


筆者從去年九月開始接觸 ASP.NET 5 相關的技術,當時微軟稱為 ASP.NET vNext,其實 vNext 測試的版本早在去年六月就發佈第一版了,還記得當時黃忠成老師就已經在準備九月的 TachDays 的 ASP.NET vNext 課程。

 

ASP.NET 5 有許多讓人驚豔的改進,比如說 .NET Framework (輕量化 與 Package 化) 不再包山包海,您可以隨選安裝需要的 .NET Framework 在你的用程式中,不用像以前一樣總得要在 Server 上安裝一大包的 .NET Framework。且新的執行平台 .NET Core 5 是真正的跨平台的執行環境,所以與 IIS 相依的 HttpModule, HttpHandler 均在 .NET Core 5 中被移除掉,所以這部分微軟真的是將 .NET 核心 mscorelib 的部份抽離出來、且重新在各平台 linux/OS X/Unit 等重新編譯使它真正的跨不同平台。

 

接觸 ASP.NET 5 對我來說,花最多時間的地方倒不是在新平台與架構,反倒是 Front-End (前端工程) 與 Open Source 的東西不熟,讓我花了相當多的時間,大約 70% 的時間在了解 Node.js、npm、bower、grunt、gulp、Ubuntu 平台 等,實際上 ASP.NET 5 本身的架構我只花 30% 的時間而已。如果您本身也是微軟 ASP.NET 工程師,且對於前端工程就相當的熟悉,相信一定會比我花更少的時間學習 ASP.NET 5。

 

在 Ubuntu v14.04 上執行 ASP.NET 5


image

微軟新的執行環境 NET Core 5 是真正的跨平台,只是目前還是依靠 Mono 來執行,因為目前微軟還在緊鑼密鼓的開發中。目前要在 Ubuntu 上執行 ASP.NET 5 安裝的步驟稍稍比 OS X 繁瑣一些。所以筆者真心的建議,如果你有 OS X 或是 MacBook 環境,就不用再安裝 Ubuntu 環境了,直接就在 OS X 上測試吧,比較不會遇到一些詭異的問題。

 

安裝步驟


1. 更新 Ubuntu Server

$apt-get update

$apt-get upgrade

 

2. 安裝 Mono 4.0.1

$apt-get install mono-complete

ž完成後就可以測試一下 Mono 的版本是否 v4.0.1 (是目前最新的版本了):

$mono –V

 

3. 安裝 libuv

libuv 是一種支援 multi-platform 與 asynchronous 的 KestrelHttpServer 網頁開發伺服器

$sudo apt-get install automake libtool curl

$curl -sSL https://github.com/libuv/libuv/archive/v1.4.2.tar.gz | sudo tar zxfv - -C /usr/local/src

$cd /usr/local/src/libuv-1.4.2

$sudo sh autogen.sh

$sudo ./configure

$sudo make

$sudo make install

$sudo rm -rf /usr/local/src/libuv-1.4.2 && cd ~/

$sudo ldconfig

 

4. 安裝 DNVM 命令 (Linux/Ubuntu)

$curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh

注意畫面上會出現 'source /usr/bin/... ' 等訊息,這是表示您還需要設定環境參數的意思,可直接執行這一段 Source 敘述即可。

 

5. 裝完 DNVM 必須再讓 Mono 同步一下

$sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF

$echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list

$sudo apt-get update

$sudo apt-get install Mono-Complete

 

6. 安裝 nodejs

$apt-get install nodejs

 

7. 安裝 npm

這裡 npm 是需要另外安裝的,不像 Windows 平台的 MSI 封裝檔,一次將所有元件安裝起來。

$sudo apt-get install npm

 

8. 安裝 git

$apt-get install git

 

9. 從 github 下載一個 HelloWeb, HelloMvc 來測試看看

$git clone https://github.com/aspnet/Home.git

 

或者也可嘗試筆者做的 HelloWorldMvc 6 應用程式:

https://github.com/wugelis/HelloMvc6

 

注意:

在 Ubuntu 上使用不到的套件就不需要安裝進來,請記得將 Kestrel 引入,因為在其他平台不適用 IIS,需使用 Kestrel 來執行應用程式

SNAGHTML1148d4d

 

10. 先使用 dnu restore 下載需要的 .NET Framework

$dnu restore

 

注意:

如果您沒有使用管理員身分進入 Ubuntu ,那麼在 restore 時會出現 Access denied 的錯誤訊息。

image

 

小訣竅:

使用管理員可用 sudo –s 方式進入,Ubuntu 會要求您輸入管理員的密碼

 

11. 編譯 ASP.NET 5 應用程式

$dnu . build

image

若有版本的 issue 會出現一些警告。

 

12. 執行 ASP.NET 5 應用程式

$dnx . Kestrel

 

若沒任何意外,可以看見我們的應用程式被執行起來 (下圖是使用筆者的 https://github.com/wugelis/HelloMvc6)

image

 

結語:

ASP.NET 5 是真正的跨平台 (Corss Platform) 解決方案,經過我們測試,它確實可以在 Ubuntu、OS X 等其他的環境執行 ASP.NET MVC 6 的應用程式,只是目前跨平台的 Runtime (dnvm/dnx) 部分是倚靠 Mono 來執行,未來等微軟官方自己的 .NET Core 5 Runtime 推出,就不需要再依靠 Mono 來執行了。


 

簽名:

學習是一趟奇妙的旅程

這當中,有辛苦、有心酸、也有成果。有時也會有瓶頸。要能夠繼續勇往直前就必須保有一顆最熱誠的心。

軟體開發之路(FB 社團)https://www.facebook.com/groups/361804473860062/

Gelis 程式設計訓練營(粉絲團)https://www.facebook.com/gelis.dev.learning/


 

如果文章對您有用,幫我點一下讚,或是點一下『我要推薦,這會讓我更有動力的為各位讀者撰寫下一篇文章。

非常謝謝各位的支持與愛護,小弟在此位各位說聲謝謝!!! ^_^