普段から利用しているCentOS 5.2で、.NETというかC#を利用したくて
先月リリースされた最新版のMonoである「2.2」を入れてみました。
サーバサイドプログラムはPerlを使っていますが、
型の定義やオブジェクト指向の利用が不完全であるなど、
Perl以外にも手を伸ばそうとおもったのがきっかけです。
Javaはサーバサイドで広く利用されているプログラム言語ですが、
あまり良い印象がありません。
いっそのこと、ASP.NETにもチャレンジしてみようとおもってC#を選びました。
Monoのソースコード・ダウンロードページから、
mono-2.2.tar.bz2、mod_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>
コメント