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」:環境変数の設定
  1. # envvars - default environment variables for apache2ctl  
  2.   
  3. # Since there is no sane way to get the parsed apache2 config in scripts, some  
  4. # settings are defined via environment variables and then used in apache2ctl,  
  5. # /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.  
  6. export APACHE_RUN_USER=www-data  
  7. export APACHE_RUN_GROUP=www-data  
  8. export APACHE_PID_FILE=/var/run/apache2.pid  
  9.   
  10. # added for mod_mono  
  11. export MONO_HOME="/opt/mono/2.4.2.3"  
  12. export PATH="$MONO_HOME/bin:$PATH"  
  13. export LD_LIBRARY_PATH="$MONO_HOME/lib:$LD_LIBRARY_PATH"  
  14. export MONO_IOMAP=all  

「/etc/apache2/mods-available/mono.conf」:「mod_mono.conf」から分割、および設定の追加
  1. <IfModule mod_mono.c>  
  2.   AddType application/x-asp-net .aspx  
  3.   AddType application/x-asp-net .asmx  
  4.   AddType application/x-asp-net .ashx  
  5.   AddType application/x-asp-net .asax  
  6.   AddType application/x-asp-net .ascx  
  7.   AddType application/x-asp-net .soap  
  8.   AddType application/x-asp-net .rem  
  9.   AddType application/x-asp-net .axd  
  10.   AddType application/x-asp-net .cs  
  11.   AddType application/x-asp-net .vb  
  12.   AddType application/x-asp-net .master  
  13.   AddType application/x-asp-net .sitemap  
  14.   AddType application/x-asp-net .resources  
  15.   AddType application/x-asp-net .skin  
  16.   AddType application/x-asp-net .browser  
  17.   AddType application/x-asp-net .webinfo  
  18.   AddType application/x-asp-net .resx  
  19.   AddType application/x-asp-net .licx  
  20.   AddType application/x-asp-net .csproj  
  21.   AddType application/x-asp-net .vbproj  
  22.   AddType application/x-asp-net .config  
  23.   AddType application/x-asp-net .Config  
  24.   AddType application/x-asp-net .dll  
  25.   DirectoryIndex index.aspx  
  26.   DirectoryIndex Default.aspx  
  27.   DirectoryIndex default.aspx  
  28.   
  29.   Include ./mods-available/include/mono  
  30. </IfModule>  

「/etc/apache2/mods-available/mono.load」:「mod_mono.conf」から分割
  1. 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
  1. # mod_mono Control Panel  
  2. <Location /mono>  
  3.   SetHandler mono-ctrl  
  4.   Order deny,allow  
  5.   Deny from all  
  6.   Allow from 127.0.0.1  
  7. </Location>  
  8.   
  9. # Demo  
  10. MonoServerPath demo ${MONO_HOME}/bin/mod-mono-server2  
  11. Alias /demo "${MONO_HOME}/lib/xsp/test"  
  12. AddMonoApplications demo "/demo:${MONO_HOME}/lib/xsp/test"  
  13. <Location /demo>  
  14.   MonoSetServerAlias demo  
  15.   SetHandler mono  
  16. </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」をブラウザで確認すると、



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

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

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

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

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

「/etc/apache2/sites-available/include/monodemo」:Configure Apache Mod_Mono で作成した設定ファイルから分割
  1. ServerName www.monodemo.home  
  2. ServerAdmin web-admin@monodemo.home  
  3. DocumentRoot ${MONO_HOME}/lib/xsp/test  
  4. # MonoServerPath can be changed to specify which version of ASP.NET is hosted  
  5. # mod-mono-server1 = ASP.NET 1.1 / mod-mono-server2 = ASP.NET 2.0  
  6. # For SUSE Linux Enterprise Mono Extension, uncomment the line below:  
  7. # MonoServerPath www.monodemo.home "/opt/novell/mono/bin/mod-mono-server2"  
  8. # For Mono on openSUSE, uncomment the line below instead:  
  9. MonoServerPath www.monodemo.home "${MONO_HOME}/bin/mod-mono-server2"  
  10.   
  11. # To obtain line numbers in stack traces you need to do two things:  
  12. # 1) Enable Debug code generation in your page by using the Debug="true"  
  13. #    page directive, or by setting <compilation debug="true" /> in the  
  14. #    application's Web.config  
  15. # 2) Uncomment the MonoDebug true directive below to enable mod_mono debugging  
  16. MonoDebug www.monodemo.home true  
  17.   
  18. # The MONO_IOMAP environment variable can be configured to provide platform abstraction  
  19. # for file access in Linux.  Valid values for MONO_IOMAP are:  
  20. #    case  
  21. #    drive  
  22. #    all  
  23. # Uncomment the line below to alter file access behavior for the configured application  
  24. #MonoSetEnv www.monodemo.home MONO_IOMAP=all  
  25. #  
  26. # Additional environtment variables can be set for this server instance using  
  27. # the MonoSetEnv directive.  MonoSetEnv takes a string of 'name=value' pairs  
  28. # separated by semicolons.  For instance, to enable platform abstraction *and*  
  29. # use Mono's old regular expression interpreter (which is slower, but has a  
  30. # shorter setup time), uncomment the line below instead:  
  31. # MonoSetEnv www.monodemo.home MONO_IOMAP=all;MONO_OLD_RX=1  
  32.   
  33. MonoApplications www.monodemo.home "/:${MONO_HOME}/lib/xsp/test"  
  34. <Location "/">  
  35.   MonoSetServerAlias www.monodemo.home  
  36.   SetHandler mono  
  37.   SetOutputFilter DEFLATE  
  38.   SetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$" no-gzip dont-vary  
  39. </Location>  
  40. <IfModule mod_deflate.c>  
  41.   AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript  
  42. </IfModule>  

上記設定の有効化。

$ sudo a2ensite monodemo

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

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

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



mod_mono の設定以外では、

「/etc/apache2/conf.d/directory_settings」
  1. <directory />  
  2.   Options All  
  3.   Options -Indexes  
  4.   AllowOverride All  
  5.   Order allow,deny  
  6.   allow from all  
  7. </directory>  

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

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

1 件のコメント:

sta さんのコメント...

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

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

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

コメントを投稿