CentOS上でMonoを使ってRazorを動かす

最近はCentOS(RHEL)でもMonoのリポジトリを設定すれば、yumで最新版をインスコできるとか、楽に環境設定できるようになっているので、その手順メモ(・∀・)
とりあえずCentOSが用意できているところからはじめます。*1

Monoのインストール

まずはMonoのリポジトリを追加(・ω・)

> 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のインスコですが、とりあえずこのあたりを入れておけば事足りる(・ω・)?

yum --enablerepo=mono install mono-addon-core mono-addon-data mono-addon-web mono-addon-devel mono-addon-winforms mono-addon-wcf mono-addon-libgdiplus0 mono-addon-extras mod_mono-addon

これだけでインスコ完了、簡単ですね(・∀・)


バージョンの確認しておきましょうか。

> /opt/novell/mono/bin/mono -V
Mono JIT compiler version 2.10.2 (tarball Mon Apr 18 18:57:39 UTC 2011)
Copyright (C) 2002-2011 Novell, Inc and Contributors. www.mono-project.com
        TLS:           __thread
        SIGSEGV:       altstack
        Notifications: epoll
        Architecture:  x86
        Disabled:      none
        Misc:          debugger softdebug
        LLVM:          supported, not enabled.
        GC:            Included Boehm (with typed GC and Parallel Mark)

RazorなWebアプリを動かす

まず、アプリケーション用のディレクトリを作成(・ω・)

> mkdir /var/www/sample

ついでApacheの設定ですが、mod_monoの設定自体は/etc/httpd/conf.d/mod_mono.confに設定済みになっているので、アプリケーションの設定だけを追加します。

> vi /etc/httpd/conf/httpd.conf

最後に下記の内容を追加。

Alias /sample/ "/var/www/sample"

AddMonoApplications sample "/sample:/var/www/sample"

MonoServerPath sample "/opt/novell/mono/bin//mod-mono-server4"
MonoSetEnv sample MONO_IOMAP=all

<Location "/sample">
    MonoSetServerAlias sample
    SetHandler mono
</Location>

環境設定はこんなんでOK。


次はアプリケーションですが、これはVisual Studio 2010で作成することにして。
ASP.NET MVC 3 Web アプリケーションを作成して、ビューエンジンにRazorを選択。

参照設定に、いかのうち足りないものを追加し、プロパティでローカルコピーをTrueに設定します。

  • System.Web.Helpers.dll
  • System.Web.Mvc.dll
  • System.Web.Razor.dll
  • System.Web.WebPages.Deployment.dll
  • System.Web.WebPages.dll
  • System.Web.WebPages.Razor.dll

あとは、プロジェクトをビルドしたものをCentOS上の/var/www/sampleにデプロイすれば動作確認できますよヽ(・∀・)ノ


ヘッダも確認してみるとこんな感じになっていて。

HTTP/1.1 200 OK
Date: Tue, 03 May 2011 08:17:02 GMT
Server: Apache/2.2.3 (CentOS)
X-AspNetMvc-Version: 3.0
X-AspNet-Version: 4.0.30319
Content-Length: 1215
Cache-Control: private
X-Powered-By: Mono
Connection: close
Content-Type: text/html; charset=utf-8

ApacheとMonoで動作していることが確認できました。


しかし、これだけ簡単に環境設定できるようになってくると、なにか実戦投入したくなりますね(・∀・;)

*1:自分は5.6 x64上で確認しました。