次は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本体のインストールは完了だ。
ASP.NETを実行するにはまだ続きの作業が必要だが、ここでいったん、Monoの動作を確認してみよう。
かなり昔の記事になるが、「Linuxで動く.NET環境「Mono 1.0」の実力(前編)」に“Hello World”を表示する基礎的なサンプル・プログラムがあるので、実行してみよう。この記事は、Mono 1.0 のときのものだが、もちろん3.0になってもそのまま動く。上記の記事の後半に、XSP、mod_mono回りの設定はまだ難しかったことが書いてあるが、今は設定も簡単になっていて、以降で順を追って説明するので心配せずに戻ってきてほしい。
いよいよ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
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をApacheに設定し、ASP.NET MVCプロジェクトを動かしてみよう。
まずは、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>
これらの設定を行い、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アプリのデプロイが完了したら、次のコマンドによりApache(Webサーバ)を再起動しよう。
# /etc/init.d/httpd restart
これにより、「/sampleapp」のURLにWebブラウザでアクセスすると次の画面のように表示される。あとは自分のアプリを作って行けば、OSSなASP.NET MVCアプリの完成だ。
次回は、MySQL Connectorを使ったDB(データベース)へのアクセス方法と、メンバシップの設定、Linux側でJenkins(=継続的インテグレーションのためのツール)とMonoのコンパイラを使って自動でコンパイルからデプロイまで行う方法を紹介する。
Copyright© Digital Advantage Corp. All Rights Reserved.