| ■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↑ |