C#
ASP.NET

ASP.NET vNextのサンプルをLinuxで動かした時のメモ

More than 3 years have passed since last update.

手順


ConsoleAppを動かすまで


  • Ubuntu 14.04を使用


  • https://github.com/aspnet/Home に書いてある通りにインストールする。但し、以下の微修正が必要

  • monoのインストールはsource(3.4.1の作りかけ)からになるので、gitでcloneする。

  • 今日見たらテストが落ちてて最新のmaster動かなかったので、git checkout d8eaf05 してちょっと戻す

  • ビルドに必要なソフトをsudo apt-get install build-essential autoconf libtool checkinstall curl で入れる

  • ./autogen.shを実行する

  • make get-monolite-latestをして、コンパイルに必要なmonoを入れる

  • makeを実行

  • checkinstallでパッケージ化しつつインストールする

  • mono --versionで3.4.1になっていることを確認

  • curl https://raw.githubusercontent.com/aspnet/Home/master/kvminstall.sh | sh && source ~/.kre/kvm/kvm.sh を実行し、kvmをインストール

  • kvm install latestで最新のkを入れる


  • https://github.com/aspnet/Home をcloneし、samples/ConsoleAppに移動

  • kpm restoreでパッケージを戻す

  • k runでコンソールアプリを起動


HelloWebを動かすまで


  • 上記状態でHelloWebサンプルに行き、k webコマンドを実行するとhttpapi.dllが無いと怒られる


  • https://github.com/aspnet/Home/blob/master/samples/HelloWeb/project.json をよく見ると、Microsoft.AspNet.Server.WebListenerをサーバとして使っている。これがどうも現状はLinux未対応らしい(IIS依存なのかな)

  • 仕方ないので、これを別のサーバに置き換える作業を行う


  • https://github.com/davidfowl/HelloWorldVNext/blob/master/src/helloworldweb/project.json こちらのjsonを見るとサーバとして、KestrelとNowinの2種類が使えることが分かる

  • KestrelはNode.jsでも使っているlibuvを使ったサーバで、高性能を期待できるのだが、絶賛開発中でまだMacとWindowsにしか対応していない(Linuxの対応のPRは見つけたが)

  • NowinはOWIN向けのピュアC#サーバで、monoが動けば動くHttpListener非依存のサーバである(これも開発中だが)。今回はこれをASP.NET vNext用に調整する

  • 調整のやり方は、https://github.com/davidfowl/HelloWorldVNext/tree/master/src/Nowin.vNext このフォルダの中身がNowinをvNextで使う実装なので、このフォルダを丸ごとHelloWebフォルダの隣に置く

  • HelloWeb/project.jsonのwebコマンドのところを Microsoft.AspNet.Hosting server=Microsoft.AspNet.Server.WebListener server.urls=http://localhost:5001 から Microsoft.AspNet.Hosting --server Nowin.vNext に書き換える

  • k runでHelloWebを起動(OWINのWelcomeページっぽいのが見えます)