このページではLinux上でApache/httpdを使ってWebサーバー構築するための設定ファイルhttpd.confの基本的な設定について解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
Webサーバーの構築

Webサーバーについて

Apacheの構成と設定の準備

全般的な動作環境の設定

コンテナディレクティブの形式

コンテナディレクティブの設定

ドキュメントルートの設定等

ユーザーディレクトリの設定

バーチャルホストの設定

CGIの実行許可の設定

ユーザー認証機能の設定

httpdのコントロール

httpdの動作チェック

ポートフォワーディングの設定


全般的な動作環境の設定

httpd は同時にいくつもの コンテンツ を公開したり、ひとつのコンテンツの中でも特定のディレクトリやファイルについてきめ細かい制御ができるようになっています。

しかしながらそういう個々の設定を行う前に、例えばhttpdの プロセス の制御など、全体的に決めておかなければならない事柄があります。

このパートではhttpdの主設定ファイル "/etc/httpd/conf/httpd.conf" の中から、そのような「httpdの動作全体に関係する部分」の設定を説明します。

もちろん、実際にhttpdを動作させるには、コンテンツ単位、あるいはディレクトリの範囲やファイルを指定した設定が必要となりますので、必ずこのパート以降もご一読ください。

ServerTokens〜クライアントに送り返す情報

WBEL3 CentOS3 及び WBEL4、CentOS4では 43行目 あたり、CentOS5では 44行目 あたりに記述があります。

接続を要求してきた クライアント に対して、どの程度の サーバー 情報を回答するか、という ディレクティブ です。

通常この情報はクライアント側から直接見ることはできませんが、例えばサーバーエラーが発生したときなどに Webブラウザ に表示されることがあります。

デフォルトの、

ServerTokens OS

では、以下のように表示されます。

構築中のLinuxサーバー の場合、具体的には(例:WBEL3)、

ServerTokens Prod → Server : Apache

ServerTokens Major → Server : Apache/2

ServerTokens Minor → Server : Apache/2.0

ServerTokens Min → Server : Apache/2.0.46

ServerTokens OS → Server : Apache/2.0.46 ("OSの名称")

ServerTokens Full → Server : Apache/2.0.46 ("OSの名称") mod_perl/1.99_09 Perl/v5.8.0 ...

となります。

一般的にいうと、この種の情報は第三者に知られても危険というわけではないので、デフォルトのままでも構いません。

とはいえ、こういう情報を外部に出したからといって、何かメリットがあるわけでもありません。

心配性の方は、

ServerTokens Prod

に設定を変更しておきましょう。

また、後ほど説明する "ServerSignature" ディレクティブを "Off" に設定することで、この"ServerTokens"ディレクティブの設定に関係なく、一切の情報表示を行わないようにすることもできます。

ServerRoot〜各種設定の基点ディレクトリ

WBEL3 CentOS3 及び WBEL4、CentOS4では 56行目 あたり、CentOS5では 57行目 あたりに記述があります。

httpd の設定ファイル、ログファイルなど、httpdが自分自身で参照したり、作成したりするディレクトリやファイルの基点となるディレクトリを設定する ディレクティブ です。

デフォルト は、

ServerRoot "/etc/httpd"

です。

従って、この"/etc/httpd/conf/httpd.conf"を含むhttpdの設定ファイルの中で、 相対パス で表記されているディレクトリやファイルは、ディレクトリ"/etc/httpd"が基点となります。

設定を変更する必要はありませんが、以後の設定に関係してきますから覚えておきましょう。

PidFile〜httpdのプロセスID記録ファイルの指定

WBEL3 及び CentOS3 では 72行目 、WBEL4及びCentOS4では 62行目 、CentOS5では 63行目 あたりに記述があります。

WBELやCentOS上で動作するプログラムは、 OS がその動作を管理するためにID番号を割り振り、その番号をファイルとして記録します。

これを一般に Pidファイル と呼びますが、"PidFile"はそのファイルを具体的に指定する ディレクティブ です。 デフォルト は、

PidFile run/httpd.pid

で、 相対パス になっています。

従って、 "ServerRoot" ディレクティブが"/etc/httpd"ですから、具体的には "/etc/httpd/run/httpd.pid" がPidファイルとして指定されていることになります。

