mod mono

提供: MonoBook
移動: 案内検索

mod_monoとは、ApacheとXSPを連携させるモジュールである。ApacheとTomcatを連携させるmod_proxy_ajpやmod_jkと似たようなものと思って間違いない。

設定例(Apache)[編集]

以下にFreeBSDでportsを使ってインストールした場合の例を示す。 FreeBSDでportsを用いてインストールした場合のパス設定となっているので適宜書き換えてください。

設定ファイルを作成する[編集]

/usr/local/etc/apache22/Includes/mod_mono.conf というファイルを作り以下の内容を記述する。

<IfModule !mod_mono.c>
    LoadModule mono_module /usr/local/libexec/apache22/mod_mono.so
</IfModule>
 
<IfModule mod_headers.c>
    Header set X-Powered-By "Mono"
</IfModule>
 
# MonoServerPathを明示しないと.NET Framework 4.0ではなく
# .NET Framework 1.1が動いてしまう。
# .NET 1.1
#MonoServerPath /usr/local/bin/mod-mono-server
# .NET 2.0
#MonoServerPath /usr/local/mono/bin/mod-mono-server2
# .NET 4.0
MonoServerPath /usr/local/mono/bin/mod-mono-server4
 
####
MonoDebug true
 
####
#MonoSetEnv LANG=ja_JP.UTF-8
 
####
MonoAutoApplication enabled
 
####
AddType application/x-asp-net .aspx
AddType application/x-asp-net .asmx
AddType application/x-asp-net .ashx
AddType application/x-asp-net .asax
AddType application/x-asp-net .ascx
AddType application/x-asp-net .soap
AddType application/x-asp-net .rem
AddType application/x-asp-net .axd
AddType application/x-asp-net .cs
AddType application/x-asp-net .vb
AddType application/x-asp-net .master
AddType application/x-asp-net .sitemap
AddType application/x-asp-net .resources
AddType application/x-asp-net .skin
AddType application/x-asp-net .browser
AddType application/x-asp-net .webinfo
AddType application/x-asp-net .resx
AddType application/x-asp-net .licx
AddType application/x-asp-net .csproj
AddType application/x-asp-net .vbproj
AddType application/x-asp-net .config
AddType application/x-asp-net .Config
AddType application/x-asp-net .dll
####
DirectoryIndex index.aspx
DirectoryIndex Default.aspx
DirectoryIndex default.aspx

Apacheを再起動する[編集]

モジュールを読み込ませるためにApacheを再起動します。

apacheの再起動後にpsコマンドでmod-mono-serverというプロセスが自動起動しているのを確認する。

$ ps ax | grep mod-mono-server
51724  ??  Ss     0:01.57 /usr/local/bin/mono --debug /usr/local/lib/mono/4.0/mod-mono-server4.exe --filename /tmp/mod_mono_server_global --nonstop --master

ASP.NET MVCを使うための設定[編集]

方法1:httpd.confで設定する[編集]

<Location /mvc_app_dir>
ForceType application/x-asp-net
</Location>

「/mvc_app_dir」の部分は適宜書き換えること。

この方法では配置するたびにApacheを再起動しなければならないので面倒。

方法2:.htaccessで設定する[編集]

ASP.NET MVCのルートディレクトリに.htaccessファイルを作り以下の内容を記述する。 なおForceTypeを用いる方法では

## 旧:
## この方法ではASP.NET MVC 1は動いていたのだが、
## なぜかASP.NET MVC 3が動かなかった。
#ForceType application/x-asp-net
 
## 新:
## これでASP.NET MVC 3が動いた。これが正しいかは不明。とりあえず動いた。
SetHandler mono
# すべてをxspに処理させても良いが速度的に不利なので特定拡張子を弾く(apacheに任せる)。
<FilesMatch "\.(gif||jpg|jpeg|png|css|ico|xsl|js|zip|avi|mov|wmv|flv|swf)$">
    SetHandler None
</FilesMatch>

Apacheの設定で.htaccessが使えるようになっていることが大前提である。 また、ASP.NET MVCアプリをDocumentRoot直下ではなくサブディレクトリに展開する場合は.htaccessがサブディレクトリでも使える設定になっていること。

ASP.NET MVCMonoで使う場合は、プロジェクト内に.htaccessファイルを作っておき、ファイルのプロパティにあるビルドアクションを「コンテンツ」にしておくと、発行時にコピーされるので一元管理できて便利。

Visual Studio 2010の「新しい項目」でテキストファイルを新規作成すると、そのファイルの文字コードは「UTF-8のBOM付き」となるが、.htaccessファイルにBOMが付いているとapacheでエラーとなるので注意。

ASP.NET MVC 3については「ASP.NET MVC 3#Monoでの動かし方」を参照。

関連項目[編集]