Apacheを俺の女にするぞ

自分に失望

最近は会社の凄腕エンジニアの方と共に仕事をさせていただいておりとても勉強になっているが、互いのバグの報告が「席にとことこ行く」か「しょうがなく内線」のどちらかなのでとてもホットなコミュニケーション。意見交換もしやすく新しいアイデアも生まれたりして良い感じなものの毎回毎回だと多少ホットすぎるきらいがある。しかも記録に残らない。時折二人して忘れる。

しかし以前 Bugzilla に酷い目にあった我々「小規模ウェブアプリ制作軍団」としては、本気モードなバグトラッキングシステムを使っている場合ではないし呑気にインストールしている時間もないのだった。小規模な仕事は納期も小規模。

そんなわけで凄腕エンジニア氏との口頭での簡単な協議の結果、Ruby で書かれた影舞を導入することにして、した。とても便利。例えばゲスト・ユーザ・管理者の認証管理はどうしていると思いますか?。なんと、それぞれ guest.cgi、user.cgi、admin.cgi というのが用意されていて、あとはウェブサーバの認証でやっとくれ。とちゃんとマニュアルに書いてある。良いぞ!。最近こういう姿勢に惹かれます。

結果とても便利なのは良かったけれど、ApacheCGI を設定する初歩の初歩なところで勘違いでつまずいてしまった。自分に失望した。どうせ俺はなにをやっても恥ずかしい男。俺の行いなんてすべからく陽にさらされた陰部のように恥ずかしい。

失望してばかりもいられない

そんなこんなあって、仕事ではローカルデバッグにしか使わないけれど、この際、Apache を少なくとも「わかって使っている」ようになっておくことにした。以前見かけて、いつかちゃんと読みながら設定ファイルを書こうと思っていた、module.jp さんの、

と、バージョン2になったあたりからデザインも小綺麗になり、しかもとても調べやすいオフィシャルのドキュメント、

を見ながら新規にインストールしていくことにした。今は自宅のPCだが、conf を会社の自分PCにも送って Apache を立て直しつつ理解してゆきたい。

はじめてのふれあい

そんなわけでまず、スライドに従って highperformance.conf を元に httpd.conf を作ろうとしたら、windows バイナリインストールのせいか、いきなり無い。でもくじけずに、httpd.conf からコメント行と空白行を取り去り(もちろん sed で)、そこからさらに、

  • デフォルト値を明示的に再設定しているものや、上のスライドに無いもので
  • ディレクティブ一覧を引いて、とりあえず意味がわかったもの

を消してしまうことにした。
windows 用の部分と、理解できて設定が必要な部分は残してみた。そこで出来上がったのがこれです。

Listen 8080
ServerName localhost:8080
ServerRoot "C:/Program Files/Apache Group/Apache2"
DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs"

<IfModule mpm_winnt.c>
    ThreadsPerChild 250
    MaxRequestsPerChild 0
</IfModule>

LoadModule access_module modules/mod_access.so
LoadModule alias_module modules/mod_alias.so

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

AccessFileName htaccess.txt
<FilesMatch "htaccess\.txt">
    Order allow,deny
    Deny from all
</FilesMatch>

ScriptAlias /cgi-bin/ "C:/Program Files/Apache Group/Apache2/cgi-bin/"
<Directory "C:/Program Files/Apache Group/Apache2/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

# UseCanonicalName Off

短っ!

ちなみに、最後のコメントアウトは、今の自分にはよく理解できなかったもの。AccessFileName は、恥ずかしながらこれまで知らなかったもの。唯一呼んでいる二つのモジュールは、Order ディレクティブや ScriptAlias ディレクティブを使おうとして起動エラーが出たので、それぞれディレクティブ一覧を引いて呼んでみました。きっとモジュールは、使いたいディレクティブから引いていくようにすればいいんだな。

なんと、これで全く普通に Apache ちゃんは立ち上がってくる衝撃の事実…!。今まで戦々恐々としながら httpd.conf の密林を彷徨っていた自分が切ない。Apache ちゃんの気持ちを全然考えてあげられていなかった自分が悔しい。僕は今日、はじめて Apache ちゃんをちゃんと起動した気がする。ちゃんと触れ合った気がする。うーむ…。感動。つづく!