ただし、ディレクトリ"/etc/httpd/run"は、 "/var/run" シンボリックリンク ですから、実際のファイルの場所は "/var/run/httpd.pid" となります。

設定を変更する必要はありません。

Timeout〜リクエストが返ってくるまでの待ち時間

WBEL3 及び CentOS3 では 77行目 、WBEL4及びCentOS4では 67行目 、CentOS5では 68行目 あたりに記述があります。

HTTP では、 クライアント から サーバー へリクエストを送るとき、 HTTPメソッド を用います。

これらのメソッドは、 HTML テキスト で記述される方は良くご存知かもしれません。

一般に良く使われるのは、データをサーバーに送る "POST" と、その際にデータの置き換えを行う "PUT" 、そして取得に用いる "GET" などです。

これらのHTTPメソッドを利用する場合、データはクライアントから一度サーバーに送信され、その後にサーバーからクライアントに送信されることになりますが、通信が遅すぎて送受信に時間がかかりすぎたり、通信障害などによって途中で パケット が送られてこなくなってしまう場合があります。

もちろん httpd は、いつまで経っても受信が終わらない(あるいは永久に終わらないかもしれない)状態のまま待ち続けるわけにはいきませんから、適当なところで受信待ちをやめ、クライアントからのリクエストを失敗させてしまう必要があります。

"Timeout" は、この「待ち時間」を設定する ディレクティブ です。単位は「秒」です。 デフォルト では、WBEL3、CentOS3では、

Timeout 300

WBEL4、CentOS4、CentOS5では

Timeout 120

となっていますから、一つのHTTPメソッドが300秒、または120秒を経過すると無条件にリクエストを失敗させます。

この値を大きくすれば、httpdは我慢強く受信が終わるのを待ち続けることになります。

しかし、このくらいの時間は、ほとんどのクライアントが既に「送信を諦めている」時間でもありますから、これより長い時間を設定してもまず意味がありません。

逆にこの値を小さくし過ぎると、速度が遅く接続が不安定な アナログ通信 のクライアントなどが不便を被ることになるかもしれません。

一般にこの"Timeout 300"あるいは"Timeout 120"という値は、お使いの ディストリビューション でのhttpdの運用上、過不足のない妥当な値とされていますので、特に変更する必要はないと思われます。

KeepAlive〜http接続の維持

WBEL3 及び CentOS3 では 83行目 、WBEL4及びCentOS4では 73行目 、CentOS5では 74行目 あたりに記述があります。

一般に コンテンツ は、 Webサーバー 上の htmlファイル や、 サーバーサイドアプリケーション により出力されるデータ、及び多数の画像ファイルなどの組み合わせになってひとつのページが構成されています。

デフォルト

KeepAlive Off

では、それらのデータを一つ送信するごとに HTTP 接続を終了しますから、多量の画像ファイルが添付されているコンテンツの送信には時間がかかってしまいます。

そこでこの ディレクティブ は、一ヶ所の クライアント からのコンテンツ要求に対して、できるだけHTTP接続を維持できるように、

なぜデフォルトが "KeepAlive Off" になっているのかはよく解りませんが、古いHTTPの規格への対応とか、 httpd への動作負荷を減らすためとか、そういうことかもしれません。
KeepAlive On

に変更することをお勧めします。

また、このように設定を変更した場合には、次の"MaxKeepAliveRequests"ディレクティブが同時に有効になります。

MaxKeepAliveRequests〜KeepAliveの最大値

WBEL3 及び CentOS3 では 90行目 、WBEL4及びCentOS4では 80行目 、CentOS5では 81行目 あたりに記述があります。

上記のKeepAlive ディレクティブ "KeepAlive On" に設定されているとき、 クライアント からのコンテンツ要求に対して、 HTTP 接続を維持する最大リクエスト数を設定するディレクティブです。

デフォルト では、

MaxKeepAliveRequests 100

になっていますが、普通はもっと大きな数値を設定したほうが良いとされています。もちろん数値が大きいほうがスムーズにデータを送信することができます。

この値を "0" にすると"無制限"になりますが、一般的に"無制限"という設定は、トラブルが発生したときの対処が難しくなることがありますので、一応の上限は定めておくべきでしょう。

無難なところでは、

MaxKeepAliveRequests 500

くらいが良いと思われます。

KeepAliveTimeout〜HTTPを切断するまでの時間

