Web配置
Apache + mod_mono環境でNerdDinnerを動作させることが可能です。
mod_monoは、Monoから提供されている、ASP.NETサポートを提供するApache 2.0/2.2用モジュールです。NerdDinner用の設定については、Configure Apache Mod_Monoで雛形となる設定ファイルを生成できるので、それを使用しました。
NerdDinner資源の配置は、MonoDevelopのWeb配置機能を使用しました。
Apache + mod_mono環境設定
Ubuntu上での設定については、「Apache 2.2 + mod_mono 2.4.2 on Ubuntu 9.04」で簡単にまとめましたので、参考にして下さい。
「/opt/mono/www/nerddinner」配下にNerdDinnerの資源を配置するという設定で、次の設定ファイルを追加しました。
<VirtualHost *:80> Include ./sites-available/include/nerddinner </VirtualHost>
ServerName www.nerddinner.home ServerAdmin web-admin@nerddinner.home DocumentRoot /opt/mono/www/nerddinner # 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.nerddinner.home "/opt/novell/mono/bin/mod-mono-server2" # For Mono on openSUSE, uncomment the line below instead: MonoServerPath www.nerddinner.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.nerddinner.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.nerddinner.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.nerddinner.home MONO_IOMAP=all;MONO_OLD_RX=1 MonoApplications www.nerddinner.home "/:/opt/mono/www/nerddinner" <Location "/"> MonoSetServerAlias www.nerddinner.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> CustomLog /var/log/apache2/access.log combined
IPアドレスとサーバー名の対応が必要になりますが、ローカル環境で試す分にはhostsファイルの修正で十分でしょう。
# added for monodemo, nerddinner 192.168.1.x www.monodemo.home www.nerddinner.home
MonoDevelopでWeb配置
MonoDevelopでのWeb配置については、「Web Deploy with MonoDevelop 2.0」で簡単にまとめましたので参考にして下さい。
$ sudo mkdir -p /opt/mono/www/nerddinner $ sudo chown sta /opt/mono/www/nerddinner
MonoDevelopのメニューから[プロジェクト]-[オプション]を選択し、Web配置ターゲットの設定を行います。
設定後、同じく[プロジェクト]-[Webに配置]を選択し、Web配置を実行します。
Web配置完了後、グループおよび権限の変更を行い、
$ sudo chown -R :www-data /opt/mono/www/nerddinner $ sudo chmod -R g+w /opt/mono/www/nerddinner/App_Data
NerdDinner設定の有効化、Apacheのリスタートを行います。
$ sudo a2ensite nerddinner $ sudo /etc/init.d/apache2 restart
6. まとめ
Linux上のMono環境で、ASP.NET MVCで作成されたWebアプリケーションの動作確認について解説を行いました。
本稿で確認できたことは次の2点です。
- MonoDevelopを使用して、ASP.NET MVC Webアプリケーションの修正、動作確認およびUnit Testの実行といった一通りの作業が可能
- Apache+mod_mono環境でASP.NET MVC Webアプリケーションが動作可能
本来チュートリアルは、その説明手順に沿って行うのが正攻法だと思いますが、本稿ではチュートリアルの完成品に手を入れるという方法をとりました。少々安易な方法と思いますが、チュートリアルおよびASP.NET MVCの理解のためのプラスアルファになれば幸いです。