我们在 Ubuntu 上成功编译出了 dnx ,并且用它成功运行了 ASP.NET 5 示例程序(http://www.linuxdiyf.com/linux/16990.html)。在这篇文中我们将 Ubuntu 换成 CentOS。
目前 dnx 的编译需要用到 mono,所以先要安装 mono,而且最好是用最新的 mono 源代码进行编译并安装。
我们实际成功编译的操作步骤如下(假设将 mono 安装到 /data/mono_build 目录):
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 而失败。
如果想始终使用这个自己编译的 mono,需要在 ~/.bash_profile 中添加如下的的配置:
export PATH=/data/mono_build/bin:$PATH
接下来用下面的命令安装 dnvm :
curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh
然后就可以编译 dnx 了:
# ./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 示例程序了。
先从 GitHub 上签出 ASP.NET 5 示例程序:
https://github.com/aspnet/Home.git
运行前准备:
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。
在CentOS上部署基于dnx/coreclr的ASP.NET 5应用程序:http://www.linuxdiyf.com/linux/16987.html
.NET跨平台:在Linux上基于ASP.NET 5用EF7生成数据库:http://www.linuxdiyf.com/linux/16985.html
Ubuntu 14.04 LTS下APACHE支持ASP.NET MVC5:http://www.linuxdiyf.com/linux/14155.html
Linux服务器上,用ASP.NET生成中文图片的要点:http://www.linuxdiyf.com/linux/13689.html
ASP.NET 5(vNext)Linux部署:http://www.linuxdiyf.com/linux/12311.html