デーモン を起動したときにメインとして稼動するプロセスを 「親プロセス」 、必要に応じて「親プロセス」が起動させるプロセスを 「子プロセス」 と呼ぶことがあります。
httpdの場合、個々のクライアントに対して接続を確立させるのはいうまでもなく「子プロセス」です。

WBEL3 及び CentOS3 では 96行目 、WBEL4及びCentOS4では 86行目 、CentOS5では 87行目 あたりに記述があります。

httpd は、接続を要求してくる クライアント に対して個々にhttpdのプロセスを起動して接続を確立させます。

クライアントは入れ替わり立ち代りやってきますから、接続をやめたクライアントとの接続プロセスは逐次終了しなければ、そのうち 構築中のLinuxサーバー メモリ 不足に陥ってしまうでしょう。

ただ、だからといってあまり頻繁に接続を終了してしまうことは、例えば "http://www.obenri.com/" のサイトにとどまって、次々にページを開いてくれるような有難いクライアントにとっては、一ページごとに接続をやりなおすことになりますから逆にレスポンスの面でデメリットになります。

この、 「最後のリクエストに応えた後、接続プロセスを終了するまでにどのくらいの時間同じクライアントとの接続を維持しておくか。」

という値を設定するのが、"KeepAliveTimeout" ディレクティブ です。

デフォルト は以下のとおりで、単位は秒です。

KeepAliveTimeout 15

この設定では大まかにいえば、クライアントが「15秒以内に次のページを開く」ような閲覧方法をとるような場合に、次々と小気味良くページが表示されることになります。

この値を大きくすれば、それだけクライアント側の快適さが向上しますが、大量のhttpdのプロセスを並行して稼動させなければならなくなりますので、 サーバー への負荷はかえって大きくなります。

本当に誰もが見たがるホームページならば、わざわざそういう快適設定をしなくとも、ちゃんと見てくれるはずですね。本当のところは。

配信するコンテンツの内容にもよりますが、ホームページへのアクセスが少ない場合で、「コンテンツをじっくり見てもらいたい」場合でもおおよそ "60" 以下に設定します。それ以上長く設定しても「お客さんを捕まえておく」効果は変わりません。

データの配信速度が遅いと送信そのものに時間がかかりますから、その分 "KeepAliveTimeout" の値は小さくしなければならないというわけです。

サーバーの搭載メモリ ホスト機の推奨搭載メモリについて が比較的少ない場合(目安として200 MB 以下)、あるいは通信の上り速度が遅い場合(目安として ADSL 以下)にはデフォルトの設定のままが望ましいでしょう。

また、かなり良い ハードウェア 、通信環境であっても、毎日数千ページ以上のアクセスがあるような人気サイトを運営するような場合には、はやりデフォルトのままのほうが良いかもしれません。

Linten〜受け付けるIPアドレスとポート番号

WBEL3 及び CentOS3 では 151行目 、WBEL4及びCentOS4では 133行目 、CentOS5では 134行目 あたりに記述があります。

httpd が扱う IPアドレス ポート番号 を指定する ディレクティブ です。

httpdは コンテンツ を配置するディレクトリやファイルごとに同様のアクセス制御を行うのが一般的ですが、この"Listen"ディレクティブはその 最初の関門 で、ここで許可されないIPアドレスとポート番号は他のディレクティブで許可することはできません。

一般書式は、

Listen [接続を許可するIPアドレス]:[接続を許可するポート番号]

です。

WBEL3やCentOS3の場合の デフォルト の設定は、

IPアドレス表記 "0.0.0.0" は、このディレクティブでは例外的に 「全てのIPアドレス」 という意味で使われるパラメータです。
Listen 0.0.0.0:80

一方WBEL4、CentOS4、CentOS5の場合のデフォルト設定は、

すべてのIPアドレスからの接続を許可する場合は、このようにIPアドレスの表記を省略することができます。
じゃあWBEL3やCentOS3のデフォルト設定の "0.0.0.0:" って何なの?。という気もしますが、書式上の体裁の問題ではないかな、と思ったりします。よくわかりませんが。
Listen 80

となっています。パラメータの記述は違いますがどちらも内容は同じで、 「全てのIPアドレスからポート番号80で接続を許可する。」 という意味、つまり Webサーバー として最も一般的な動作を行うようになっています。

