mod_monoに関するTips。

§1 lighttpd+mod_mono

lighttpdでmod_monoを使用するためのTips。

§1.1 設定

lighttpdでmod_monoを使用するにはmod_fastcgiが必要になるのであらかじめインストールしておく必要がある。 インストールしたら、設定ファイルを開きmod_monoのための設定を追記する。 この例での設定内容は次の通り。

  1. Monoは/usr/localにインストールされているものとする
  2. document-rootは/srv/www、mod_monoを使用するアプリケーションのディレクトリは/srv/www/mod_mono
  3. 拡張子.aspxのファイルのみfastcgi-mono-server2で処理する
  4. mod_monoのログは/var/log/lighttpd/fastcgi-mono-server.logに出力
  5. 起動する最大プロセス数は1
lighttpd.conf
# mod_fastcgiを有効にする
server.modules += (
  "mod_fastcgi",
)

server.document-root = "/srv/www"

index-file.names += (
  "index.aspx",
  "default.aspx",
)

fastcgi.server = (
  ".aspx" => (
    "localhost" => (
      "socket" => "/tmp/fastcgi-mono-server.socket",
      "bin-path" => "/usr/local/bin/fastcgi-mono-server2",
      "bin-environment" => (
        "PATH" => "/bin:/usr/bin:/usr/local/bin",
        "LD_LIBRARY_PATH" => "/usr/local/lib:",
        "MONO_SHARED_DIR" => "/tmp/",
        "MONO_FCGI_LOGLEVELS" => "Standard",
        "MONO_FCGI_LOGFILE" => "/var/log/lighttpd/fastcgi-mono-server.log",
        "MONO_FCGI_ROOT" => "/srv/www/mod_mono/",
        "MONO_FCGI_APPLICATIONS" => "/mod_mono:.",
      ),
      "max-procs" => 1,
    ),
  ),
)

設定を保存し、再起動する。

§1.2 Hello, World

動作確認のため、"Hello, World"を表示するだけのサンプルを作成する。 まずファイル/srv/www/mod_mono/default.aspxを次の内容で作成。

/srv/www/mod_mono/default.aspx
<%@ Page Language="C#" CodeFile="default.aspx.cs" Inherits="_Default" %>
<html>
  <head>
    <title>Hello, World</title>
  </head>
  <body>
    <h1>ASP.NET sample</h1>
    <asp:Label runat="server" id="Label1" />
  </body>
</html>

次にファイル/srv/www/mod_mono/default.aspx.csを次の内容で作成。

/srv/www/mod_mono/default.aspx.cs
using System;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : Page {
  protected override void OnLoad(EventArgs e)
  {
    Label1.Text = "Hello, World";
  }
}

上記二つのファイルを作成したら、ブラウザでhttp://localhost/mod_mono/を開く。 うまくページが表示されればOK。 以下は問題なく動作した場合のレスポンスの例。

HTTP/1.1 200 OK
X-AspNet-Version: 2.0.50727
Content-Length: 155
Cache-Control: private
Content-Type: text/html; charset=utf-8
Set-Cookie: ASP.NET_SessionId=C11EEDA27408FDD2462060B3; path=/mod_mono
Date: Mon, 18 May 2009 05:36:13 GMT
Server: lighttpd

<html>
  <head>
    <title>Hello, World</title>
  </head>
  <body>
    <h1>ASP.NET sample</h1>
    <span id="Label1">Hello, World</span>
  </body>
</html>