iPod touchでlighttpd

JB済みiPhone / iPod touch(2.0)上で軽量HTTPDサーバ lighttpd を動かしてみたのでやり方のメモ。ただし今のところ静的コンテンツの配信のみです(lighttpd自体はCGIなどにも対応しています)。
ローカルにファイルをおいておくと、オフライン時でも見られて便利なので。


追記1: iPhone / iPod touch 3.1 でも動作を確認。

手順

  1. Pwnage Toolとかでカスタムファームウェアを作って導入
  2. Cydiaがインストールされるので、それを使ってOpenSSHを導入
  3. 同じくlighttpdを導入
  4. 設定ファイルが付属していないorzので、scpなどで以下の設定ファイルを /etc/lighttpd.conf に配置
  5. 電源ON時に自動起動させるため、同様にscpなどで以下のlaunchd用の設定ファイルを配置
  6. /var/mobile/Sites というディレクトリを作り、その中にコンテンツを配置
  7. iPhone / iPod touchを再起動
  8. Safariからhttp://127.0.0.1/ にアクセスすると、コンテンツが閲覧できるはず。

なおアクセス制限をかけていないので他のマシンからでもアクセスできてしまいます。lighttpd.confファイルでserver.bind = "localhost" を指定すれば、ローカルに対してしかListenしないはずです。

設定ファイル

/etc/lighttpd.conf
server.modules = ( 
        "mod_access",
        "mod_alias",
 )
server.document-root = "/var/mobile/Sites/"
index-file.names = (
    "index.html", "index.htm",
)
mimetype.assign = (
    ".pdf" => "application/pdf",
    ".sig" => "application/pgp-signature",
    ".spl" => "application/futuresplash",
    ".class" => "application/octet-stream",
    ".ps" => "application/postscript",
    ".torrent" => "application/x-bittorrent",
    ".dvi" => "application/x-dvi",
    ".gz" => "application/x-gzip",
    ".pac" => "application/x-ns-proxy-autoconfig",
    ".swf" => "application/x-shockwave-flash",
    ".tar.gz" => "application/x-tgz",
    ".tgz" => "application/x-tgz",
    ".tar" => "application/x-tar",
    ".zip" => "application/zip",
    ".mp3" => "audio/mpeg",
    ".m3u" => "audio/x-mpegurl",
    ".wma" => "audio/x-ms-wma",
    ".wax" => "audio/x-ms-wax",
    ".ogg" => "application/ogg",
    ".wav" => "audio/x-wav",
    ".gif" => "image/gif",
    ".jpg" => "image/jpeg",
    ".jpeg" => "image/jpeg",
    ".png" => "image/png",
    ".xbm" => "image/x-xbitmap",
    ".xpm" => "image/x-xpixmap",
    ".xwd" => "image/x-xwindowdump",
    ".css" => "text/css",
    ".html" => "text/html",
    ".htm" => "text/html",
    ".js" => "text/javascript",
    ".asc" => "text/plain",
    ".c" => "text/plain",
    ".cpp" => "text/plain",
    ".log" => "text/plain",
    ".conf" => "text/plain",
    ".text" => "text/plain",
    ".txt" => "text/plain",
    ".dtd" => "text/xml",
    ".xml" => "text/xml",
    ".mpeg" => "video/mpeg",
    ".mpg" => "video/mpeg",
    ".mov" => "video/quicktime",
    ".qt" => "video/quicktime",
    ".avi" => "video/x-msvideo",
    ".asf" => "video/x-ms-asf",
    ".asx" => "video/x-ms-asf",
    ".wmv" => "video/x-ms-wmv",
    ".bz2" => "application/x-bzip",
    ".tbz" => "application/x-bzip-compressed-tar",
    ".tar.bz2" => "application/x-bzip-compressed-tar"
)
server.port = 80
server.username = "nobody"
server.groupname = "nobody"
/Library/LaunchDaemons/net.lighttpd.lightppd.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">

<dict>
	<key>Label</key>
	<string>net.lighttpd.lightppd</string>
	<key>RunAtLoad</key>
	<true/>
	<key>ProgramArguments</key>
	<array>
		<string>/usr/sbin/lighttpd</string>
		<string>-D</string>
		<string>-f</string>
		<string>/etc/lighttpd.conf</string>
	</array>
</dict>
</plist>


追記2: -D オプション (backgoundに回さない) 追加。launchctl stop net.lighttpd.lightppd で停止できるようにするため。


CGIディレクトリ一覧などの設定方法は、id:NeoCat:20080731 にて。