例えば、 HTTP Well-Knownポート である80番以外のポート番号のみを利用したい場合は、

Listen 8080

、両方とも利用したい場合は

Listen 80
Listen 8080

のように記述します。

ところで、ユーザー認証などを行う仕組みを導入するときに用いる セキュアWebサーバー の構築に関してですが、もしもこの"Listen"ディレクティブのルールに従えばポート番号 "443" を追加する必要があるはずですが、ここでは記述する必要はありません。

セキュアWebサーバーについては、実は WBEL CentOS インストール SSL がインストールされると同時に、モジュールとして Apache に組み込まれています。

そしてその設定ファイルである、 "/etc/httpd/conf.d/ssl.conf" に記述され、設定が有効になっていますので、"/etc/httpd/conf/httpd.conf"に記述する必要はありません。

ssl.confのListenディレクティブ(WBEL3,CentOS3)
"ssl.conf"の"Listen"ディレクティブ(WBEL3,CentOS3)

ssl.confのListenディレクティブ(WBEL4,CentOS4,CentOS5)
"ssl.conf"の"Listen"ディレクティブ(WBEL4,CentOS4,CentOS5)

ただ、今から初心者としてWebサーバーを構築してゆくわけですから、最初からWell-Known以外のポート番号を利用するような設定は必要ないと思います。

また、IPアドレスに対するアクセス制限については、別のディレクティブでディレクトリやファイル単位でのアクセス制御を行うことができますから、この"Listen"ディレクティブで設定を行う必要はないでしょう。

というわけですからWBELやCentOSの場合はデフォルトの設定のままで大丈夫です。

User,Group〜アクセスするアカウントの設定

WBEL3 及び CentOS3 では 244〜245行目 、WBEL4及びCentOS4では 227〜228行目 、CentOS5では 231〜232行目 あたりに記述があります。

どのような プロトコル を用いる場合でも、 LinuxOS のシステムを一部でも利用する場合には、必ず アカウント が必要となります。

これらの ディレクティブ では、ホームページの閲覧にやってくるユーザー、つまり httpd に対して HTTP でアクセスを行う不特定多数の クライアント に対して、一時的に貸し出すアカウントを設定します。

デフォルト では、

User apache
Group apache

となっていますから、 構築中のLinuxサーバー にとっては、HTTPでアクセスするユーザーはすべて、 "apache" というアカウントで接続することになります。

"apache"というアカウントは、 Apache インストール されるときに自動的に作成される「HTTP接続専用の」 システムアカウント ですが、 構築中のLinuxサーバー ログイン して操作することはできないようになっています。

もちろん、これらの設定は変更する必要はありません。

ServerAdmin〜サーバー管理者の連絡先

WBEL3 及び CentOS3 では 252行目 、WBEL4及びCentOS4では 235行目 、CentOS5では 251行目 あたりに記述があります。

httpd は、 クライアント がホームページを閲覧中にエラーが発生すると、クライアント側の Webブラウザ にエラーページを表示します。

この ディレクティブ では、そのエラーページに表示する サーバー 管理者の連絡先を設定します。

このディレクティブは バーチャルホスト の設定 バーチャルホストでのServerAdminディレクティブの設定 でも用います。

この設定は、ホームページの利用者がその作成者に対して Webサーバー のエラーをリポートすることで、不具合の修正に役立てるという「助け合い精神」に基づくものに他なりません。

デフォルト では、

ServerAdmin root@localhost

となっています。これを実際のメールアドレスに書き換えれば良いのですが、正直に、

ServerAdmin tanaka@obenri.com

と記述しても、

「あなたの コンテンツ を見ていたらエラーが出ました。修正したほうがいいですよ。」

のような親切なメールを送ってくれる人は 非常に稀 です。

メールがやってこないだけならばまだ良いのですが、残念なことに、現実には海外からのシステムソリューション関係のDMや、怪しげな出会い系サイトの勧誘のメールなどが次々と送られてくるのが普通です。

Apache の開発担当者もその現実は把握しているようで、実際にはこのディレクティブでメールアドレスを設定しても、後ほど説明する "ServerSignature" ディレクティブを デフォルトの "On" から "EMail に変更しなければ表示されないようになっています。

