連載
» 2013年03月15日 13時24分 公開

第1回 Mono×LinuxでASP.NET MVCを動かすまで連載:MonoでOSSなASP.NET MVCアプリ(2/2 ページ)

[井口圭一,株式会社Ginger]
前のページへ 1|2       

●Mono本体のインストール

 次はMono本体のインストールだ。ここでは、先ほどインストールした「libgdi+」の位置を指定するため、パラメータ付きでconfigureコマンドを実行する。

# cd /usr/local/src/mono-2.10.9
# ./configure --with-libgdiplus=/usr/local/lib/libgdiplus.la

「./configure」コマンドの実行(Mono本体)

 必要なパッケージがそろっていれば、下記のメッセージが表示されてconfigureは成功だ。

        mcs source:    mcs
        olive source: 

   Engine:
        GC:            sgen and bundled Boehm GC with typed GC and parallel mark
        GLIB:          embedded
        TLS:           __thread
        SIGALTSTACK:   yes
        Engine:        Building and using the JIT
        oprofile:      no
        BigArrays:     no
        DTrace:        no
        Parallel Mark: yes
        LLVM Back End: no (dynamically loaded: no)

    Libraries:
        Moon Profile:  no (boehm)
        MonoDroid:     no
        MonoTouch:     no
        JNI support:   IKVM Native
        libgdiplus:    /usr/local/lib/libgdiplus.la
        zlib:          system zlib

「./configure」コマンドの実行結果(成功例)(Mono本体)

 続けて、以下のようにコンパイル&インストールまで行ってしまおう。

# make
# make install

コンパイルとインストールを行うコマンドの実行(Mono本体)

 今度のmakeコマンドは、「libgdi+」よりもさらに時間がかかるので、お昼休み前などに実行して昼食にでも出かけた方がよいかもしれない(筆者の環境では30分弱かかった)。

●Mono動作確認

 ここまでの設定で、Mono本体のインストールは完了だ。

 ASP.NETを実行するにはまだ続きの作業が必要だが、ここでいったん、Monoの動作を確認してみよう。

 かなり昔の記事になるが、「Linuxで動く.NET環境「Mono 1.0」の実力(前編)」に“Hello World”を表示する基礎的なサンプル・プログラムがあるので、実行してみよう。この記事は、Mono 1.0 のときのものだが、もちろん3.0になってもそのまま動く。上記の記事の後半に、XSP、mod_mono回りの設定はまだ難しかったことが書いてあるが、今は設定も簡単になっていて、以降で順を追って説明するので心配せずに戻ってきてほしい。

●アプリケーション・サーバ「XSP」

 いよいよASP.NETのためのアプリケーション・サーバ「XSP」のインストールだ。

 XSPをconfigureする際には、デフォルトのままだとpkg-configがMonoを見付けられない場合があるので、環境変数である「PATH」と「PKG_CONFIG_PATH」を指定する(次のコマンド例を参照)。これ以外には特に変わったことは必要なく、ここまでのインストールができていれば、問題なく進むはずだ。

# cd /usr/local/src/xsp-2.10.2
# PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure

「./configure」コマンドの実行(XSP)

 configureコマンドの実行結果は以下のようになるはずだ。

xsp-2.10.2

  Build Environment
    Install prefix:          /usr/local
    Datadir:                 /usr/local/share
    Libdir:                  /usr/local/lib
    Build documentation:     yes
    Mono 2.0 compiler:       /usr/local/bin/gmcs
    Mono 4.0 compiler:       /usr/local/bin/dmcs
    Target frameworks:       .NET 2.0, .NET 4.0
    Build SQLite samples:    yes

「./configure」コマンドの実行結果(成功例)(XSP)

 続けて、以下のようにコンパイル&インストールを行う。

# make
# make install

コンパイルとインストールを行うコマンドの実行(XSP)

●最後にApacheからXSPを呼び出すための「mod_mono」

 XSPは単体でもテスト用のASP.NETサーバとして動作できるのだが、Webサーバとしての機能は限られているため、通常はApacheなどのWebサーバと連携させて動作させる(もちろん、Apache以外のWebサーバと連携させることも可能だ。Monoのサイトにはnginxとの連携についても記載されているので興味がある方は試してみるとよいだろう)。

 今回はApache向けの「mod_mono」をインストールする。この手順もここまでと同じように、「./configure」「make」「make install」というコマンドを実行すればよい(具体的には以下のとおり)。この作業で、長かったインストール作業は完了だ。

# cd /usr/local/src/mod_mono-2.10
# ./configure

「./configure」コマンドの実行(mod_mono)

