2009年8月17日月曜日

Apache 2.2 + mod_mono 2.4.2 on Ubuntu 9.04

このエントリーをはてなブックマークに追加
Apache への mod_mono の導入について。

  • apache2 パッケージ(2.2.11-2ubuntu2.2)
  • Mono 2.4.2.3 + xsp 2.4.2 + mod_mono 2.4.2

という環境で、mod_mono をソースからビルド、インストールを行った場合、「/etc/apache2」ディレクトリに「mod_mono.conf」がコピーされるが、それをそのまま使わず、Ubuntu での Apache 設定にならい、分割。また、環境変数の追加も行う。以下に各設定を列挙。

「/etc/apache2/envvars」:環境変数の設定
# envvars - default environment variables for apache2ctl

# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2.pid

# added for mod_mono
export MONO_HOME="/opt/mono/2.4.2.3"
export PATH="$MONO_HOME/bin:$PATH"
export LD_LIBRARY_PATH="$MONO_HOME/lib:$LD_LIBRARY_PATH"
export MONO_IOMAP=all

「/etc/apache2/mods-available/mono.conf」:「mod_mono.conf」から分割、および設定の追加
<IfModule mod_mono.c>
  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

  Include ./mods-available/include/mono
</IfModule>

「/etc/apache2/mods-available/mono.load」:「mod_mono.conf」から分割
LoadModule mono_module /usr/lib/apache2/modules/mod_mono.so

もともと、「/etc/apache2/mods-available/include」ディレクトリは存在しないので作成。

$ cd /etc/apache2/mods-available
$ sudo mkdir include

「/etc/apache2/mods-available/include/mono」:mod_mono Control Panel、XSP Demo
# mod_mono Control Panel
<Location /mono>
  SetHandler mono-ctrl
  Order deny,allow
  Deny from all
  Allow from 127.0.0.1
</Location>

# Demo
MonoServerPath demo ${MONO_HOME}/bin/mod-mono-server2
Alias /demo "${MONO_HOME}/lib/xsp/test"
AddMonoApplications demo "/demo:${MONO_HOME}/lib/xsp/test"
<Location /demo>
  MonoSetServerAlias demo
  SetHandler mono
</Location>

上記設定の有効化。

$ sudo a2enmod mono

「/etc/apache2/mods-available/mono.conf」、「/etc/apache2/mods-available/mono.load」へのシンボリックリンクが「/etc/apache2/mods-enabled」にそれぞれ作成される。

各設定完了後、Apache 再起動。

$ sudo /etc/init.d/apache2 restart

「http://localhost/demo」をブラウザで確認すると、



スタイルシートの設定が読み込まれず表示され(スタイルシートの指定が以下になっているため)、
<link rel="stylesheet" type="text/css" href="/mono-xsp.css">
残念な感じなんで、ちゃんと表示、動作確認したい場合は、ヴァーチャルホストで設定した方がいいだろう。

Configure Apache Mod_Mono で、設定ファイルを作成できるので、ありがたく使わせてもらう。

「/etc/apache2/sites-available/monodemo」:Configure Apache Mod_Mono で作成した設定ファイルから分割
<VirtualHost *:80>
  Include ./sites-available/include/monodemo
</VirtualHost>

「/etc/apache2/sites-available/include」ディレクトリは存在しないので作成。

$ cd /etc/apache2/sites-available
$ sudo mkdir include

「/etc/apache2/sites-available/include/monodemo」:Configure Apache Mod_Mono で作成した設定ファイルから分割
ServerName www.monodemo.home
ServerAdmin web-admin@monodemo.home
DocumentRoot ${MONO_HOME}/lib/xsp/test
# MonoServerPath can be changed to specify which version of ASP.NET is hosted
# mod-mono-server1 = ASP.NET 1.1 / mod-mono-server2 = ASP.NET 2.0
# For SUSE Linux Enterprise Mono Extension, uncomment the line below:
# MonoServerPath www.monodemo.home "/opt/novell/mono/bin/mod-mono-server2"
# For Mono on openSUSE, uncomment the line below instead:
MonoServerPath www.monodemo.home "${MONO_HOME}/bin/mod-mono-server2"

# To obtain line numbers in stack traces you need to do two things:
# 1) Enable Debug code generation in your page by using the Debug="true"
#    page directive, or by setting <compilation debug="true" /> in the
#    application's Web.config
# 2) Uncomment the MonoDebug true directive below to enable mod_mono debugging
MonoDebug www.monodemo.home true

# The MONO_IOMAP environment variable can be configured to provide platform abstraction
# for file access in Linux.  Valid values for MONO_IOMAP are:
#    case
#    drive
#    all
# Uncomment the line below to alter file access behavior for the configured application
#MonoSetEnv www.monodemo.home MONO_IOMAP=all
#
# Additional environtment variables can be set for this server instance using
# the MonoSetEnv directive.  MonoSetEnv takes a string of 'name=value' pairs
# separated by semicolons.  For instance, to enable platform abstraction *and*
# use Mono's old regular expression interpreter (which is slower, but has a
# shorter setup time), uncomment the line below instead:
# MonoSetEnv www.monodemo.home MONO_IOMAP=all;MONO_OLD_RX=1

MonoApplications www.monodemo.home "/:${MONO_HOME}/lib/xsp/test"
<Location "/">
  MonoSetServerAlias www.monodemo.home
  SetHandler mono
  SetOutputFilter DEFLATE
  SetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$" no-gzip dont-vary
</Location>
<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript
</IfModule>

上記設定の有効化。

$ sudo a2ensite monodemo

「/etc/apache2/sites-available/monodemo」へのシンボリックリンクが「/etc/apache2/sites-enabled」に作成される。

「/etc/hosts」に追加。
# added for monodemo
192.168.1.x     www.monodemo.home

Apache 再起動後、「http://www.monodemo.home/」で動作確認。



mod_mono の設定以外では、

「/etc/apache2/conf.d/directory_settings」
<directory />
  Options All
  Options -Indexes
  AllowOverride All
  Order allow,deny
  allow from all
</directory>

「/etc/apache2/conf.d/enable_cgi」
AddHandler cgi-script .cgi .pl
を追加している。

Apache の設定については、こちらこちらを参考にした。

1 件のコメント:

sta さんのコメント...

「/etc/apache2/envvars」の設定から、

export MONO_TRACE_LISTENER="$MONO_HOME/www/mod_mono_trace.log"

を削除しました。詳細はこちらにて。

コメントを投稿