もちろん余計なメールを受信したくなければ、デフォルトのまま変更する必要はありません。

もしも、「そういう怪しげなメールを受け取ってみたい」と思う場合には、この限りではありません。

記述するのは必ずしも"****@obenri.com"である必要はありません。受信可能な任意のメールアドレスあれば何でもOKです。

ただ、大量のスパムメールでメールボックスが溢れ、収拾がつかなくなる可能性がありますから、使えなくなっても構わないメールアドレスを記述することをお勧めします。

ServerName〜主となるFQDNとポート番号の設定

WBEL3 及び CentOS3 では 266行目 、WBEL4及びCentOS4では 249行目 、CentOS5では 265行目 あたりに記述があります。

公開しようとする コンテンツ FQDN と、受け付ける ポート番号 を設定する ディレクティブ です。

このディレクティブは バーチャルホスト の設定 バーチャルホストでのServerNameディレクティブの設定 でも用います。

デフォルトでは、

#ServerName new.host.name:80

と、コメントアウトされたテンプレートになっていますから、コメント記号の"#"をはずして次のように設定します。

ServerName www.obenri.com:80

これで httpd は自分自身を

「ポート番号80番で HTTP 送受信を行う"www.obenri.com" 」

と解釈して動作します。

もちろん、 "www.obenri.com" というFQDNは、 WAN 空間では ダイナミックDNS で自宅のWAN側の グローバルIPアドレス DDNSの設定について(WBEL3) DDNSの設定について(CentOS3) DDNSの設定について(WBEL4) DDNSの設定について(CentOS4) DDNSの設定について(CentOS5) に、また LAN 空間では BIND LANに設置するBIND(〜9.3.x)の設定について LANに設置するBIND(9.7.x〜)の設定について hostsファイル LAN内のhostsファイルの設定について などで "192.168.100.11 名前解決 されていなければなりません。

実をいうとこのディレクティブは、省略してもとりあえず動作はします。

httpdへのアクセスは、基本的に IPアドレス で行われますから、 構築中のLinuxサーバー に割り当てられているIPアドレスへ正引きの名前解決ができるFQDNから記述可能な URL であればどれでもOKです。

つまり、 "http://web1.obenri.com/" でも、 "http://mail.obenri.com/" でも、同じようにアクセス可能というわけです。

ただ、"ServerName"ディレクティブが設定されていない場合、httpdは自分自身のFQDNを逆引きの名前解決で得ようとします。

例えば、 "http://www.obenri.com/" "http://mail.obenri.com/" でアクセスが行われると、実際はその正引きの名前解決の結果である "192.168.100.11" でアクセスが行われますが、httpd内部ではその逆引きの名前解決結果である "http://web1.obenri.com/" namedの逆引きの設定 を自分自身のFQDNから生成するURLとしてその後の処理を行います。

もちろん、このことが直ちにhttpdの不具合に結びつく訳ではありませんが、そういった「複雑な内部事情」を発生させないためにも、もし Webサーバー に用いるFQDNを決めているのであれば、きちんと"ServerName"を設定することをおすすめします。

ポート番号については、前述の "Listen" ディレクティブで、HTTP用の "80" と、 HTTPS 用の "443" を許可していますので、メインのWebサーバーである "www.obenri.com" には明示的に、 "80" を指定しておきます。

なお、このディレクティブで具体的なFQDNの設定を行った場合は、次の"UseCanonicalName"ディレクティブを適切に設定する必要があります。

UseCanonicalName〜"ServerName"の利用の有無

WBEL3 及び CentOS3 では 275行目 、WBEL4及びCentOS4では 258行目 、CentOS5では 274行目 あたりに記述があります。

"ServerName" ディレクティブ での設定を、利用するか否かを設定するディレクティブです。

デフォルト では、

UseCanonicalName Off

になっており、 httpd はユーザーからリクエストされた FQDN ホスト名 などをそのまま利用して URL を生成して動作します。

一方、このディレクティブを、

説明は割愛しますが、 構築中のLinuxサーバー 上のhttpdを、FQDNだけではなく、 LAN 内だけで通用する ホスト名 ( WindowsOS NetBIOS 名など )でも利用したい場合は、 "Off" に設定しておかなければならないかもしれません。
UseCanonicalName On

に設定すると、ユーザーからのリクエストに応えた後、 "ServerName" ディレクティブで設定されているFQDNを用いてURLを生成して動作します。

