thttpdをつかってみる

非力なCPU&少ないメモリーのPCをつかっているので、 apache より、小さくて軽い、thttpdを試しに動かしてみました。
その時のメモです。

thttpdとは、

thttpd は、tiny/turbo/throttling HTTP server ということで、 小さくて、軽くて、セキュアな(?)Webサーバということです。
chrootして動くので、apache から乗り換えるときは、ちょっととまどうかも。
詳しくは、thttpd のページ (英語)をご覧ください。

インストール

Debian なので、apt-get 一発です。
$ apt-get install thttpd

設定

thttpの設定ファイルは/etc/thttpdの下に配置されます。
thttpd.conf
thttpのメインの設定ファイル。あまりいじることは無いと思います。
throttle.conf
よくわかってません。(^_^;)

やってみたこと

デフォルトのトップページはどこ?
http://localhost/ でアクセスできるページは、/var/www にあります。
インストール時はなにも、入っていないので、とりあえず、index.html を作りましょう。
また、thttpd.confファイル中の dir=/var/www で指定することができます。

~ユーザ名、でアクセスするには。
http://localhost/~hoge でアクセスするには、「/var/www/users/ユーザ名」ディレクトリを 作る必要が有ります。
/var/www/users/ユーザ名 の下にユーザのページをつくります。
ここで、注意が必要なのは、apache の時のディレクトリ、~/public_html にリンクを 張るだけでは、ダメです。
thttpdはchrootして動いているので、/var/www の下以外はアクセスできません。 また、シンボリックリンクもたどらないようになっています。
/var/www/users/ユーザ名 ディレクトリの下に実体を置く必要が有ります。
ユーザから、apacheの時と同じように見せるなら、(必要が有るかどうかは別として) /var/www/users/ユーザ名 を ~/public_html にリンクを張りましょう。

~ユーザ名、でアクセスするディレクトリを、~/public_html にしたい。
thttpdのコンパイル時に指定する必要が有るようです。
Debianのパッケージでは、~ユーザ名は、/var/www/users/ユーザ名ディレクトリを 指す(thttpdのデフォルト)ようにコンパイルされているので、 コンパイルしなおす必要があるようです。
コンパイルは、まだやっていませが、config.h ファイルの、TILDE_MAP_1 を無効にして、 TILDE_MAP_2 を有効にするとできるようです。

~/public_htmlに実体を置き、thttpdのコンパイルせずに、~ユーザ名でアクセスしたい。
/varの容量が少ないとか、既にapacheで運用しているものをthttpd変えたい時などだと思います。
chrootをしないようにする必要があるので、セキュリティ的に甘くなるらしいですので、 注意してください。
thttpd.conf の、
      chroot
となっている行を、
      nochroot
とします。 そして、ファイルの最後に、
      nosymlink
を追加します。
これで、chrootなしで、シンボリックリンクをたどるようになりました。
最後に ~/public_html を /var/www/users/ユーザ名 にリンクを張るとOKです。

認証が必要なページを作る
apache では、.htaccess ファイルをつかいますが、 thttpdでは、.htpasswd ファイルをつかいます。
まず、.htpasswd ファイルをつくるには、thtpasswdコマンドを使います。
thtpasswdコマンドは、thttpd­utilパッケージに入っているので、aptを使って インストールしましょう。
最初は、

$ thtpasswd -c himitu hoge1
Adding user hoge1
New password:
Re-type new password:

とすると、ユーザhoge1が登録された、himit ファイルができます。
これに、hoge2を追加する場合は、-cオプションを外して、

$ thtpasswd himitu hoge2

とします。
こうして出来上がった、himituファイルを、認証が必要なページのディレクトリに、 .htpasswdというファイル名でコピーすると、そのディレクトリ以下のページをアクセス する時に、ユーザ名とパスワードの入力を求められるようになります。

戻る