.NETクロスプラットフォーム:CentOS上でdnxをコンパイルし、ASPを実行する.NET 5サンプルプログラム

4071 ワード

以前のブログではUbuntuでコンパイル dnxを成功させ、うんてん ASPを成功させた.NET 5サンプルプログラム.このブログでは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_プロファイルには、次の構成が追加されます.
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-x 64/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/の3つの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.