構築中のLinuxサーバー では、"ServerName"ディレクティブをhttpd自身の動作に利用しますから、 "UseCanonicalName On" に設定します。

DocumentRoot〜メインコンテンツの格納場所

WBEL3 及び CentOS3 では 282行目 、WBEL4及びCentOS4では 265行目 、CentOS5では 281行目 あたりに記述があります。

この httpd コンテンツ データの格納場所を指定する ディレクティブ です。

このディレクティブは バーチャルホスト の設定 バーチャルホストでのDocumentRootディレクティブの設定 でも用います。

デフォルト は、

DocumentRoot "/var/www/html"
既に、 いきなりApacheを起動してみる でテスト稼動をされた方には、あえて説明する必要はないと思います。

ですから、 構築中のLinuxサーバー 上の "/var/www/html" 以下がコンテンツの格納場所として指定されています。

従って、 クライアント から

通常アクセス時には "index.html" というファイル名は省略することができるように、次に説明する "DirectoryIndex" ディレクティブで設定されています。

"http://www.obenri.com/index.html"

にアクセス要求があった場合は、

"/var/www/html/index.html"

が送り返され、

"http://www.obenri.com/data/photo.html"

に要求があったときは、

"/var/www/html/data/photo.html"

が送り返されることになります。

とりあえずは変更する必要はないでしょう。

DirectoryIndex〜省略を許可するファイル名

WBEL3 及び CentOS3 では 392行目 、WBEL4及びCentOS4では 375行目 、CentOS5では 391行目 あたりに記述があります。

コンテンツ の最初の見出しに使われるようなページの htmlファイル 名は、できれば省略してアクセスできたほうが何かと好都合です。

この ディレクティブ では、その上位のディレクトリ名だけで httpd にアクセスできるように、省略を許可するファイル名を指定します。

デフォルト では、

DirectoryIndex index.html index.html.var

となっていますから、例えば クライアント から、

"http://www.obenri.com/"

へのアクセスが行われた場合、"/var/www/html/"以下に"index.html"というファイルが存在すれば、自動的に、

"http://www.obenri.com/index.html"

へ要求されたものとみなされます。

この設定は、コンテンツ内の全てのディレクトリが対象になりますので、"/var/www/html/data/index.html"というファイルも同様に、

"http://www.obenri.com/data/"

でアクセス可能になります。

またこのディレクティブは、スペースで区切って複数のファイル名を記述することができます。例えば、

DirectoryIndex index.html index.htm index.cgi index.php index.html.var

と記述しておけば、これらの全てのファイル名が省略対象になります。

アクセス要求のあったディレクトリの中に、該当するファイル名が複数存在する場合は、「"index.html"が見つからなければ"index.htm"、それも見つからなければ"index.cgi...」という具合に、設定されているファイル名が向かって左側から参照され、最初に一致したファイル名が有効になります。

このディレクティブによる設定は、httpdの動作にではなく、どちらかというとコンテンツの体裁に係わるものですから、とりあえずは、

DirectoryIndex index.html index.htm

に設定しておき、後からコンテンツを作成する際に適宜追加すればよいでしょう。

AccessFileName〜外部設定ファイルのファイル名

WBEL3 及び CentOS3 では 392行目 、WBEL4及びCentOS4では 382行目 、CentOS5では 391行目 あたりに記述があります。

httpd は、設定の一部を "AllowOverride" ディレクティブ AllowOverrideディレクティブについて の設定によって、第三者が書き換え可能な他の設定ファイルに記述することを許可することができます。

この "AccessFileName" では、その設定ファイル、通称 「アクセスファイル」 のファイル名を指定します。

デフォルト は、

AccessFileName .htaccess

ですが、できればこのまま使用することをお勧めします。変更する場合でも、ファイル名は必ず ".ht" で始まるファイル名を設定してください。

その理由については、 .(ドット)ファイルについて .htで始まるファイルのアクセス禁止設定 を参考にしてください。

ErrorLog〜エラーログを出力するファイルの指定

WBEL3 及び CentOS3 では 474行目 、WBEL4及びCentOS4では 456行目 、CentOS5では 472行目 あたりに記述があります。

クライアント からのアクセス時に発生したエラー ログ を記録するファイルを指定する ディレクティブ です。

