|
|
Webサーバーの構築
|
WebサーバーについてApacheの構成と設定の準備全般的な動作環境の設定コンテナディレクティブの形式コンテナディレクティブの設定ドキュメントルートの設定等ユーザーディレクトリの設定バーチャルホストの設定CGIの実行許可の設定ユーザー認証機能の設定httpdのコントロールhttpdの動作チェックポートフォワーディングの設定 |
ドキュメントルートの設定等WBEL や CentOS の httpd では、 デフォルト の ドキュメントルート (平たく言えば HTML ファイルなどの置き場)として "/var/www/html/" が準備されています。 本当のところをいえば、httpdの設定対象範囲は LinuxOS のファイルシステム全体に及び、設定さえ行えば自分の好きなディレクトリを外部に公開することが可能ですから、必ずしもドキュメントルートを "/var/www/html/" にしなければならないわけではありません。 しかしながら、 RHEL 及びその クローン OS の利用を前提とした Apache の解説書の多くは "/var/www/html/" をドキュメントルートとして書かれていますし、 サーバーサイドアプリケーション の中には "/var/www/html/" がドキュメントルートであることを前提としてパッケージ化されているものもありますから、慣れないうちはデフォルト設定に従って構築を行うほうがベターです。 このパートではhttpdの主設定ファイル "/etc/httpd/conf/httpd.conf" の中の、 "/(ルート)" ディレクトリに関する設定と、デフォルトのドキュメントルート "/var/www/html/" とそれに関連するディレクトリのコンテナ ディレクティブ の設定について説明します。
更に細かい個々のディレクティブの具体的な内容については、
"/(ルートディレクトリ)"の設定WBEL3 及び CentOS3 では 292行目〜 、WBEL4及びCentOS4では 275行目〜 、CentOS5では 291行目〜 あたりに記述があります。 構築中のLinuxサーバー のファイルシステムの最上位に対する設定です。 httpd は、それが HTTP には全く関与しないものであっても、 OS 上のすべてのディレクトリとファイルに対してアクセスに関する設定を行う必要があります。 実際にhttpdが コンテンツ データとして クライアント に送信するものはファイルシステム全体のごく一部に過ぎませんから、コンテンツに関与しないその他のディレクトリやファイルに対しては「必要最低限の設定」を施しておきます。 httpdのディレクトリ式コンテナの設定は、ディレクトリ構造の上位から順に適用されていきますので、最上位である "/(ルート)" ディレクトリに対してこの「必要最低限の設定」を行っておけばまず安心というわけです。 デフォルト の設定は、
ですから、単純に解釈すると、 「 シンボリックリンク への参照を許可し、アクセスファイルの参照を禁止する。」
となりそうですが、実は
"Order"
ディレクティブ
と記述されていると解釈する必要があります。 |
|||||||||||
例えばこの設定の影響で、運用するつもりのないWebメール
アプリケーション
である
SquirrelMail
も自動的に有効になっていしまいます。
もちろん、セキュリティ的には問題ありです。 |
ですから正しくは、 「シンボリックリンクへの参照を許可し、アクセスファイルの参照を禁止し、すべての ノード からのHTTPアクセスを許可する。」 と設定されていることになります。 |
|||||||||||
|
|
ところで、これはいうまでもなくファイルシステムの最上位のディレクトリの設定です。 従ってこれが 下位のディレクトリに対して明示的に設定が行われない場合のデフォルト値として用いられる という点に注意してください。 従って、 セキュリティ を考慮すれば、この設定は好ましいものではありません。ここは、
と、 明示的にHTTPによるアクセスを禁止してください 。 実際にはドキュメントルートとして指定されたディレクトリ以外は、クライアントから直接 URL で参照することはできませんから、HTTPによるアクセスが許可されているだけで、それが直接セキュリティホールになるというわけではありません。 しかし、ここでとりあえず「すべてのファイルシステムに対してHTTPアクセスを拒否」という設定を施しておけば、「想定外のディレクトリを間違えてHTTP配信してしまう」というミスはずっと少なくなります。 "/var/www/html(ドキュメントルート)"の設定WBEL3 及び CentOS3 では 307行目〜 、WBEL4及びCentOS4では 290行目〜 、CentOS5では 306行目〜 あたりに記述があります。
"DocumentRoot"
ディレクティブ
通常の運用では、ここがHTTPで配信される最上位のディレクトリとなりますから、一般的には セキュリティ を高めに設定し、動作負荷の高い設定はできるだけ避けるようにします。 デフォルト 設定の記述部分には、行間にコメント文が挿入されています。
コメントの部分を省略すると、次のようになります。
すなわち、 「ディレクトリ構造の表示と シンボリックリンク への参照を許可し、アクセスファイルの参照を禁止し、すべての ノード からのHTTPアクセスを許可する。」 と設定されていることになります。
もしもディレクトリ構造の表示が必要でなければ、
"Options"
ディレクティブから
"Indexes"
オプションを削除してください
SSI
や
CGI
の実行許可をドキュメントルート全域で許可したい場合は、"Options"ディレクティブに、
"Include"
オプション
|
|||||||||||
|
|
ただ、ドキュメントルートの中のどこででもこういった サーバーサイドアプリケーション の実行許可を与えることは、セキュリティ面を考えるとあまり勧められるものではありません。 できれば、それらの実行プログラムは一ヶ所のディレクトリにまとめて、そのディレクトリにのみ実行を許可するように設定すべきです。
"AllowOverride"
ディレクティブ
"Order" "Deny" Alow" の各ディレクティブの設定は、コンテンツをすべてに公開するのが目的であればそのままでOKです。
稀なケースかも知れませんが、ドキュメントルートを他の目的で運用し、特別な設定を行う場合には、
ごく一般的なお勧めの設定は、以下のとおりです。
この <Directory /var/www/html> の設定が、以降の設定の基準ともいうべき設定になります。 ".ht"で始まるファイルの設定WBEL3 及び CentOS3 では 405行目〜 、WBEL4及びCentOS4では 388行目〜 、CentOS5では 404行目〜 あたりに記述があります。
"AllowOverride"
ディレクティブ
ということは、例えば、 "/var/www/html/member" 以下にアクセスファイル ".htaccess" を配置したとすると、その内容は クライアント から、 "http://www.obenri.com/member/.htaccess" で閲覧できる可能性があることを意味しています。 一般にアクセスファイルは、自分以外の第三者にhttpdの設定の一部を任せるためのものですが、その人が自分の管理する".htaccess"にきちんとアクセス制限をかけてくれるという保障はどこにもありません。 そのため"/etc/httpd/conf/httpd.conf"には デフォルト で、
という設定があります。この設定の意味は、 「".ht"で始まるファイルのHTTPによるアクセスを全て拒否する。」 です。設定対象が 正規表現 になっていますが、これは ワイルドカード の ".ht*" と同じ意味になります。
"AccessFileName"
ディレクティブ
この設定があれば、 構築中のLinuxサーバー のファイルシステム全域で、".ht"で始まるファイルすべてにHTTPでのアクセスができなくなりますから、セキュリティについて理解の浅いコンテンツ作成者にも安心してアクセスファイルの運用を任せられる、というわけです。 設定を修正する必要は特にありません。 サーバーからのレポートディレクトリWBEL3 及び CentOS3 では 539,553,897行目 、WBEL4及びCentOS4では 521,875行目 、CentOS5では 539,837行目 あたりに記述があります。
既存の
"Alias"
ディレクティブ
各々の デフォルト の設定を、対応する"Alias"ディレクティブとともに以下に示します。 |
|||||||||||
|
WBEL4及びCentOS4では、
"/manual"
に関する記述は
"/etc/httpd/conf.d/
manual.conf" にあります。 |
これら"Alias"ディレクティブによって指定されたディレクトリは、ドキュメントルート以下の階層ではありませんから、このようにそれぞれのディレクトリに明示的に各ディレクティブを設定する必要があります。 個々のディレクティブに関する説明は割愛しますが、これらはいずれもhttpdが自分自身で使用するものですので、設定を修正する必要はありません。
|
|||||||||||
とりあえず設定完了この段階まで設定が終われば、 FTPクライアント でドキュメントルート "/var/www/html" に コンテンツデータ を送り込むことで、問題なく Webサーバー として httpd を稼動させることができるはずです。 |
||||||||||||
|
|
これ以上の機能が必要なければ、httpdの設定はこれで終了です。httpdの実際の操作を行う
もしも、
"http://www.obenri.com/"
以下に、自分以外のローカルユーザーに対してコンテンツスペースを貸し出すスタイルの運用をする場合は、ユーザーディレクトリの設定
"http://www.obenri.com/"
以外の
URL
を利用して、別のコンテンツを同時に配信する場合は
バーチャルホスト
の設定
CGI
を利用して動的なコンテンツを作成したい方は「CGIの実行許可の設定」
コンテンツの任意のディレクトリに、ユーザー認証による
ログイン
制限を行う場合には「ユーザー認証機能の設定」
|
|
|
コンテナディレクティブの設定
<<Previous
|
Next>>
ユーザーディレクトリの設定
|
| このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。 |
| ”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。 |