■Apacheの設定■
2007.04.28:FireFoxから送られるfavicon.icoエラーの無視設定の追記
■HTTPサーバはApache for win32を選びました.
解説サイトが多いという点と,やはり実績でこれを選びました.
ApacheサイトからBinaryのwin32でたどり着けます.
■解説サイトでは,C:ドライブにインストールしている例を見かけますが,本家のプロジェクトを見ていると,システムドライブ以外のドライブにインストールするようです.
したがって,私もシステムドライブではなく,サブシステムドライブを作り,そこに入れています.
ディレクトリ名は自由ですが,X:\localにインストールし,X:\local\Apacheとなるようにしました.
■Apacheを使う場合,避けて通れないのが,Apacheの設定ファイルであるhttpd.confの書き換えです.
これも解説サイトが数多く存在しますが,自分の環境にぴったりというサイトはありませんでした.
そこで,先人たちがやっていたように,部分取りして,自分のconfファイルを作ることになります.
絶対に変えてはいけないところ
ServerRoot "X:/local/Apache"

および

DocumentRoot "X:/local/Apache/htdocs"
この2行は書き換えてはいけません.
こうしておくことで,Apacheが正常に機能します.
こうしておけば,いけない人が来ても X:\local\Apache\htdocsディレクトリだけしか見えません.
もしここを書き換えるなら,他にファイルが存在しない別のドライブにしなくてはなりません.
そこにhtdocs以下のファイルをコピーします.しかし,これは全く意味のないことだと思います.
HTTPサーバのためにどうしても書き換えないといけないところ(1.3.27の場合)
大事な個所はインストール時に自動的に書き換えてくれます.
それ以外で書き換えが必要なところは
<IfModule mod_userdir.c>
 UserDir "X:/home/*/public_html/"
 UserDir "X:/home2・・・"
</IfModule>
UserDirというのは,サイト公開で,どのディレクトリをアクセスさせるかというパス設定部分です.
できれば公開ディレクトリは1つのほうが好ましいらしいのですが,私の場合,複数設定しています.
今になって思うのですが,public_htmlを入れないほうがよかったように思います.
なにしろ階層が深くなりがちです.
上の例ではX:\home以下のディレクトリは全て公開対象になります.
ここに非公開ディレクトリを作った場合は,Windows側で隠しファイルに属性変更します.
Windowsの場合,レンタルサーバのようなパーミッションが有効ではないので,設定はWindowsからです.
その後,kubo-office.comというディレクトリを作り,そこを公開ディレクトリとしています.
そうすることで,公開URLとファイルパスが同一文字列になって便利です.
<Directory "X:/home/*/public_html">
 Allowoverride None
 Options ExecCGI Includes FollowSymLinks Indexes Multiviews
 Allow from all
</Directory>
ここも先ほど指定したディレクトリパスを書きますが,最後に / は要りません.
Allowoverride Noneにより,アクセスコントロールに.htaccessを使わないとしています.
 ,htaccessを使いたい場合はNoneにしてはいけません.無視されます.
Options ExecCGIはCGIの実行を許可します.
Options InculudesはSSI機能を無条件で許可します.(必要ないかもしれません)
Options FollowSymLinksはUNIX専用オプションならしいのですが,不明なので置いてあります.
Options Indexesは他の個所の設定と関係するのですが,例えばhttp://xxx.xx/xx/で.htmlファイルが
 存在しないディレクトリはFTPのようにリスト表示することを許可します.したがって,リスト表示したくない
 ディレクトリにはダミーのindex.htmlを置きます.Option宣言しなけりゃいいのですが....
Options Multiviewsは関係ないのですが,英語でアクセスしてきたら英語ページを見せます.
 見せたくても英語ページを用意していません.(これも必要ないな....)
Allow from allはだれも拒否せずに見せますよという意味.
 <Directory "X:/local/Apache/htdocs">内のDeny設定のほうが優先される.
注意:この設定だけではCGIはcgi-binディレクトリ以外では使用できない.
■これだけでも立派なHTTPサーバとして機能する.
しかし,自宅サーバの醍醐味はここから.
次にもっと突っ込んだ設定をしてみよう.
ログファイルの整理法
デフォルトのApacheログファイルはだんだんと大きくなりつづける.
これでは,いくらハードディスクに余裕があっても,レスポンスが遅くなるし,管理が大変である.
そこで,アクセスログとエラーログを作り,それぞれ1日分のみ記録し,日付つきのログファイルとして保存するように改造する.
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
ErrorLog "|X:/local/Apache/bin/rotatelogs.exe X:/XXX/logs/error_%y%m%d.log 86400 540"
CustomLog "|X:/local/Apache/bin/rotatelogs.exe X:/XXX/logs/access_%y%m%d.log 86400 540" combined
以上のようにして,これ以外の行は#をつけてコメントにします.
こうしておけば,毎日ログファイルを2つづつ作ってくれます.あとは一日前のログファイルをよそに移動させて,資源を大切にしましょう....
ログファイルを圧縮させる
ページ内に写真を多用すると,1回の訪問でもログには複数行同じアドレスが書き込まれます.
これは1枚写真を読み込む毎にログを記録するためです.
そこで,写真のアクセスをログに書き込まないように設定を追加します.
設定個所は上と同じ個所です.
SetEnvIf Request_URI "\.(gif)|(jpg)$" object-is-image
CostomLog・・・・・combined env=!object-is-image
1行目はどの場所に書いても有効です.
2行目は上のCostomLogのcombinedに続けて書くという意味です.
こうすれば,jpgとgifは読み込まれてもログに書き出されなくなります.
FireFoxから送られるfavicon.icoエラーの無視設定【2007.04.28追記】
以前はインターネットエクスプローラでURLをお気に入りに入れた場合だけ読み込まれていたfavicon.icoですが,最近のFireFoxではページを開くだけでfavicon.icoを読みに行く設定です.
使っている側からすればどうってことない機能で,まずユーザーは気づかない,気にも止めない仕様なんですが,サーバログを解析する側にすれば,これほど邪魔なログはありません.
なにしろ,FireFoxでページを見るたびにこちらのサーバログにfavicon.icoがないエラーとして書き込まれます.
これは実際はサーバエラーではないわけですから,非常に困った仕様です.
みんなにFireFoxを使うなとは言えないのでこれを無視する設定をします.
SetEnvIf Request_URI "\.(gif)|(jpg)|(ico)$" object-is-image
CostomLog・・・・・combined env=!object-is-image
上の1行目に太字を追加記入して保存します.
その後Apacheを再起動します.
それにしてもFireFox,なぜこのような仕様なのか不思議です.
文字化けの回避
サイトの文字が化ける場合の対策です.文字化けの原因はApacheのChrsetによるものです.
<IfModule mod_negotiation.c>
LanguagePriority ja da nl et fr de el it kr no pl pt pt-br ru ltz ca es sv tw
</IfModule>
このように言語の順番でjaを先頭に置き換えます.
たいてはこれで回避できますが,これでも直らない場合はページにメタタグを書きます.
charset=iso-2022-jp
これをメタの記述内に書きます.
私の場合,ホームページビルダーで必ず書くように,あらかじめ設定してあります.
■http.confを書き換えたらApacheのリスタートをお忘れなく!
↑UP↑