このディレクティブは バーチャルホスト の設定 バーチャルホストでのErrorLogディレクティブの設定 でも用います。

デフォルト では、

ErrorLog logs/error_log

と、 相対パス 表記になっています。

従って、 "ServerRoot" ディレクティブが"/etc/httpd"ですから、具体的には "/etc/httpd/logs/error_log" がエラーログファイルとして指定されていることになります。

ただし、ディレクトリ"/etc/httpd/logs"は、 "/var/log/httpd" シンボリックリンク ですから、実際のファイルの場所は "/var/log/httpd/error_log" となります。

通常httpdのログファイルは、すべてこのディレクトリに出力されます。

設定を変更する必要はありません。

CustomLog〜アクセスログを出力するファイルの指定

WBEL3 及び CentOS3 では 500行目 、WBEL4及びCentOS4では 494行目 、CentOS5では 514行目 あたりに記述があります。

クライアント からのアクセス ログ を記録するファイルを指定する ディレクティブ です。

このディレクティブは バーチャルホスト の設定 バーチャルホストでのCustomLogディレクティブの設定 でも用います。

デフォルト では、

CustomLog logs/access_log combined

と、 相対パス 表記になっています。

従って、 "ServerRoot" ディレクティブが"/etc/httpd"ですから、具体的には "/etc/httpd/logs/access_log" がアクセスログファイルとして指定されていることになります。

ただし、ディレクトリ"/etc/httpd/logs"は、 "/var/log/httpd" シンボリックリンク ですから、実際のファイルの場所は "/var/log/httpd/access_log" となります。

末尾のオプションである "combined" は、アクセスログの出力形式の指定です。

この形式は、ログファイルを解析する アプリケーション を利用する場合に、そのアプリケーションの仕様に合わせて変更しなければならないことがあります。

当面は設定を変更する必要はありません。

ServerSignature〜サーバー情報の表示設定

WBEL3 及び CentOS3 では 522行目 、WBEL4及びCentOS4では 504行目 、CentOS5では 524行目 あたりに記述があります。

httpd クライアント にエラーメッセージなどを表示する際に、 サーバー に関する情報をどの程度まで掲載するかを決定する ディレクティブ です。

デフォルト では、

ServerSignature On

で、 "ServerTokens" ディレクティブで設定された内容だけがサーバー情報として追加表示されます。

これを、

ServerSignature EMail

と設定すると、"ServerTokens"ディレクティブで設定された内容に加えて、 "ServerAdmin" ディレクティブで設定した連絡先も掲載されるようになります。

セキュリティ を最優先に考える場合は、

ServerSignature Off

と設定してください。エラーメッセージ以外の情報はクライアント側に表示されなくなります。

AddDefaultCharset〜標準で利用する文字セット

WBEL3 及び CentOS3 では 769行目 、WBEL4及びCentOS4では 730行目 、CentOS5では 747行目 あたりに記述があります。

httpd が、 クライアント コンテンツ データを送るとき、 Webブラウザ で利用させる 文字セット を設定する ディレクティブ です。

デフォルト では、

AddDefaultCharset UTF-8

となっていますから、クライアント側のWebブラウザの文字セットは UTF-8 に選択されることになります。

つまり、このデフォルト設定のままhttpdを利用する場合には、コンテンツデータの文字セットをUTF-8で作成すればよいことになります。

しかしこれには大きな問題があります。

実はUTFは、まだ日本には充分に浸透しているとは言い難い文字セットで、それを取り扱う環境がまだ整っていません。

まず、 クライアント機 からコンテンツデータを Webサーバー アップロード するための FTPクライアント の多くが、UTF-8への文字セット変換機能を持っていません。

例えば WindowsOS のスタンダードなFTPクライアントともいえる FFFTP の場合、

元々WindowsOSは日本語を S-JIS で扱っていますので、S-JISでアップロードするときは 「無変換」 を選択します。

のように、アップロード時に変換可能な文字セットは EUC JIS に限られます。

また、市販品やフリーウェアの CGI プログラムの多くもUTF-8形式の入出力に対応していないことが多く、やはりどうしてもEUCやS-JISでコンテンツデータを扱わなければならないケースは避けられないでしょう。

ところで、 htmlファイル は通常、ヘッダ部分に

