在以前的博文中咱們在 Ubuntu 上成功編譯出了 dnx ,而且用它成功運行了 ASP.NET 5 示例程序。在這篇博文中咱們將 Ubuntu 換成 CentOS。html
目前 dnx 的編譯須要用到 mono,因此先要安裝 mono,並且最好是用最新的 mono 源代碼進行編譯並安裝。linux
咱們實際成功編譯的操做步驟以下(假設將 mono 安裝到 /data/mono_build 目錄):git
mkdir /data/mono_build PATH=/data/mono_build/bin:$PATH git clone https://github.com/mono/mono.git cd mono ./autogen.sh --prefix=/data/mono_build make get-monolite-latest make make install
注:開始沒有使用 make get-monolite-latest,結果在 make 時由於找不到 mcs 而失敗。github
若是想始終使用這個本身編譯的 mono,須要在 ~/.bash_profile 中添加以下的的配置:api
export PATH=/data/mono_build/bin:$PATH
接下來用下面的命令安裝 dnvm :bash
curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh
而後就能夠編譯 dnx 了:curl
# ./build.sh Installing 'KoreBuild 0.2.1-beta6-10166'. Successfully installed 'KoreBuild 0.2.1-beta6-10166'. Installing 'Sake 0.2'. Successfully installed 'Sake 0.2'. Determining latest version Latest version is 1.0.0-beta6-12085 Downloading dnx-mono.1.0.0-beta6-12085 from https://www.myget.org/F/aspnetvnext/api/v2 Download: https://www.myget.org/F/aspnetvnext/api/v2/package/dnx-mono/1.0.0-beta6-12085 ######################################################################## 100.0% Installing to /root/.dnx/runtimes/dnx-mono.1.0.0-beta6-12085 Adding /root/.dnx/runtimes/dnx-mono.1.0.0-beta6-12085/bin to process PATH Setting alias 'default' to 'dnx-mono.1.0.0-beta6-12085' ... Attempting to build package from 'dnx-mono.nuspec'. Successfully created package '/data/git/dnx/artifacts/build/dnx-mono.1.0.0-t150618141518.nupkg'. info: Target package
編譯成功後,就能夠用 artifacts/build/dnx-coreclr-linux-x64/bin 中的 dnx 運行 ASP.NET 5 示例程序了。ui
先從 GitHub 上籤出 ASP.NET 5 示例程序:url
https://github.com/aspnet/Home.git
運行前準備:spa
1)啓用 dnvm
source /root/.dnx/dnvm/dnvm.sh
2)安裝 openssl
yum install -y openssl-devel
否則會出現下面的錯誤:
System.TypeInitializationException: The type initializer for 'libcrypto' threw an exception. ---> System.Security.Cryptography.CryptographicException: Error occurred during a cryptographic operation. at Interop.libcrypto..cctor()
3)編譯並安裝 libuv(爲了運行kestrel)
git clone https://github.com/libuv/libuv.git sh autogen.sh ./configure make make install ldconfig
後來遇到用最新的libuv源代碼安裝後依然找不到libuv的問題,建議下載libuv-1.4.2的源代碼進行安裝,安裝方法以下:
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 sh autogen.sh ./configure make make install rm -rf /usr/local/src/libuv-1.4.2 && cd ~/ ldconfig
否則會出現下面的錯誤:
System.InvalidOperationException: Unable to load libuv. Make sure libuv is installed and available as libuv.so.1
而後分別運行 Home/samples/latest/ 中的三個 ASP.NET 5 示例程序(運行前先要運行 dnu restore)。
1)ConsoleApp
[root@server1 ConsoleApp]# /data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . run Hello World
2)HelloWeb
[root@server1 HelloWeb]# /data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . kestrel Started
3)HelloMvc
[root@server1 HelloMvc]# /data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . kestrel Started
在 CentOS 上也成功體驗了一下跨平臺的 .NET。