CentOSにMonoでASP.NET環境を構築:yumは使えない

CentOSでyumを使ってASP.NET環境を構築する!
と思っていたのですが、2012年10月15日現在、CentOSからyumでASP.NET環境を構築することはできません。

2012年3月ころまでは、以下のようにリポジトリを追加することで、yumでインストールすることができていたようです。

vi /etc/yum.repos.d/mono.repo
[mono]
name = novell-mono
baseurl=http://ftp.novell.com/pub/mono/download-stable/RHEL_5/
enabled=0
gpgcheck=0

しかし、現在monoはNovellから離れてXamarinにて開発を行なっているため、Novellを利用することができません。

そうなると、MonoがサポートしているOpenSUSEやUbuntuにしようかと思ったのですが、仕事でも使っているCentOSのほうが良いので、ソースからコンパイルすることにしました。

■ インストール方法
以下のサイトを参考にCentOS 6.3にインストールしました。
http://jharitesh.blogspot.jp/2012/06/aspnet-apache-setup-on-centos.html

まずSELinuxをOFF

vi /etc/sysconfig/selinux
SELINUX=disabled

yumで関係パッケージをインストール

yum install gcc bison pkgconfig glib2-devel gettext make

monoの最新ソースコードを取得してインストール

wget http://download.mono-project.com/sources/mono/mono-2.10.8.tar.gz
tar zxvf mono-2.10.8.tar.gz
cd mono-2.10.8
./configure --prefix=/opt/mono; make; make install

pathを通して?からバージョン確認

echo export PKG_CONFIG_PATH=/opt/mono/lib/pkgconfig:$PKG_CONFIG_PATH>>~/.bash_profile
echo export PATH=/opt/mono/bin:$PATH>>~/.bash_profile
source ~/.bash_profile
mono --version
cd ..

続いてXSPのインストール

wget http://download.mono-project.com/sources/xsp/xsp-2.10.2.tar.bz2
tar jxvf xsp-2.10.2.tar.bz2
cd xsp-2.10.2
./configure --prefix=/opt/mono; make; make install
cd ..

Apacheの関係パッケージインストール

yum install httpd-devel

Apacheとmonoを連携させるためのmod_monoをインストール

wget http://download.mono-project.com/sources/mod_mono/mod_mono-2.10.tar.bz2
tar jxvf mod_mono-2.10.tar.bz2
cd  mod_mono-2.10
./configure --prefix=/opt/mono; make; make install
cd ..

その次に、Apacheのconf設定ですが、結構ハマりました。色んなサイトを見て、いろいろ設定してみたのですが、うまくいきません。
以下のようなエラーがでました。

[crit] The unix daemon module not initialized yet.
Please make sure that your mod_mono module is loaded after the User/Group
directives have been parsed. Not initializing the dashboard.

上記は httpd.conf の「Include conf.d/*.conf」をhttpd.confの最終行に移動することでOKでした。

そして、以下のようなエラーログも。

There's already a server listening on /tmp/mod_mono_server_global

上記エラーは、conf.dに設置したconfの書き方が間違っていたようです。Mono公式ページには、Apacheのconfを生成してくれる便利なページがあります。
Apache mod_mono configuration tool
このページで内容を入力して、conf.dに設置したところ上手くいく・・・、と思ったのですが、そんなに甘くなく、こんどは下記のエラーがでました。

Invalid command 'MonoServerPath', perhaps misspelled or defined by a module not included in the server configuration

Apache mod_mono configuration toolで生成したconfに下記の1行を加えてエラーは消えました。

Include /etc/httpd/conf/mod_mono.conf

そして、ホームディレクトリに Hello World を設置します。

<%
    HelloWorldLabel.Text = "Hello, world!";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label runat="server" id="HelloWorldLabel"></asp:Label>
    </div>
    </form>
</body>
</html>

これで、アクセスすると見事にHello worldが表示されました!

■ まとめ
Monoは2.8系から使い勝手が良くなった。と聞きます。業務用途に利用できるかどうかは、テスト的に運用してみないとわかりません。

それと、ASP.NETって、いろんな用語があって、色んなモジュールもあるので、インストールする段階でも、何がどんな役割で、どう関係していて、どのバージョンが関係しているのか、もう何がなんだか、わけワカメ状態ですよ!

というわけで、ASP.NETとMono回りで理解した情報をまとめました。
CentOSにMonoでASP.NET環境を構築した時の参考サイト

The following two tabs change content below.

ロゴスウェア

ロゴスウェア株式会社は、インターネットや情報技術を使って学習に革新的進化をもたらす製品を開発することを目標に、2001年7月に設立されたテクノロジー系ベンチャー企業です。

Comments are closed.