<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">

という記述を入れることで、クライアント側の Webブラウザ の文字セットを指定して表示させることができるようになっています。

もちろん、コンテンツデータ自体はそのまま送信されますので、Webブラウザ側でエンコードを適切に選択すれば、きちんと表示することは可能です。とっても面倒ですが。

ところが、この"AddDefaultCharset"ディレクティブに具体的な文字セットを指定してしまうと、このヘッダ部分の命令は無視され、"AddDefaultCharset"の文字セットで強制的に表示してしまいます。

つまり、"AddDefaultCharset"で指定した文字セットと、htmlファイルの文字セットが異なっている場合には、Webブラウザでは間違いなく「文字化け」が起こってしまうことになります。

そこで、このディレクティブは、

#AddDefaultCharset UTF-8

のように設定そのものを無効にしてしまうか、または、

AddDefaultCharset Off

と明示的に無効にすることをお勧めします。

そうすると、コンテンツデータに任意の文字セットが利用できるようになります。

ただしその場合には前に示したように、コンテンツデータ自身に必ず文字セットの指定をいれなければなりません。

Alias〜仮想ディレクトリの設定

WBEL3 及び CentOS3 では 537,551,893行目 、WBEL4及びCentOS4では 519,871行目 、CentOS5では 539,837行目 あたりに記述があります。

LinuxOS における、ディレクトリの シンボリックリンク に相当する機能の設定です。

例えば "DocumentRoot" ディレクティブが "/var/www/html" に設定されている場合に、

Alias /admin_only/ "/var/www/admin/"

とAliasディレクティブを設定すると、 クライアント から

"http://www.obenri.com/admin_only/"

にアクセス要求があったときには

"/var/www/html/admin_only/"

ではなく、

"/var/www/admin/" というディレクトリから コンテンツ データが送信されるようになります。

この場合、 "/var/www/html/admin_only/" というディレクトリがなくてもエラーにはなりませんし、実際にそのディレクトリが存在していても無視されます。

"Alias"ディレクティブは、 httpd で設定するすべての URL に対して有効になりますから、例えば バーチャルホスト を使って複数のコンテンツを配信する場合でも、その中のディレクトリに対して個々に適用されます。

さて、httpdは通常、バーチャルホストを含めて"DocumentRoot"ディレクティブで HTTP でのアクセスを許可するディレクトリを指定します。

しかしこの"Alias"ディレクティブを使用すると、上の例のように、本来HTTPではアクセスを受け付けないディレクトリをコンテンツの配置場所として利用できるようになります。

httpdになぜこのような仕組みが存在するかというと、 セキュリティ の確保された サーバー 管理領域を設置するためだと思ってください。

例えば、自分以外の第三者にホームページ配信のためのコンテンツスペースを貸し出すような場合で、httpdで配信するURLのすべてに、

"http://ホスト名( FQDN )/admin_only/"

という 「自分だけが操作可能な」 サーバー管理領域を設けたいとします。

ところが、もしも"Alias"ディレクティブを使わないとしたら、その管理領域は"/var/www/html/admin_only/"などの 「コンテンツデータと同じ場所に実際に作成」 しなければなりません。

コンテンツデータの置き場所はいうまでもなく、自分以外の ユーザーアカウント FTP によるコンテンツデータの アップロード が許可されているディレクトリですから、どうしてもセキュリティが甘くなってしまう領域です。

しかしその管理領域を、第三者がFTPでアクセス不可能なディレクトリに配置できれば、管理用 スクリプト の内容を覗き見られたりする危険がなくなるというわけです。

デフォルトで用いられている"Alias"ディレクティブは、アイコン、マニュアル、エラーを配信するために利用されているだけですから、これらの設定は修正する必要はありません。

WBEL4及びCentOS4では、 "/manual" に関する記述は "/etc/httpd/conf.d/
manual.conf"
にあります。
Alias /icons/ "/var/www/icons/"

Alias /manual "/var/www/manual"

Alias /error/ "/var/www/error/"

ただ、それぞれで設定されている仮想ディレクトリは、説明のように実際にはドキュメントルートで利用することはできません。

従って、 "icons" "manual" "error" の三つのディレクトリ名は、ドキュメントルート直下では使用できないことに注意してください。

このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
www.centos.org - The Community ENTerprise Operating System