ここ 2 回の投稿では、ASP.NET 5 アプリケーションを Mac OS / Azure Web Apps 上で動かす方法について見てきました。
.NET Core は Mac OS だけでなく Linux にも対応しているので、今回は Linux (Ubuntu) 上で動かしてみます。検証した環境は VMware Fusion 上に構築した Ubuntu Desktop 15.04 です。Ubuntu Desktop のダウンロードは以下から。
1. Mono のインストール
Linux や Mac OSX など Windows 以外の環境で .NET アプリケーションを動かすには (現状では) Mono のランタイムが必要です。特に ASP.NET 5 アプリケーションを動かす場合は、Mono v4.0.1 以降がインストールされている必要があるようです。とりあえず、以下のコマンドをターミナルに打ち込みます。
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
2. libuv のインストール
次に libuv というクロスプラットフォーム対応の非同期 I/O ライブラリをインストールします。ASP.NET 5 アプリケーションをホストするために使う Kestrel で必要なようです。これも騙されたと思って以下のコマンドをターミナルで実行します。
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
3. DNVM / DNX のインストール
次に DNVM (.NET Version Manager) と DNX (a .NET Execution Environment) をインストールします。ターミナルで下記のコマンドを実行します。
curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh dnvm upgrade
最初のコマンドで DNVM を、ふたつ目のコマンドで最新の DNX を取得しています。ここまで完了したらセットアップが完了しているか確認します。以下の画像のような感じになれば OK です。
dnvm list
ここまでで基本的な環境構築が完了しました。以降は Mac OSX と同様の方法です。
4. ASP.NET 5 アプリケーションを入手
実行用の ASP.NET 5 アプリを何らかの方法で入手します。今回も Visual Studio 2015 RC で空のテンプレートから作成したものを持って行きました。GitHub の ASP.NET のリポジトリにあるサンプルをクローンしても良いと思います。
5. Kestrel の設定を追加
Mac OSX のとき同様、Linux 上で ASP.NET 5 アプリをホストして動作させる場合も Kestrel を利用します。project.json を下記のように書き換え、依存関係やコマンドを調整します。ちなみにフレームワークは DNX 4.5.1 でなければなりません。.NET Core 5 はまだ未対応のようで動きません。
{ "webroot": "wwwroot", "version": "1.0.0-*", "dependencies": { "Microsoft.AspNet.Hosting": "1.0.0-beta4", "Kestrel": "1.0.0-beta4" }, "commands": { "kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5000" }, "frameworks": { "dnx451": { } }, "publishExclude": [ "node_modules", "bower_components", "**.xproj", "**.user", "**.vspscc" ], "exclude": [ "wwwroot", "node_modules", "bower_components" ] }
6. パッケージのリストア
project.json で設定した依存関係を解決します。以下のコマンドをターミナルで実行しましょう。project.json のあるフォルダにカレントディレクトリを移す ことを忘れずに。
cd <project.jsonのあるフォルダ> dnu restore
7. 実行
長かったですが、ここまでですべての準備が整ました。Kestrel に ASP.NET 5 アプリケーションをホスティングしてブラウザから接続できるかを確認してみます。
dnx . kestrel
Started の文字が表示されればホスティング成功 です。project.json で localhost の 5000 番ポートで動かすように設定してあるので、ブラウザから 'http://localhost:5000' にアクセスしてみましょう。
確かに Linux (Ubuntu) でも動作していますね!終了する場合は 'exit' コマンドを入力しましょう。