Configuration summary for mod_mono

   * Installation prefix = /usr/local
   * Apache version = 2.2
   * Apache modules directory = /usr/lib64/httpd/modules
   * apxs = /usr/sbin/apxs
   * apr-config = /usr/bin/apr-1-config
   * apu-config = /usr/bin/apu-1-config
   * CFLAGS = -g -O2 -I/usr/include/httpd -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wformat-security -fno-strict-aliasing -pthread  -I/usr/include/apr-1   -pthread  -I/usr/include/apr-1
   * Verbose logging (debug) = no
   * GCOV options used = no
   * Profiling enabled = no
   * mono prefix = /usr/local
   * Default MonoApplicationsConfigDir = /etc/httpd/conf/mod-mono-applications

「./configure」コマンドの実行結果(成功例)(mod_mono)

# make
# make install

コンパイルとインストールを行うコマンドの実行(mod_mono)

mod_monoの設定

 インストールが完了したら、いよいよmod_monoをApacheに設定し、ASP.NET MVCプロジェクトを動かしてみよう。

●mod_mono.confファイルの読み込み

 まずは、mod_monoのインストール時に、mod_mono.confファイルがApacheの設定ディレクトの中に生成されているので、これを読み込むように設定する。

 具体的には「/etc/httpd/conf/httpd.conf」ファイルの最後に、

Include conf/mod_mono.conf

という1行を追加すればOKだ。

●サービスの設定

 次に、「どのURLからのリクエストをMono(XSP)に渡すか」を設定する。ここでは、

http://[サーバ名]/sampleapp

というURLにデプロイすることにしよう。そのための設定として、httpd.confファイルの先ほどの行の下に、以下の記述を追加しよう(VirtualHostで運用する場合は、各VirtualHostの設定の中に入れてもよい)。

MonoAutoApplication disabled                             # (1)
MonoServerPath "/usr/local/bin/mod-mono-server4"         # (2)

MonoApplications default "/sampleapp:/var/www/sampleapp" # (3)

<Location /sampleapp >
  SetHandler mono                                        # (4)
  MonoSetServerAlias default                             # (5)
</Location>

「Monoサーバ(XSP)のパス」や「ASP.NETアプリのURL」の設定(httpd.confファイル)
「どのURLからのリクエストをMono(XSP)に渡すか」を設定している。
  (1)mod_monoには、ASP.NETのプロジェクト・ファイルを置くと自動的にASP.NETアプリとして実行する機能があるのだが、残念ながらASP.NET MVCには対応していないので無効にする。
  (2)起動するXSPへのパスを指定。
  (3)URLとアプリの対応関係を指定。
  (4)「/sampleapp」というアドレスへのアクセスをmod_monoで処理するよう指定。
  (5)「/sampleapp」にアクセスした際のアプリ((3)で定義)を指定。

 これらの設定を行い、Visual Studio 2012で作成したASP.NET MVCプロジェクトのファイルを「/var/www/sampleapp」に配置すれば、晴れてMonoで運用するASP.NET MVCのWebサービスの完成だ。

 下記のリンク先にVisual Studioで作成したスケルトンを置いておいたので、これを使ってみてもよいだろう。

 実際にダウンロードして配置するには、次のようなコマンドを入力すればよい。

# cd /var/www
# wget http://www.ginger-inc.jp/samples/sampleapp.zip
# unzip sampleapp.zip

ASP.NET MVCのサンプル・アプリをダウンロードして配置するためのコマンド例

 なお、独自にASP.NET MVCアプリを作成する場合には、下記の点に注意してほしい。

  • Monoに含まれているEntity Frameworkのバージョンは少し古いので、Entity Framework(System.Data.Entity名前空間)への参照は外しておこう
  • Web.configファイルに、<membership>や、<profile>、<roleManager>などの要素の設定がある場合は、今回はまだこれらの設定が済んでいないので、取りあえずコメントアウトしておこう(メンバシップ設定の説明は次回に予定している)

 ASP.NET MVCアプリのデプロイが完了したら、次のコマンドによりApache(Webサーバ)を再起動しよう。

# /etc/init.d/httpd restart

Apache(Webサーバ)の再起動

 これにより、「/sampleapp」のURLにWebブラウザでアクセスすると次の画面のように表示される。あとは自分のアプリを作って行けば、OSSなASP.NET MVCアプリの完成だ。

OSSなASP.NET MVCアプリの表示例 OSSなASP.NET MVCアプリの表示例
CentOS上のSELinuxを無効にしないとmod_monoの実行でエラーになることがある。無効にするには「vi /etc/sysconfig/selinux」というコマンドで設定ファイルの編集を開始して、「SELINUX=disabled」と修正し、もう一度、Apache(Webサーバ)を再起動すればよい。


 次回は、MySQL Connectorを使ったDB(データベース)へのアクセス方法と、メンバシップの設定、Linux側でJenkins(=継続的インテグレーションのためのツール)とMonoのコンパイラを使って自動でコンパイルからデプロイまで行う方法を紹介する。

「連載:MonoでOSSなASP.NET MVCアプリ」のインデックス

連載:MonoでOSSなASP.NET MVCアプリ

前のページへ 1|2       

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。