goo

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>

コメント ( 0 ) | Trackback ( 0 )
Messenger この記事をはてなブックマークに追加 mixiチェック シェア
« ニューディール政策 パリ留学時代の友... »
 
コメント
 
コメントはありません。
コメントを投稿する
ブログ作成者から承認されるまでコメントは反映されません
 
名前
タイトル
URL
コメント
規約に同意の上 コメント投稿を行ってください。
※文字化け等の原因になりますので、顔文字の利用はお控えください。
下記数字4桁を入力し、投稿ボタンを押してください。この数字を読み取っていただくことで自動化されたプログラムによる投稿でないことを確認させていただいております。
数字4桁
 
この記事のトラックバック Ping-URL
 


ブログ作成者から承認されるまでトラックバックは反映されません
 
・30日以上前の記事に対するトラックバックは受け取らないよう設定されております
・送信元の記事内容が半角英数のみのトラックバックは受け取らないよう設定されております
・このブログへのリンクがない記事からのトラックバックは受け取らないよう設定されております
※ブログ管理者のみ、編集画面で設定の変更が可能です。