Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


apache:2.4:httpd.conf

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
apache:2.4:httpd.conf [2019/10/09 22:22]
y2sunlight [Main server configuretion]
apache:2.4:httpd.conf [2020/11/20 09:35]
y2sunlight [概要]
行 1: 行 1:
-> **本編は投稿中です。しばらくお待ち下さい。** 
- 
----- 
- 
 ====== Apache2.4 httpd.confの編集 ====== ====== Apache2.4 httpd.confの編集 ======
 +Version 2.4.41
 +
  --- //[[http://www.y2sunlight.com|y2sunlight]] 2019-10-07//  --- //[[http://www.y2sunlight.com|y2sunlight]] 2019-10-07//
  
行 9: 行 7:
  
 関連記事 関連記事
-  * [[xampp:7.2|XAMPP7.2のインストール]] +  * [[apache:2.4:setting|Apache2.4 Windows版の基本設定]] 
-  * [[apache:2.4:setting|apache2.4 Windows版の基本設定]] +  * Apache2.4 httpd.confの編集 
-  * apache2.4 httpd.confの編集 + 
-  * [[apache:2.4:auth|apache2.4 基本認証とダイジェスト認証]]+Appendix 
 +  * [[apache:2.4:auth|Apache2.4 基本認証とダイジェスト認証]] 
 +  * [[apache:2.4:acd|Apache2.4 アクセス制御ディレクティブ]]
  
 ---- ----
  
-以下では、httpd.conf について説明しますが、その内容は本編の目的である「テスト用のローカルWebサーバの構築」です。従って、設定内容自体は公開用のWebサーバには当てはまりませんが、Apacheの設定方法に関してはある程度の参考になると思います。+===== 概要 ===== 
 + 
 +以下では、httpd.conf について説明します。XAMPPのhttpd.conf は以下に配置されています。 
 + 
 +<code> 
 +{XAMPP Install folder}\apache\conf\httpd.conf 
 +</code> 
 + 
 +本章の内容は本編の目的である「テスト用のローカルWebサーバの構築」です。従って、設定内容自体は公開用のWebサーバには当てはまりませんが、Apacheの設定方法に関してはある程度の参考になると思います。
  
-XAMPP7.2でインストールした直後の httpd.conf は全体(インクルードファイルも含めて)で 約 1,800行あります。そのうち、行頭に # (シャープ記号)の付いた行はコメント行です。実際には、# が行頭にない行が有効な設定になります。httpd.conf は、次の3つのセクションから構成されています。+XAMPP7.2でインストールした直後の httpd.conf はファイル全体(インクルードファイルも含めて) 約 1,800行あります。そのうち、行頭に # (シャープ記号)の付いた行はコメント行です。実際には、# が行頭にない行が有効な設定になります。httpd.conf は、次の3つのセクションから構成されています。
  
 |(Section 1)Global Enviroment | Webサーバ全体の動作環境に関する設定 | |(Section 1)Global Enviroment | Webサーバ全体の動作環境に関する設定 |
行 26: 行 34:
 このセクション分けは便宜的なもので、設定上の特別な意味は持ちません。上で使われている「メインサーバ」と言う用語は、バーチャルホスティングによって扱われる仮想サーバに対して本来のWebサーバの事を指す言葉として使われています。仮想サーバの設置は Supplemental configuretion で行われています。 このセクション分けは便宜的なもので、設定上の特別な意味は持ちません。上で使われている「メインサーバ」と言う用語は、バーチャルホスティングによって扱われる仮想サーバに対して本来のWebサーバの事を指す言葉として使われています。仮想サーバの設置は Supplemental configuretion で行われています。
  
-以下では、本編の目的である「テスト用のローカルWebサーバの構築」を行うための設定内容を、httpd.conf で出現するディレクティブの順に挙げます。尚、ここでは、インストール後に変更したもの及び説明のために特に重要と思われる主要な設定内容のみを挙げています。+以下では、主要な設定内容のみを、httpd.conf で出現するディレクティブの順に挙げます。 
 + 
 +\\
  
 ===== Global Enviroment ===== ===== Global Enviroment =====
