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で動作していることが確認できました。
しかし、これだけ簡単に環境設定できるようになってくると、なにか実戦投入したくなりますね(・∀・;)