CentOS 6.2 64bitにApache Tomcatを導入した際にもトラブルに悩まされましたが、ASP.NETアプリの実行環境 mod_mono を導入するのにも、かなり苦労しました。備忘のためメモを残します。
(1st trial)
Mono Project Web Siteには勿論、他のWebサイトでも、RHEL6用のbinary packageが見つからなかったので、最新の mono-2.11.2, xsp-2.10.2, mod_mono-2.10 のソースファイルを組合せてbuildしようとしてみたものの、「monoliteがout-of-dateです」等のエラーにより、makeできず。
(2nd trial)
EPELのrpm repositoryで、mono-2.4.3のRPMを発見したので、xsp-2.4.3, mod_mono-2.4.3 のソースファイルと組み合わせてみたところ、「mod_mono_server_default(Socket File)が見つからない」とかで、mod-mono-server2が起動せず。確かにそんなファイルはできていませんでしたが…
(3rd trial)
CentOS 6.2 64bitにmono-2.6.7をインストールした記事を発見。ただし、紹介されているRHEL5用のRPMは「rpmReadSignature failed: sigh load:BAD」とかでinstallできず。
mono-2.6.7, xsp-2.6.5, mod_mono-2.6.3 のソースコードをbuildすることにした。そして、ASP.NETアプリ実行時に gdiplus.dll が必要になるので、libgdiplus-2.6.7 も事前にインストールしておく。更に、(build errorにはならないが) libgdiplusが各種画像フォーマットをサポートするためには、各画像ライブラリの開発者用ツールがinstallされている必要がある。
$ sudo yum -y install libexif-devel libjpeg-devel libpng-devel libtiff-devel giflib-devel
$ export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/lib/pkgconfig
$ wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.6.7.tar.bz2
$ tar xjf libgdiplus-2.6.7.tar.bz2 ; cd libgdiplus-2.6.7
$ ./configure -prefix=/usr ; make
$ sudo make install ; sudo checkinstall
$ sudo yum localinstall ~/rpmbuild/RPMS/x86_64/libgdiplus-2.6.7-1.x86_64.rpm
$ su -
# ldconfig
$ wget http://download.mono-project.com/sources/mono/mono-2.6.7.tar.bz2
$ tar xjf mono-2.6.7.tar.bz2 ; cd mono-2.6.7
$ ./configure -prefix=/usr ; make
$ sudo make install ; sudo checkinstall
$ sudo yum localinstall ~/rpmbuild/RPMS/x86_64/mono-2.6.7-1.x86_64.rpm
$ wget http://download.mono-project.com/sources/xsp/xsp-2.6.5.tar.bz2
$ tar xjf xsp-2.6.5.tar.bz2 ; cd xsp-2.6.5
$ ./configure -prefix=/usr ; make
$ sudo make install ; sudo checkinstall
$ sudo yum localinstall ~/rpmbuild/RPMS/x86_64/xsp-2.6.5-1.x86_64.rpm
$ wget http://download.mono-project.com/sources/mod_mono/mod_mono-2.6.3.tar.bz2
$ tar xjf mod_mono-2.6.3.tar.bz2 ; cd mod_mono-2.6.3
$ ./configure -prefix=/usr ; make
$ sudo make install ; sudo checkinstall
$ sudo yum localinstall ~/rpmbuild/RPMS/x86_64/mod_mono-2.6.3-1.x86_64.rpm
$ su -
# mv /etc/httpd/conf/mod_mono.conf /etc/httpd/conf.d/mono.conf
# vim /etc/httpd/conf.d/mono.conf
mono.confに下記を追記
MonoAutoApplication disabled
MonoSetEnv LANG=ja_JP.UTF-8
…
# MonoAutoApplicationが有効なら、下記の「MonoServerPath (default)」以外は不要。
Alias /testapp01 /path/to/testapp01
MonoApplications dotnet20 "/testapp01:/path/to/testapp01"
MonoServerPath dotnet20 /usr/bin/mod-mono-server2
<Location /testapp01>
MonoSetServerAlias dotnet20
SetHandler mono
<IfModule mod_headers.c>
Header set X-Powered-By "Mono"
<IfModule>
</Location>
MonoServerPath /usr/bin/mod-mono-server2
Alias /testapp01 /path/to/testapp01
MonoApplications "/testapp01:/path/to/testapp01"
<Location /testapp01>
SetHandler mono
<IfModule mod_headers.c>
Header set X-Powered-By "Mono"
<IfModule>
</Location>
それと、httpd.confの「Include conf.d/*.conf」行を、「User apache」「Group users」行よりも後(下)に移動することも必要らしい。どうせなら、httpd.confの最後でいい。
以上で、.NET 2.0のASP.NETアプリが起動するようになった。