SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Monoでのプログラミング実例集

ASP.NET MVC on Mono
――「NerdDinner」をLinux上で動かしてみる

Mono環境でASP.NET MVCの動作確認を行う

  • X ポスト
  • このエントリーをはてなブックマークに追加

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の資源を配置するという設定で、次の設定ファイルを追加しました。

「/etc/apache2/sites-available/nerddinner」
<VirtualHost *:80>
    Include ./sites-available/include/nerddinner
</VirtualHost>
「/etc/apache2/sites-available/include/nerddinner」
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ファイルの修正で十分でしょう。

「/etc/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に配置]を選択し、Web配置を実行します。

Web配置の実行
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のリスタートを行います。

NerdDinner設定の有効化、Apacheのリスタート
$ sudo a2ensite nerddinner
$ sudo /etc/init.d/apache2 restart
http://www.nerddinner.home
http://www.nerddinner.home

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の理解のためのプラスアルファになれば幸いです。

7. 参考資料

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Monoでのプログラミング実例集連載記事一覧
この記事の著者

sta(エステーエー)

風来坊blog:sta.blockhead

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4669 2010/01/21 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング