tDiaryLighttpd上で動かすための設定をした際のメモ

構成

OS
FreeBSD 9.1-RELEASE
WWWサーバ
ports/www/lighttpd
tDiary
ports/japanese/tdiary
その他
ports/lang/ruby20

準備

Ruby 2.0を使うので,/etc/make.confに次の設定を追加しておく.

RUBY_DEFAULT_VER=2.0
RUBY_VER=2.0

各ソフトウェアのインストールには,Ports Collectionを用いる.portsnap(8)を用いて,Ports Collectionを入手し最新版にしておく1

# portsnap fetch
# portsnap extract
# portsnap update

インストール

Ports collectionのlighttpdとtDiaryをインストールする2.以下,ユーザ名はfooとする.

# cd /usr/ports/www/lighttpd
# make install clean

# cd /usr/ports/japanese/tdiary
# make install clean
# /usr/local/bin/ja-tdiary-inst.rb --user=foo

設定

Docs Configuration File Options - Lighttpd“などを参考にして,/usr/local/etc/lighttpd/ディレクトリ以下の設定ファイルを修正3する.

lighttpd.conf

  • サーバ名4(デフォルトだとhostname)
    server.name = "www.example.org"
    
  • ディレクトリ名でアクセスされた際に用いるファイル5
    index-file.names += ( "index.html", "index.rb", "amazon-auth-proxy.cgi" )
    
  • パス名によるアクセス制限
    $HTTP["url"] =~ "/\.|.*\.rhtml|tdiary\.|trackback|amazon-auth-proxy\.yaml" { url.access-deny = ( "" ) }
    
  • これはコメント・アウト6
    #$SERVER["socket"] == "0.0.0.0:80" { }
    
  • mod_authの設定ファイルをインクルードする7
    include "conf.d/auth.conf"
    
  • User-Agent, IPアドレスによるアクセス拒否のための設定ファイル8をインクルードする
    include "deny_ua.conf"
    include "deny_ip.conf"
    

modules.conf

  • mod_authを有効にする
    server.modules   = (
    ...
    "mod_auth",
     ...
    )
    
  • mod_userdir, mod_cgiの設定ファイルをインクルードする9
    include "conf.d/userdir.conf"
    include "conf.d/cgi.conf"
    

conf.d/auth.conf

  • tDiaryのユーザ認証にはDigest認証を使う
    auth.backend = "htdigest"
    
  • Digest認証のためのパスワード・ファイル名
    auth.backend.htdigest.userfile  = "/home/foo/diary/.htdigest"
    
  • tDiaryの日記更新(および,設定変更)にはユーザ認証が必要
    auth.require = ( "/~foo/diary/update.rb" =>
      ( "method"  => "digest",
    	"realm"   => "tDiary",
    	"require" => "valid-user" ), )
    
  • パスワード・ファイルの作成は,"Docs Module mod_auth - Lighttpd“を参照10する

conf.d/cgi.conf

  • CGIプログラムとして扱う拡張子(と,それを実行するプログラム)
    cgi.assign = ( ".rb"  => "/usr/local/bin/ruby", ".cgi" => "/usr/local/bin/ruby" )
    

conf.d/mime.conf

  • 拡張子.rdfに対するMIME Media Typeを追加する
    mimetype.assign = (
    ...
    ".rdf" => "application/xml",
    ...
    )
    

conf.d/userdir.conf

  • ユーザのホーム・ディレクトリのある場所11
    userdir.basepath = "/usr/home/"
    
  • ユーザ・ディレクトリの使用を許すユーザ
    userdir.include-user = ( "foo" )
    

deny_ua.conf

  • User-Agentによるアクセス拒否のための設定
    $HTTP["useragent"] =~ "360[Ss]pider" { url.access-deny = ( "" ) }
    $HTTP["useragent"] =~ "[Bb]aidu" { url.access-deny = ( "" ) }
    ...
    

deny_ip.conf

  • IPアドレスによるアクセス拒否のための設定
    $HTTP["remoteip"] == "192.0.2.0/24" { url.access-deny = ( "" ) }
    ...
    

  1. 既にPorts Collectionがインストールされていれば,2行目の作業は不要. ↩︎

  2. tDiaryはrubyに依存しているので,tDiaryをインストールすれば自動的にrubyがインストールされる. ↩︎

  3. または,エントリを追加する. ↩︎

  4. 当然,これは例示用. ↩︎

  5. ApacheのDirectoryIndexに相当. ↩︎

  6. cf. [Solved] lighttpd cannot start - The FreeBSD Forums ↩︎

  7. modules.confに該当項目がないため,ここで読み込む. ↩︎

  8. これらは,独自に作成する. ↩︎

  9. 各設定ファイル内でモジュールを有効にしている. ↩︎

  10. Apacheのhtdigestコマンドで作成したものをそのまま使用できる. ↩︎

  11. これをセットしないと,/etc/passwdのhome_dirフィールドが用いられる. ↩︎