読者です 読者をやめる 読者になる 読者になる

C++ ときどき ごはん、わりとてぃーぶれいく☆

Wonder Rabbit Projectのなかのひとのブログ。主にC++。

darkhttpd これは求めていた静的サイトテスト用に使い易い軽量httpd

これは良い簡易軽量httpdを見付けた☆ミ

『闇のhttpd』という事になるけどどこかのC++闇の軍団みたいに底知れない奥行き感は無く、代わりにとてもシンプルで、それでいて目的によってはこれほど最適なhttpdは無い・w・

インストールの説明は端折る。なぜなら私はArch Linuxを使っているので、

% pacman -S --noconfirm darkhttpd

とかするだけで終わるので。

使い方も簡単で、

% darkhttpd _site
darkhttpd/1.8, copyright (c) 2003-2011 Emil Mikulic.
listening on: http://0.0.0.0:8080/
1333538930 127.0.0.1 "GET /" 200 443 "" "Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20100101 Firefox/11.0"
1333538930 127.0.0.1 "GET /favicon.ico" 404 383 "" "Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20100101 Firefox/11.0"
1333538931 127.0.0.1 "GET /favicon.ico" 404 383 "" "Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20100101 Firefox/11.0"
1333538933 127.0.0.1 "GET /main.html" 200 289 "http://localhost:8080/" "Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20100101 Firefox/11.0"
1333538933 127.0.0.1 "GET /bin/main.js" 200 1037 "http://localhost:8080/main.html" "Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20100101 Firefox/11.0"

実際に打ってるコマンドは最初の1行だけ。あとは起動のお知らせとアクセスログ。`_site`はさくっとhttpdで稼働させたいドキュメントルートのディレクトリを指示している。

たったこれだけ!(オプションはあるけど)

これはまさに私が求めていた「任意のディレクトリをさくっとhttpdにホストしてローカルからブラウザーでテストする為のhttpdコマンド」なのです。これでウェブ関連の開発効率が良くなる!Makefileにtest-darkhttpdとかターゲットを作っておいてビルドシステムに組み込んでビルドした静的なウェブサイトを簡単にテストできる。嬉しい・w・b

ちなみに、Hakyllのプロジェクトなら組み込みのsnapを使えば簡単なのでまあ不要なのだけど、そうではない状況でビルドして静的ファイル群を生成してそれをテストしたい様な構成のプロジェクトではとても役立ちます。

<追記: Makefile の例>

_siteに静的コンテンツ群をビルドするMakefileを用意している場合はdarkhttpdをインストールした上で次の様な追記を行って措くと、makeコマンドでdarkhttpdの制御が簡単で良いですよ☆(ゝω・)vキャピ

tmp:
        @ mkdir tmp

test-darkhttpd:
        @ darkhttpd _site --index main.html

test-darkhttpd-daemon-start: tmp
        @ darkhttpd _site --index main.html --daemon --pidfile tmp/darkhttpd.pid

test-darkhttpd-daemon-stop: tmp/darkhttpd.pid
        @ kill `cat tmp/darkhttpd.pid`

test-darkhttpd-daemon-restart: test-darkhttpd-daemon-stop test-darkhttpd-daemon-start

(↑表示上の改行位置と実際の改行位置の違いにはご注意下さい。念の為gistにも貼っておきました→append darkhttpd to your Makefile sample — Gist