原文轉載自:http://www.cnblogs.com/zergcom/p/4525334.htmlhtml
工欲善其事,必先利其器. 首先,咱們先明確下如下基本概念linux
Linux相關git
Ubuntugithub |
Ubuntu是基於linux的免費開源桌面PC操做系統 十分契合英特爾的超極本定位 支持x8六、64位和ppc架構 全面支持網頁瀏覽器 WPS。Ubuntu基於Debian發行版和GNOME桌面環境,而從11.04版起,Ubuntu發行版放棄了Gnome桌面環境,改成Unity,與Debian的不一樣在於它每6個月會發佈一個新版本。Ubuntu的目標在於爲通常用戶提供一個最新的、同時又至關穩定的主要由自由軟件構建而成的操做系統。shell |
sudo數據庫 |
sudo是linux系統管理指令,是容許系統管理員讓普通用戶執行一些或者所有的root命令的一個工具,如halt,reboot,su等等。這樣不只減小了root用戶的登陸 和管理時間,一樣也提升了安全性。sudo不是對shell的一個代替,它是面向每一個命令的。apache |
apt編程 |
Advanced Packaging Tool(apt)是Linux下的一款安裝包管理工具。APT由幾個名字以「apt-」打頭的程序組成。apt-get、apt-cache 和apt-cdrom是處理軟件包的命令行工具。json |
libuvubuntu |
跨平臺異步IO庫,是Kestrel Server的必需組件,必須在最終運行前安裝. |
VirtualBox |
VirtualBox 是一款開源虛擬機軟件。VirtualBox 是由德國 Innotek 公司開發,由Sun Microsystems公司出品的軟件,使用Qt編寫,在 Sun 被 Oracle 收購後正式改名成 Oracle VM VirtualBox。Innotek 以 GNU General Public License (GPL) 釋出 VirtualBox,並提供二進制版本及 OSE 版本的代碼。使用者能夠在VirtualBox上安裝而且執行Solaris、Windows、DOS、Linux、OS/2 Warp、BSD等系統做爲客戶端操做系統 |
curl |
cURL curl -O的輸出結果 原做者 Daniel Stenberg 初始版本 1997 穩定版本 7.40.0(2015年1月8日,27天前) 開發狀態 活躍 |
Linux相關知識非本文主要內容,其餘信息請參考相關文檔.
.NET相關
Mono |
Mono是一個由Novell公司(由Ximian發起,並由Miguel de lcaza領導的,一個致力於開創.NET在Linux上使用的開源工程。它包含了一個C#語言的編譯器,一個CLR的運行時,和一組類庫,並實現了 ADO NET和ASP NET。可以使得開發人員在Linux用C#開發程序。) |
DNVM |
(.NET Version Manager):因爲要實現跨平臺的目的,微軟提供了DNVM功能,DNVM是ASP.NET最底層的內容,他是一組Powershell腳本,用於啓動指定版本的ASP.NET運行環境,而且能夠在同一臺機器的同一時間點上經過使用Nuget工具來管理各類版本的ASP.NET運行環境(DNX),以及進行相應的升級操做。 |
DNX |
(.NET Execution Environment):DNX是ASP.NET程序的運行環境,用於啓動並運行ASP.NET程序。該運行環境包括了編譯系統、SDK工具集、Native CLR宿主環境。可使用DNVM管理各類版本的DNX,如dnvm list命令能夠列出全部可用的DNX環境,而dnvm install 0.1-alpha-build-0446則能夠將指定版本的DNX安裝到.dnx文件夾,你能夠在%USERPROFILE%\.dnx\runtimes 目錄下找到已安裝全部版本的DNX。不一樣的操做系統有不一樣的DNX版本。 |
dnu命令 |
(DNX Utility):是一個命令行的包管理器,包含在DNX內,因此只要安裝了DNX,就可使用dnu命令, 其能夠用於恢復程序包、安裝程序包、部署程序包等等,好比把project.json裏自定義的程序集自動下載下來進行使用。 |
dnx命令 |
dnx.exe是用於啓動自宿主環境(Self-Hosting)的命令行工具,在使用命令行代碼進行自宿主環境啓動程序時,dnx負責查找並調用CLR Native Host,dnx命令是整個運行環境的入口點,你可使用dnx run來啓動程序。 |
Kestrel |
ASP.NET 5 一個基於 libuv 組件的Web Server實現. |
NuGet |
Nuget是一個.NET平臺下的開源的項目,它是Visual Studio的擴展。在使用Visual Studio開發基於.NET Framework的應用時,Nuget能把在項目中添加、移除和更新引用的工做變得更加快捷方便 |
關於ASP.NET核心技術,請進一步參考湯姆大叔的博文:
解讀ASP.NET 5 & MVC6系列(4):核心技術與環境配置
咱們以目前比較流行的Ubuntu爲例,個人配置環境是:
l 主機: Win8.1 和 VS2015 RC
l 虛擬機: VirtualBox-4.3.28-100309-Win
l Linux: ubuntu-15.04-desktop-amd64
這些軟件的安裝過程都比較人性化了,這裏不加累述.
安裝完成並進入系統之後,稍微清理下左側的快捷方式,拖出經常使用的終端命令,咱們到以下界面,準備進入下一步的安裝.
經過下列命令行,安裝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
echo "deb http://download.mono-project.com/repo/debian wheezy-apache24-compat main" | sudo tee -a /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
sudo apt-get install mono-devel
建議依次運行若是有問題從新運行有問題的命令.看到以下結果表示Mono安裝完成:
若是安裝沒有順利完成,請參考MONO Project網站尋找最新的安裝方法.
http://www.mono-project.com/docs/getting-started/install/linux/
首先須要安裝curl程序
sudo apt-get install curl
而後利用curl安裝DNVM
curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh
安裝完畢之後,利用dnvm升級命令獲取最新運行環境
dnvm upgrade
若是遇到更新失敗,能夠加入-f參數強行覆蓋更新.
最後運行下面的命令,確認當前安裝的運行環境
dnvm list
因爲目前VS2015 RC的dnx版本是1.0.0-beta4,因此這裏請保證當前活躍版本就是1.0.0-beta4. (我這裏裝的比較雜,其實沒有11855那2個也是能夠的)
此外能夠發現dnx和dnu 2個命令(能夠在控制檯運行這2個命令,看到幫助信息)都已經部署完畢,到此dnvm安裝結束.
在Window主機中, 利用VS 2015創建一個vNext版本的WebApi程序.
這裏把這個項目命名爲 WebApi2015. 創建完畢後,把程序目錄打包傳送到Ubuntu虛擬機.
在虛擬機任意目錄解壓.
另外咱們再非Windows環境能夠採用Visual Studio Code進行代碼的編輯,這個工具很是容易安裝,具體安裝方法能夠參考官網:
https://code.visualstudio.com/Docs/setup
雖然這個工具還不如VS方便,但比起文本編輯器仍是高級了許多:
下面咱們對項目文件作些調整:
l 加入Kestrel組件的引用,這個是Linux環境下必選的Web Server.
l 加入Kestrel的命令行,把啓動URL設爲http://localhost:5000, 這個步驟是必須的,不然後續的dnx命令將沒法執行.
l 把Project_Readme.html移入wwwroot做爲一個能夠展現的靜態頁面.
固然這些調整也能夠再Windows裏面先調整好,再拷貝過來.
打開一個終端,把當前路徑設置到咱們項目中的src/WebApi2015中,也就是project.json所在目錄.
首先利用dnu命令進行全部相關組件的恢復操做:
dnu restore
注意這裏常常由於網絡問題而中斷,反覆執行這個命令皆可.(不要輕易強行中斷這個命令,會形成壞包),直到出現大量的installing信息並完成project.lock.json文件,恢復過程纔算順利結束,以下圖:
而後運行下面命令執行此ASP.NET 5程序.
dnx . kestrel
不過這個時候可能依然會報錯,是由於通常新安裝的系統尚未libuv組件.最終,咱們還須要利用下面的命令來安裝libuv組件.
sudo apt-get install automake libtool
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
安裝完畢之後,再運行 dnx . kestrel , 運行經過
利用瀏覽器訪問 http://虛擬機IP:5000/Project_Readme.html 或者 http://虛擬機IP:5000/api/values 能夠看到頁面和默認WebApi返回內容. 若是興趣,還能夠在wwwroot加入其餘頁面或者在Controller裏面加入其餘WebApi來進行嘗試 – 甚至能夠加入Controller , View 和 Model文件來顯示MVC的內容.
固然,目前咱們運行的程序還僅僅是一個很是簡單的版本,尚未包括EF, SignalR, Identity等複雜組件,但從整個部署過程當中,咱們能夠感受到其實差距已經很小. 首先運行和部署環境DNVM和dnu, dnx命令和VS 2015的環境是一致的,並且組件包都是從Nuget上獲取,這和標準的Windows開發環境並無太大區別, 因此能夠預見,即便是更復雜的ASP.NET 5應用程序,依然能夠完整的部署到Linux環境上來, 加上將來EF技術對MSSQL等跨平臺數據庫的更好的支持,.NET開發人員徹底能夠在未來推出本身的 Linux – Kestrel/ Jexus – MySQL – ASP.NET 的跨平臺方案.