CentOS 5.2にMonoをいれてみた

普段から利用しているCentOS 5.2で、.NETというかC#を利用したくて
先月リリースされた最新版のMonoである「2.2」を入れてみました。

サーバサイドプログラムはPerlを使っていますが、
型の定義やオブジェクト指向の利用が不完全であるなど、
Perl以外にも手を伸ばそうとおもったのがきっかけです。

Javaはサーバサイドで広く利用されているプログラム言語ですが、
あまり良い印象がありません。
いっそのこと、ASP.NETにもチャレンジしてみようとおもってC#を選びました。

Monoのソースコード・ダウンロードページから、
mono-2.2.tar.bz2mod_mono-2.2.tar.bz2をダウンロードし、
普通に

./configure
make
make check
make install

でインストールしました。

無事に動作確認できました。

$ mono --version
Mono JIT compiler version 2.2 (tarball 2009年  2月 10日 火曜日 14:13:59 JST)
Copyright (C) 2002-2008 Novell, Inc and Contributors. www.mono-project.com
TLS:           __thread
GC:            Included Boehm (with typed GC)
SIGSEGV:       altstack
Notifications: epoll
Architecture:  x86
Disabled:      none
$ mcs --version
Mono C# compiler version 2.2.0.0

試しにソースを書いてコンパイル&実行したところ、うまく動作しました。

using System;
public class HW{
public static void Main(){
Console.WriteLine("Hello C# world!");
Console.Read();
}
}
$ mcs hw.cs
$ mono hw.exe
Hello C# world!

次はmod_monoのインストール。
普通に./configureすると以下のエラーが出て停止しました。

configure: error: **** apxs was not found, DSO compilation will not be available.

ネットで調べたところ、httpd-develをインストールすれば解決するようなので入れてみます。

yum install httpd-devel

もう一度./configureは実行したところ今度は無事に通ったので、make, make installしました。

次はhttpd.confの設定です。
httpd.confに以下の記述を追記。

### Modified for mod_mono on 2009/02/10 ###
Alias /mono "/var/www/mono"
MonoApplications "/mono"
<Location /mono>
SetHandler mono
</Location>

さらに、Monoインストールと同時に作成されたmod_mono.confを確認し、
アプリごとにconfを設定する/etc/httpd/conf.d/へ移動。

# cd /etc/httpd/conf
# ls -l mod_mono.conf
-rw-r--r-- 1 root root 1275 Feb 10 16:40 mod_mono.conf
# mv mod_mono.conf ../conf.d/

これで準備が整ったので、httpdを再起動して動作確認しました。

# /etc/init.d/httpd restart

/etc/log/httpd/error_logを確認したところ、
mod-mono-serverが無いとエラーが出ています。

どうやらxspをインストールする必要があるらしいとのこと。
普通に./configure, makeをしたところpkgconfigのdotnetが無いとエラーが出てmake失敗。

ネットで調べたところ、makeコマンドの前に指定が必要らしい。
以下のコマンドで無事にインストールできた。

./configure
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig make
make install

無事にインストールできたので動作確認。

ところが、mod_monoの動作確認をしたところ、
500サーバエラーとなって上手く動作しませんでした。

結局、いろいろ試行錯誤したもののどうにもならなかったので、
結局は最新の2.2のインストールは諦めて、
yumパッケージで少々古いが安定しているバージョン(1.9.1)をインストールしました。

“/etc/yum.repos.d/mono.repo”を作成し以下を記述。

[Mono]
name=Mono Stack (RHEL_5)
type=rpm-md
baseurl=http://download.opensuse.org/repositories/Mono/RHEL_5/
gpgcheck=1
gpgkey=http://download.opensuse.org/repositories/Mono/RHEL_5/repodata/repomd.xml.key
enabled=1
# yum install mono-complete

でインストール完了。

動作確認し、xspでもmod_monoでも問題なく実行できることを確認。
ただし、上記のhttpd.confの設定だとASP.NET 1.1が動作するため、
以下の記述へ変更いs、ASP.NET 2.0として動作させた。

### Modified 2009/02/10 for mod_mono ###
Alias /mono "/usr/lib/xsp/test"
MonoAutoApplication disabled
AddHandler mono .aspx .ascx .asax .ashx .config .cs .asmx .axd
MonoServerPath /usr/bin/mod-mono-server2
MonoApplications "/mono:/usr/lib/xsp/test"
<Location /mono>
SetHandler mono
</Location>

コメント

タイトルとURLをコピーしました