このブログのサーバのOSはDebianを使っているんですが、有名なパッケージ管理の「apt-get」のアップデートをお気軽な感覚でなーんも考えずに実行したら(アホ)Apacheが2.0から2.2になってもうた。orz
ま、Debianをtesting(テスト版)を入れて、更にaptの設定をゆるーくしてる自分が悪いんだが・・・。
最初、Apacheをダウングレードしようかと思ったんですが、せっかくやっちまったのでApache2.2で行く事に覚悟してみた。という事で一番ハマった+2.2にアップグレードする際に一番作業が発生するであろう認証部分をちょっと書いてみます。Basic認証を想定して話を進めますが、Digestも大体同じだと思う。
まずは、認証に必要なモジュールが変わった。以下の4つを入れておく必要がある。
なので、以下のようにhttpd.confを変更・追加する。
LoadModule auth_basic_module /usr/lib/apache2/modules/mod_auth_basic.so LoadModule authn_file_module /usr/lib/apache2/modules/mod_authn_file.so LoadModule authz_groupfile_module /usr/lib/apache2/modules/mod_authz_groupfile.so LoadModule authz_host_module /usr/lib/apache2/modules/mod_authz_host.so
次になんだか、パスワードファイルが使えなくなってたのでパスワードファイルを作り直す。以下はユーザ名「myuser」でパスワード「mypassword」で作った場合でパスワードファイルに最初に追加する場合。複数ユーザを追加する場合は「-c」オプション無しで。(パスとかは任意で読み替えてくだされ)
# htpasswd -c /usr/local/apache/passwd/passwords myuser New password: mypassword Re-type new password: mypassword Adding password for user myuser
これまでは今まで(2.0まで)と大体同じなんだが、ここからグループファイルってのが必要になるようだ(絶対に必要かどうかは不明だが、作らないと認証が正しく動かなかった)。任意の場所に以下の内容が書かれているようなテキストファイル(設定ファイル)を作る。
これは、グループ名が最初に来て、その後にユーザをスペースで区切って入れていく(複数のユーザを作る場合は上記「パスワードファイルを作る」を参照)。
GroupName: myuser myuser2 myuser3
最後に今まで作ってきたファイルを使って認証を行うディレクティブをhttpd.confに設定します。
AuthType Basic AuthName “Administrator Zone” AuthUserFile /usr/local/apache/passwd/passwords AuthGroupFile /usr/local/apache/passwd/groups Require group GroupName
後はApacheを再起動して終了~。ま、Apacheのドキュメントに載ってるのは載ってはいるんですがね・・・自分メモ :-)
ところで、Webシステムではたいていの場合はほっといてもいろんなソフトがログを吐く。
~中略~
もしもこれらのログが通常出力する内容では都合が悪い、不足だ、という場合には、オリジナルなログ出力システムを構築して、出力されたログを別途管理しなければならない。それは面倒だと言う場合には、今すでに出力されていて管理もされているログに相乗りすればいい。 というアイデアはいかがだろう。
Webアプリを開発する際に、ログをわざわざ別途管理するのは面倒→Apacheに相乗り。非常に説得力があるのと同時に効率的だ。積極的に利用させてもらいます。
phpspotさんの所で紹介されてた。Apacheなんか(PHPでもできますが)でコンテンツ圧縮して転送するGzip圧縮がされているかどうかを調べるサービス。
なにが、いいって圧縮されているかどうかを調べられるのもそうなんですが、グラフで計算してくれる所。あ、あとApacheのServerTokensも表示される。実際使っていて「うへ・・・ServerTokens表示されてるよ・・・」と気が付いて、あわててOffに・・・。^^;
ちなみに、ApacheでServerTokensとServerSignatureを切るとある程度はサーバの情報が制限されるようになるらしいです(セキュリティー的にね)。