第1回 Mono×LinuxでASP.NET MVCを動かすまで:連載:MonoでOSSなASP.NET MVCアプリ(2/2 ページ)
オープンソースの.NET環境である「Mono」やオープンソース・データベースの「MySQL」を使って本格ASP.NET MVCサイトを実運用している筆者が、その環境の構築方法をレクチャーする連載がスタート。
●Mono本体のインストール
次はMono本体のインストールだ。ここでは、先ほどインストールした「libgdi+」の位置を指定するため、パラメータ付きでconfigureコマンドを実行する。
# cd /usr/local/src/mono-2.10.9
# ./configure --with-libgdiplus=/usr/local/lib/libgdiplus.la
必要なパッケージがそろっていれば、下記のメッセージが表示されて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
続けて、以下のようにコンパイル&インストールまで行ってしまおう。
# make
# make install
今度の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-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
続けて、以下のようにコンパイル&インストールを行う。
# make
# make install
●最後に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
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
# make
# make install
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>
「どの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アプリを作成する場合には、下記の点に注意してほしい。
- Monoに含まれているEntity Frameworkのバージョンは少し古いので、Entity Framework(System.Data.Entity名前空間)への参照は外しておこう
- Web.configファイルに、<membership>や、<profile>、<roleManager>などの要素の設定がある場合は、今回はまだこれらの設定が済んでいないので、取りあえずコメントアウトしておこう(メンバシップ設定の説明は次回に予定している)
ASP.NET MVCアプリのデプロイが完了したら、次のコマンドによりApache(Webサーバ)を再起動しよう。
# /etc/init.d/httpd restart
これにより、「/sampleapp」のURLにWebブラウザでアクセスすると次の画面のように表示される。あとは自分のアプリを作って行けば、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のコンパイラを使って自動でコンパイルからデプロイまで行う方法を紹介する。
Copyright© Digital Advantage Corp. All Rights Reserved.