行 71: 行 81:
  
 LoadModule ディレクティブはモジュールを追加してサーバの機能を拡張します。初期にロードされているモジュールの一覧は前章の「[[apache:2.4:setting#インストール時にロードされているモジュール|apache2.4 Windows版の基本設定]]」を参照して下さい。 LoadModule ディレクティブはモジュールを追加してサーバの機能を拡張します。初期にロードされているモジュールの一覧は前章の「[[apache:2.4:setting#インストール時にロードされているモジュール|apache2.4 Windows版の基本設定]]」を参照して下さい。
 +
 +\\
  
 ===== Main server configuretion ===== ===== Main server configuretion =====
行 95: 行 107:
  
 == デフォルトのアクセス制御 == == デフォルトのアクセス制御 ==
-<code> +<code xml httpd.conf
-<Directory />+<Directory>
     AllowOverride none     AllowOverride none
     Require all denied     Require all denied
行 115: 行 127:
 </code> </code>
  
-DocumentRootディレクティブには、ドキュメントルートを設定します。Apacheは指定されたURLパスがAlias またはScriptAlias ディレクティブにマッチしない場合には、ここで設定した物理パスに、リクエストされたURLパスを付加して物理パスを生成します。**DocumentRoot には最後のスラッシュを指定してはなりません。+DocumentRootディレクティブには、ドキュメントルートを設定します。Apacheは指定されたURLパスがAlias またはScriptAlias ディレクティブにマッチしない場合には、ここで設定した物理パスに、リクエストされたURLパスを付加して物理パスを生成します。__DocumentRoot には最後のスラッシュを指定してはなりません。__
  
 == ドキュメントルートのアクセス制御 == == ドキュメントルートのアクセス制御 ==
-FIXME 
  
-<code>+<code xml httpd.conf>
 <Directory "D:/usr/xampp7.2.22/htdocs"> <Directory "D:/usr/xampp7.2.22/htdocs">
     Options Indexes FollowSymLinks Includes ExecCGI     Options Indexes FollowSymLinks Includes ExecCGI
行 128: 行 139:
 </code> </code>
  
-== TODO == +ドキュメントルート下のアクセス制御を以下のように設定してます。 
-<code>+ 
 +| Options Indexes | ディレクトリ中のファイルリストをクライアントに返す | 
 +| Options FollowSymLinks | ディレクトリ中のシンボリックリンクを有効 | 
 +| Options Includes | SSI を有効にします | 
 +| Options ExecCGI| CGI スクリプトの実行を許可 | 
 +| AllowOverride none | アクセス制御ファイル(.htaccess)によるアクセス制御を全て許可 | 
 +| Require all denied | すべてのアクセスを許可 | 
 + 
 +== インデックスファイル == 
 +<code xml httpd.conf>
 <IfModule dir_module> <IfModule dir_module>
     DirectoryIndex index.php index.pl index.cgi index.asp index.shtml index.html index.htm \     DirectoryIndex index.php index.pl index.cgi index.asp index.shtml index.html index.htm \
行 137: 行 157:
 </code> </code>
  
-== TODO == +IfModule ディレクティブでは、モジュールがロードされているか否かによって含まれる設定をガードします。即ち、dir_module がロードされていない場合はDirectoryIndex ディレクティブは実行されません。 
-<code>+ 
 +DirectoryIndex ディレクティブでは、クライアントが「/」 で終わるURLパスを要求(ディレクトリインデックス要求)した 場合に探すファイル名を設定します。複数のファイル名をスペースで区切って指定する事ができます。複数指定されている場合は、前に記述したものが優先されます。ここで指定したファイルが見つからず、Option Indexes が設定されている場合、Apacheはディレクトリリストを生成します。XAMPPでインストールしたApacheには上のようにWebプログラムでよく見かける多くの拡張子が追加されています。 
 + 
 +== 特別なファイルの保護 == 
 +<code xml httpd.conf>
 <Files ".ht*"> <Files ".ht*">
     Require all denied     Require all denied
行 144: 行 168:
 </code> </code>
  
-==== ファイォール ====+アクセス制御ファイルの名前は、既定では.htaccessです( AccessFileNameディレクティブによって変更できます )。このようにApacheでは **.ht** で始まるァイを特別視する習慣があります。従って、このような特別なファイルを保護するために、<Files>ブロックを作り全てのホストからのアクセスを拒否します。
  
- 最近ではパソナルファイアフォールの入っているパソコンは珍しくありません。上の設定のようにLAN内の特定のホストからWebサーバへのアクセスを許可するにはApacheの設定だけでは上手くいきません。この場合、Webサーバで使用しているポートに対するアクセス許可をパーソナルファイアフォールで行う必要があります +== エラログ ==
- +
-ユーザディレクトリ+
 <code> <code>
-UserDir "D:/Apatch Users/*" +ErrorLog logs/error.log 
-UserDir disabled +LogLevel warn
-UserDir enabled user1 user2 +
- +
-<Directory "D:/Apatch Users/*"> +
-    Options All +
-    AllowOverride All +
- +
-    Order Allow,Deny +
-    Allow from localhost +
-    Allow from 192.168.1.0/24 +
-</Directory>+
 </code> </code>
  
- UserDirザディレクトリ既定の場所(C:/Documents and Settings/user )からにD:/Apatch Users/user に変更し特定ユーザ(sunlightとtestuser)にのユーザディレクトリの使用許可します。初期設定では、+ErrorLogエラログファイル名を、LogLevelでエラーログレベル(重要度)を指定します。
  
 +== アクセスログ ==
 <code> <code>
-UserDir "My Documents/My Website"+LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 
 +LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio 
 +LogFormat "%h %l %u %t \"%r\" %>s %b" common 
 +CustomLog "logs/access.logcombined
 </code> </code>
  
-になっています。この場合のユーザディレクトリ"C:/Documents and Settings/user/My Documents/My Website"になります。UserDirでユーザディレクトリを設定してもクライアントからはアできません。なぜなら、本編では、デフォルトのアクセス制御(<Directory />)で全てのアクセス拒否ているからです。従ってユーザディレクトリに対してもアクセスを許可する必要はあります。ここでは、ドキュメントルートと同じ設をユーザディレクトリに対ても行っています。(テスト用ローカルサーバなのでユーザディレクトリを使用る機会はほとんどないと思いますが)+CustomLog ディレクティブはクライアントのHTTPリストのログ収集指定します。上の設定では、CustomLog で combined を指定していで、実際に有効なのは以下の部分です
  
-インデックスファイル 
 <code> <code>
-DirectoryIndex index.html index.html.var index.cgi index.php +# ログ形式を指定し、形式に名前(combined)を付けます 
-</code>+LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
  
- DirectoryIndex ディレクティブでは、クライアントが「/」 で終わるURLパスを要求(ディレクトリインデックス要求)した 場合に探すファイル名を設定します。複数のファイル名をスペースで区切って指定する事ができます。複数指定されている場合は、前に記述したもが優先されます。ここ指定したファイルが見つからず、Option Indexes が設定されている場合、Apacheはディレクトリリストを生成します。ここでは初期の設定にindex.cgiとindex.php追加しした。 +指定のログ形式(combined)ログファイル(logs/access.log)作ります 
- +CustomLog "logs/access.logcombined
-尚、index.html.varは、Apacheがコンテントネゴシエーションを提供するための.varファイルです。コンテントネゴシエーションとは、ブラウザにより提供されたメディアタイプ、 言語、文字セットなどのネゴシエーション情報に基づいて、最適なリソースをWebサーバが選択ための機能で +
- +
-特別なファイルの保護 +
-<code> +
-AccessFileName .htaccess +
-<Files ~ "^\.ht"+
-    Order allow,deny +
-    Deny from all +
-</Files>+
 </code> </code>
  
- AccessFileNameディレクティブは、アクセス制御ファイル名前を設定します。このファイル名は既定では.htaccessです。このようにApacheでは.htで始まるファイルを特別視するのが習慣のようす。このような特別なファイルを保護するためには<Files ~>ブロックを作り全てのホストからのアクセスを拒否します。<Files ~>ブロック内の "^\.ht" は正規表現で、「.htで始まるファイル」の意味です。正規表現ついはPerl に関する文献など参照して下さい。 +combined以外形式(common/combinedio)もてあるので、必要応じ形式を変更しま
-この設定はインストール時のもので変更していせん+
  
-エラーログ +\\
-<code> +
-ErrorLog logs/error.log +
-LogLevel warn +
-</code>+
  
- ErrorLogでエラーログファイル名を、LogLevelでエラーログのレベル(重要度)を指定します。Perlなどのテストではエラーログファイルを見る機会も多いと思います。この設定はインストール時のもので変更していません。+===== Supplemental configuretion =====
  
 +このセクションでは、Include ディレクティブを使って、機能毎の設定ファイル(*.conf)を conf/extra ディレクトリー内からインクルードし、サーバーに機能を追加したり、デフォルト設定を変更したりしています。
  
-アクセ +例えば、以下はバーチャルホティンに関するインクルードの例です。
-<code> +
-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+
  
-CustomLog logs/access.log common 
-</code> 
- 
- CustomLog ディレクティブはクライアントのHTTPリクエストのログ収集を指定します。この設定はインストール時のもので変更していません。\\ 
-この設定で、実際に有効なのは以下の部分です。 
- 
-| LogFormat "%h %l %u %t \"%r\" %>s %b" common | ログ形式を指定し、形式に名前(common)を付けます | 
-| CustomLog logs/access.log common | 指定のログ形式(common)でログファイルを作ります | 
- 
-common以外の形式(combined/referer/agent)も定義してあります。公開用のWebサーバなどでは、目的と必要に応じてログファイルを追加します。 
- 
-CGIディレクトリ 
 <code> <code>
-ScriptAlias /cgi-bin/ "C:/usr/Apache2/cgi-bin/"           +Virtual hosts 
- +Include conf/extra/httpd-vhosts.conf
-# <Directory "C:/usr/Apache2/cgi-bin"> +
-#     AllowOverride None +
-#     Options None +
-#     Order allow,deny +
-#     Allow from all +
-# </Directory>+
 </code> </code>
  
- AddHandlerディレクティブはファイル名の拡張子を特定のハンドラにマッピングます。この設定は、拡張子(cgiとpl)をCGI スリプとして扱うために、ハンドラcgi-script にマッピングします。またCGIとして実行するためにはOptions ExecCGI を使用してCGIプログラの実行を許可しなければまりません。本編のドキュメントディレクトリの設定は Options All なので、Options ExecCGI も含んでいます。 +XAMPP7.2でンストールしたApacheでは、conf/extra ディレクトリー内に、バーチャルホスティング、ユーザホームディレクトリ、プロキシ、SSL及びWebDAVなど14種類機能についての追加設定ファイルが存在しています。
- +
-==== ハンドラ ==== +
- +
- ハンドラとは、ファイルにマッピングされた「実行される動作」を表します。ハンドラはモジュールに組み込んだり、Action ディレクティブとて追加したりすることができます。以下に標準で組み込まれている主なハンドラを挙げます。 +
- +
-^  ハンドラ名  ^  実行される動作  ^  典型的な拡張子 +
-| send-as-isHTTP | ヘッダのあるファイルをそのまま送ります | .asis | +
-| cgi-script | CGI スクリプト | .cgi | +
-| imap-file | イメージマップのルールファイル | .map | +
-| type-map | コンテントネゴシエーションのタイプマップ | .var | +
  
 +\\
apache/2.4/httpd.conf.txt · 最終更新: 2020/11/20 09:35 by y2sunlight