WWWサーバー構築

【 httpd.conf・外部一般公開用設定 】

【 Apache2・httpd.conf外部公開用設定 】
httpd.confファイルを利用し、WWWサーバーであるApache2を様々に設定する事が可能です。
核となる設定は全てこのhttpd.confファイルで行います。
このファイルはインストール先である、" C:\Apache2\conf "にあります。
httpd.confファイルは、Windows標準の「メモ帳」で開いて編集する事が出来ます。
行の始めにある「# ハッシュマーク」は、コメントアウトされている行です。
Apache2が作動する場合は、httpd.confファイルの上の行から順に読み込んでいきますが、「#」が付いている行は読み込まず無視されますので、必要のない機能は「#」を付け、現在コメントアウトされていて必要だと思われる機能を使用する場合は「#」を削除します。
また、httpd.confファイルの編集をした場合、Apache2を再起動しないと編集が有効にならないので、編集が全て終了し保存したら必ずサーバーを再起動します。
再起動方法は、タスクトレイにあるApache2アイコンをクリックし、メニューの中から「Restart」をクリックします。
各プログラムのインストール先を変更している場合は、今後の作業は各項目読み替えて作業を進めてください。
ここから先の説明は、架空のsaru_monkeyと言うサブドメインを取得していることを前提に、WEBサイト公開ディレクトリは、
  • D:\www\public_html (http://saru_monkey.com にて接続できる)
  • D:\www\user\***(任意のフォルダ名)\public_html
    (http://saru_monkey.com/~***/ にて接続が出来る)
http://saru_monkey.com http://saru_monkey.com/~***/
D D
/www /www
/public_html(公開フォルダ) /user
/***
/public_html(公開フォルダ)
で、あることとし進めいていきます。
httpd.confファイルを編集・確認する場所の「行数」に沿って、その場所へ移動し編集・確認を行います。
■57行目
# Do NOT add a slash at the end of the directory path.
#
ServerRoot "C:/Apache2"
Apache2がインストールされたルートを確認します。
■78行目
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300
タイムアウトまでの時間を設定します。
接続要求があり、サイトコンテンツ提供までの連続してパケットを送信する時間の「最大値」を指定します。
数値は秒単位です。
デフォルトでは300秒ですが、このままで問題無く利用できます。
これ以上数値を大きくした場合、サーバーに負担が掛かるので変更する場合は自分の環境に合せ、変更します。
■84行目
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On
コネクションのキープ時間を設定します。
接続要求があり、サイトコンテンツ提供した後もコネクションを閉じず、次の要求に対してすぐに応答できるようにするための機能です。
このディレクティブが「On」になっているとパフォーマンス向上が見込めます。
■91行目
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100
各接続に対するキープの最大数を指定します。
「0」だと無制限ですが、サーバー負荷を考えるとデフォルトの100のままで良いと思います。
運用に問題が発生するようならば、値を変更します。
主にテキストサイトなどであれば、値を大きく変更されても問題ありません。
■97行目
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 15
タイムアウトまでの時間を設定。
同じ人物から接続要求が完了し、コネクションを切断しないまま次の要求を受けるまでの時間を指定します。
数値は秒単位です。
数値が小さくてもサーバーへの負荷が大きくなり、数値が大きすぎるとレスポンスが悪くなるので適度な値を指定しますが、デフォルトの「15」で問題ありません。
■120行目
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
#Listen 12.34.56.78:80
Listen 80
標準設定と、特定IPアドレスとポートをApacheで使用できるようにします。
ここでは変更せず、このまま使用します。
■170行目
LoadModule usertrack_module modules/mod_usertrack.so
Apache2が閲覧者に対してCookieを発行する場合は、行先頭の「#」を削除します。
■198行目
# ServerAdmin: Your address, where problems with the server should be
# e-mailed. This address appears on some server-generated pages, such
# as error documents. e.g. admin@your-domain.com
#
ServerAdmin ここにサーバー管理者である自分の実在メールアドレス
サーバーの責任者に連絡をとるためのメールアドレスを記載します。
連絡先を変更した時など、ここのメールアドレスも変更します。
サーバーに異常があり、外部からの連絡先として使用します。
■212行目
# If your host doesn't have a registered DNS name, enter its IP address here.
# You will have to access it by its address anyway, and this will make
# redirections work in a sensible way.
#
ServerName 127.0.0.1:80
Apache2をインストールする際に入力した、サブドメイン名がここに表示されているはずです。
もし、間違っているようでしたらここで正しく修正してください。
例 : saru_monkey.com:80
■221行目
# UseCanonicalName: Determines how Apache constructs self-referencing
# URLs and the SERVER_NAME and SERVER_PORT variables.
# When set "Off", Apache will use the Hostname and Port supplied
# by the client. When set "On", Apache will use the value of the
# ServerName directive.
#
UseCanonicalName Off
バーチャルホストなどを利用する場合、この機能をOnにします。
ここをOnにする事により、グローバルIPアドレスではなく、Apache2に設定されたドメインネーム別に公開目的のディレクトリへ参照させる機能がOnになります。
■228行目
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "D:/www/public_html"
ここを変更する事によって、WEBに公開するサイトのディレクトリを変更できます。
このサイトの「はじめにTOPページ」にも記載してありましたが、Cドライブ内には「OS、サーバー、Perl」などをインストールし、Dドライブ内で「WEB情報を発信する」と考えているので、ここでは、Dドライブ内に「www」フォルダを作成し、その中に「public_html」と言うフォルダを作成して、この場所からWEBを発信することにしました。
実際に公開される場所は、「public_html」フォルダ内になりWEB閲覧者はこれ以上、上のディレクトリにはアクセスが出来ない事になります。
■238行目
# First, we configure the "default" to be a very restrictive set of
# features.
#
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
サーバルートディレクトリに対する設定です。
デフォルトでは、シンボリックリンクのみ許可する設定になっています。
この設定は以下ディレクトリにも反映されます。
■290行目・・・ユーザーディレクトリを利用する場合はを削除します。
UserDir "D:/www/user/*/public_html"
#
# Control access to UserDir directories. The following is an example
# for a site where these directories are restricted to read-only.
#
# You must correct the path for the root to match your system's configured
# user directory location, e.g. "C:/WinNT/profiles/*/My Documents/My Website"
# or whichever, as appropriate.
#
<Directory "D:/www/user/*/public_html">
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
ユーザーディレクトリを利用すると、プロバイダーで提供しているURLアドレスのように~ (チルダ)を利用してユーザーを多数増やす事が出来ます。
取得したドメインが「saru_monkey.com」で、使用するユーザーが「mimi」の場合、URLは
" http://saru_monkey.com/~mimi/ "として利用できるようになります。
*(ワイルドカード)の場所にはmimiフォルダが有り、割り当てられている事になります。
ディレクトリに * (ワイルドカード)を割り当てる事によって、この場所にユーザーフォルダを追加して利用者を増やすことになります。
使用ユーザーの基本設定は全て同一に設定されます。
その他、*(ワイルドカード)の場所に他のフォルダ名 mama、papa、koko 等を追加していく事によってURLを
" http://saru_monkey.com/~mama/ "
" http://saru_monkey.com/~papa/ "
" http://saru_monkey.com/~koko/ "
等のように、サイトを公開する事が出来ます。
もちろん公開する場所は「public_html」フォルダの中になるので、各mama、papa、koko等のフォルダの中にはpublic_htmlを作成し、この中に公開サイトのHTMLファイルを入れて行きます。
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec の、「Indexes」を削除することにより、接続要求のあったディレクトリに、初めに標準として呼び出されるindex.htmlもしくは、index.htmが無かった場合、そのディレクトリのファイル名一覧インデックスとして表示されるのを防ぎます。
不必要な情報を、あまり閲覧者に見せることは私自身好ましく思っていないので、このようにしています。
また、
「Options MultiViews SymLinksIfOwnerMatch ExecCGI 」に変更することによって、ユーザーディレクトリ内の、どこでもCGIを利用させる事が出来ます。
セキュリティ上、CGIをどこでも使用できるのが好ましく思われない方は、こちらの537行目と、544行目の設定を行うことにより、特定の許可されたフォルダでのみCGIを作動させることが出来ます。
その場合ここは、「Options MultiViews SymLinksIfOwnerMatch IncludesNoExec」にしておきます。
CGIを必要としない場合は、特に「Options MultiViews SymLinksIfOwnerMatch IncludesNoExec」の行は、変更する必要はありません。
■321行目
# The index.html.var file (a type-map) is used to deliver content-
# negotiated documents. The MultiViews Option can be used for the
# same purpose, but it is much slower.
#
DirectoryIndex index.html index.html.var
DirectoryIndex index.htm index.htm.var
http://saru_monkey.com/***/ とURLを指定し、直接ディレクトリに接続要求が有った場合、まずディレクトリの中で何を初めに表示させるかの設定です。
デフォルトでは「index.html」ファイルが表示されるようになっています。
サイト作成ソフトなどによっては「htm」ファイルを標準として作成するソフトもあるので、念のため、次にこのファイル形式を表示させるように指定しておきます。
追加で記入したのは太文字になっています。
また、ここに行を追加したことによってこれから先の説明では、デフォルトの状態から行が増えて説明する事になりますので、この行を追加しなかった方は、1行減らして読み替えてください。
■329行目
# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives. See also the AllowOverride
# directive.
#
AccessFileName .htaccess
個別のディレクトリアクセス制御ファイル名を設定します。
公開ディレクトリの中で、特定のディレクトリだけを公開したり、アクセスできない(公開しない)ようにしたりすることができます。
指定したファイルに記述されている内容をアクセス権として設定します。
アクセス制御ファイルとして、一般的には「.htaccess」というファイル名が使われますが、ここを変更し任意のファイル名にする事も可能です。
■335行目
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
「.htaccess」ファイルはアクセス制限を行うディレクトリの中へ入れます。
しかし、URLを正確に入力されアクセスされるとApacheのバージョンによっては、中身を閲覧することが可能となってしまいます。
ここでは「.ht」で始まるファイル名には、アクセスできないように指定しています。
併せて「.dat」と「.log」をブラウザを通して閲覧禁止する場合、更に続けて
<Files ~ "\.(dat|log)">
Order allow,deny
Deny from all
</Files>
と記載する事により、CGIを利用しBBSなどを設ける場合、投稿者のIPアドレス情報などが記載されていると思われるデータファイルも閲覧出来ないようにできます。
■374行目
# HostnameLookups: Log the names of clients or just their IP addresses
# e.g., www.apache.org (on) or 204.62.129.132 (off).
# The default is off because it'd be overall better for the net if people
# had to knowingly turn this feature on, since enabling it means that
# each client request will result in AT LEAST one lookup request to the
# nameserver.
#
HostnameLookups Off
これを「On」にするとDNSの逆引きが可能になり、ログなどにはIPアドレスではなく「ホスト名」で記録されるようになります。
しかし、これを「On」にすると、アクセスが集中した時などサーバーに負荷が掛かりパフォーマンスが低下する事が予想されますので、デフォルトでは「Off」になっています。
自分の状況に合せて変更します。
■402行目
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here. If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog logs/error.log
接続要求に対して、応答できなかった物が記録されます。
ログの場所は、Apache2がインストールされているフォルダ内のlogs\error.logに記録されています。
ここの名前を変更して、任意のファイル名エラーログとして出力させる事が出来ます。
例:ErrorLog logs/damedyan.log
409行目
# LogLevel: Control the number of messages logged to the error.log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn
ログを出力させる際、どのような内容のログを出力させるか指定できます。
指定できる種類は下記の通りです。
自分の用途に合せて変更します、デフォルトではwarnになっています。
  • emerg・・・緊急メッセージを記録。
  • alert・・・警告メッセージを記録。修正しなければ動作できない問題等。
  • crit・・・致命的エラーメッセージの記録。上記に該当しない動作問題等。
  • error・・・エラーメッセージ記録。ファイルにアクセスできない等が原因。
  • warn・・・クライアントに送られた警告のみを記録。設定ミス等が原因。
  • notice・・・通知メッセージ記録。起動停止、設定が変更された時など。
  • info・・・情報メッセージ記録。プロセス起動、停止等を記録。
  • debug・・・デバッグに必要な情報を記録。

■415行目
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
CookieTracking On
CookieExpires "1 months"
LogFormat "%h %l \"%{cookie}n\" %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

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
ログを取得する際、どのような形式で取得するか指定できます。
  • combined・・・NCShttpd型ログ形式。
  • common・・・共通のログ形式。
  • referer・・・リファラー。どこのリンクを辿ってきたのかを記述。
  • agent・・・使用しているWebブラウザを記述。
デフォルトで出力されるログフォーマットを全て「#」を付けコメントアウトにし、新たに、自分の都合のよいフォーマットで出力が可能です。
初めはLogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 等でも良いかと思います。
自分に合ったログフォーマットをインターネットから検索で探してみてください。
ちなみに下記は私のログフォーマットです。
CookieTracking On と、
CookieExpires "1 months" と、
LogFormat "%h %l \"%{cookie}n\" %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
の、3行を追加します。
出力指定指示形式が長いため、折り返してしまい4行のように見えますが3行です。
この3行を追加することにより、Apache2が発行したCookieをログの中に含めることが出来ます。
含める場所は、任意で変更が可能です。
\"%{cookie}n\" を任意の場所に指定する事で場所を変更できます。
変更の際は、使用するログ解析ソフトなどでエラーにならないかどうか、確認する必要がありますので十分に注意し変更してください。
私が使用している物は、こちらのApacheLogViewerです。
■432行目
# The location and format of the access logfile (Common Logfile Format).
# If you do not define any access logfiles within a <VirtualHost>
# container, they will be logged here. Contrariwise, if you *do*
# define per-<VirtualHost> access logfiles, transactions will be
# logged therein and *not* in this file.
#
CustomLog logs/access.log common
SetEnvIf Request_URI "\.(gif|jpg|png|css)$" nolog
SetEnvIf Request_URI "^/_mem_bin/" warm nolog
SetEnvIf Request_URI "^/_vti_bin/" warm nolog
SetEnvIf Request_URI "^/c/" warm nolog
SetEnvIf Request_URI "^/d/" warm nolog
SetEnvIf Request_URI "^/e/" warm nolog
SetEnvIf Request_URI "^/msadc/" warm nolog
SetEnvIf Request_URI "^/MSADC/" warm nolog
SetEnvIf Request_URI "^/scripts/" warm nolog
SetEnvIf Request_URI "^/default.ida" warm nolog
CustomLog logs/access.log combined env=!nolog
CustomLog logs/warm.log combined env=warm
CustomLog "|\"c:/apache2/bin/rotatelogs.exe\" c:/apache2/logs/%Y%m%d_access.log 86400 540" combined
アクセスログ形式を指定します。
上記4種類(combined、common、referer、agent)の中から指定します。
デフォルトでは「common」フォーマット形式が指定されています。
より詳細なログを取得するためには、「combined」にします。
上記ではデフォルトの「CustomLog logs/access.log common」はコメントアウトしています。
ログ取得の際に記録される「GIF、JPG、PNG、CSS」等が必要ない場合には、自分でカスタマイズし、「記録するもの」「記録しないもの」「指定したものだけ記録させるもの」等と、することが出来ます。
上記太文字はカスタマイズした例です。
【 アクセスログへ記録させない場合・nolog 】
■1行目「SetEnvIf Request_URI "\.(gif|jpg|png|css)$" nolog」とすることにより、指定された拡張子を含むファイルがログには記録されないようにしています。
■2行目以降「warm nolog」とすることにより、warmのリクエスト形式を通常ログに含めないようにしています。
【 CustomLogとして任意のログを取得 】
■「CustomLog logs/access.log combined env=!nolog」は、combinedフォーマット形式でログを記録し、「nolog」で指定されているログを含めない「access.log」を取得させます。
■「CustomLog logs/warm.log combined env=warm」は、warmのリクエストが来た場合、「warm.log」として専用のログファイルを出力させます。
【 時間指定でログを自動的に切り出し 】
■「CustomLog "|\"c:/apache2/bin/rotatelogs.exe\"・・・・・」は、全てを記録しているログを「1日間隔」で自動的に切り出す指定をしています。
「86400」は秒単位指定で、任意で間隔を指定できます。
「540」はログを切り出す時間を日本時間に合わせるために9時間分を補正しています。
最後の行は長いため折り返していますが、1行です。
これらのように自分で必要なログを取得する物を指定し、自分に合った使用しやすいログを出力させてください。
ここからは、この13行を追加したことを前提に進めていきますので、追加行が違う方は行数を自分の環境に合わせてhttpd.confファイルを見ていってください。
■469行目
# ServerTokens
# This directive configures what you return as the Server HTTP response
# Header. The default is 'Full' which sends information about the OS-Type
# and compiled in modules.
# Set to one of: Full | OS | Minor | Minimal | Major | Prod
# where Full conveys the most information, and Prod the least.
#
ServerTokens Full
HTTPアクセスのレスポンスヘッダには、使用OSのバージョンや、Apache2のバージョン情報が含まれていて、これを表示する。
ここでは、不必要な情報を相手には知らせないため、コメントアウトしています。
■479行目
# Optionally add a line containing the server version and virtual host
# name to server-generated pages (internal error documents, FTP directory
# listings, mod_status and mod_info output etc., but not CGI generated
# documents or custom error documents).
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
# Set to one of: On | Off | EMail
#
ServerSignature On
接続要求があり、エラーメッセージを返す場合、Apache2サーバーのバージョン、サーバーホスト名の署名を表示させる設定です。
デフォルトでは「On」になっていますが、「Off」にした場合、署名行が追加されなくなります。
「On」にしておく場合、E-Mailを表示させる場合などは、mailto:ServerAdminのHTMLタグを追加します。
ここでは、不必要な情報を相手には知らせないため、コメントアウトしています。
■494行目
# We include the /icons/ alias for FancyIndexed directory listings. If you
# do not use FancyIndexing, you may comment this out.
#
#Alias /icons/ "C:/Apache2/icons/"
<Directory "C:/Apache2/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
接続要求があり、エラーメッセージを返す場合、Apache2が使用するアイコンです。
ここでの説明では、エラーページは表示させないようにしているため、このアイコンは必要ないものなので、コメントアウトしています。
■508行目
# This should be changed to the ServerRoot/manual/. The alias provides
# the manual, even if you choose to move your DocumentRoot. You may comment
# this out if you do not care for the documentation.
#
#AliasMatch ^/manual(?:/(?:de|en|fr|ja|ko|ru))?(/.*)?$ "C:/Apache2/manual$1"
<Directory "C:/Apache2/manual">
Options Indexes
AllowOverride None
Order allow,deny
Allow from all
<Files *.html>
SetHandler type-map
</Files>
SetEnvIf Request_URI ^/manual/de/ prefer-language=de
SetEnvIf Request_URI ^/manual/en/ prefer-language=en
SetEnvIf Request_URI ^/manual/fr/ prefer-language=fr
SetEnvIf Request_URI ^/manual/ja/ prefer-language=ja
SetEnvIf Request_URI ^/manual/ko/ prefer-language=ko
SetEnvIf Request_URI ^/manual/ru/ prefer-language=ru
RedirectMatch 301 ^/manual(?:/(de|en|fr|ja|ko|ru)){2,}(/.*)?$ /manual/$1$2
</Directory>
Apache2にはmanualがあり、このmanualは外部からでもアドレスを指定した場合読むことが出来ます。
manualには各言語のものが存在します。
ここでは、不必要な情報を相手には知らせないため、コメントアウトしています。
■537行目・・・CGIを必要としない場合ここはコメントアウトします。
ScriptAlias /cgi-bin/ "D:/www/public_html/cgi-bin/"
ScriptAlias /cgi-bin/ "D:/www/user/*/public_html/cgi-bin/"
cgi-binのフォルダにスクリプトを置く場合、ディレクトリの場所を指定する。
ここでは、ユーザーディレクトリのCGIも「cgi-bin」フォルダ以下で作動させるように、1行追加しておきます。
■544行目・・・CGIを必要としない場合ここは全てコメントアウトします。
# "C:/Apache2/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "D:/www/public_html/cgi-bin/">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
<Directory "D:/www/user/*/public_html/cgi-bin/">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
ディレクトリ内にある「cgi-bin」フォルダ内のみに、スクリプトを実行させるための設定項目です。
ルートドキュメントとユーザーディレクトリの「cgi-bin」フォルダ以下でのみ、CGIを許可する設定です。
ユーザーディレクトリ分の行を追加していますので、追加していない方はこれ以降、行数を読み替えて作業してください。
■572行目
IndexOptions FancyIndexing VersionSort
標準のディレクトリ内のインデックス表示をするのか、またはアイコンを使ったインデックスを表示するのかを選択する項目です。
ここでは、不必要な情報を相手には知らせないため、コメントアウトしています。
■579行目
# AddIcon* directives tell the server which icon to show for different
# files or filename extensions. These are only displayed for
# FancyIndexed directories.
#
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*



AddIcon /icons/blank.gif ^^BLANKICON^^
接続要求があり、閲覧者にエラーを返す場合に表示するインデックス一覧に使用するものなので、ここでは不必要な情報を相手には知らせないため、全てコメントアウトします。
■612行目
DefaultIcon /icons/unknown.gif
接続要求があり、閲覧者にエラーを返す場合に表示するインデックス一覧に使用するものなので、ここでは不必要な情報を相手には知らせないため、コメントアウトします。
■630行目
ReadmeName README.html
HeaderName HEADER.html
ReadmeNameは、標準で探すREADMEファイルの名前を指定します。
HeaderNameは、ディレクトリインデックスに付加されるファイル名を指定します。
私は使用しないので、コメントアウトしています。
■637行目
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
インデックス作成時に表示しないディレクトリのファイル名を指定します。
元々、不必要な情報を相手には知らせないため表示させていないので、これもコメントアウトします。
■711行目
LanguagePriority ja en ca cs da de el eo es et fr he hr it ko ltz nl ・・・・
言語の優先順位を「ja」を前に移動しておきます。
■730行目
AddDefaultCharset shift_jis
※Apache2.0.54から、この項目行は無くなっています。
Apache2は標準のままでは、文字化けを起こしてしまいます。 日本語環境に合わせた設定をします。

一般的には上記設定で問題は無いと思いますが、「shift_jis」と「euc-jp」がサーバーに混在してHTMLなどが存在する時には、「euc-jp」で作成されたHTMLが文字化けを起こします。
そのような場合はここを「Off」にします。
Off設定した場合は、直ぐ下の「AddCharset」行の1行目に「AddCharset shift_jis .sjis」、2行目に「AddCharset EUC-JP .euc-jp」を持ってきます。
AddCharset shift_jis .sjis
AddCharset EUC-JP.euc-jp

AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-8859-1.iso8859-1 .latin1
AddCharset ISO-8859-2.iso8859-2 .latin2 .cen
 ・
 ・
 ・
これで、サーバー内に混在をしたHTMLが存在した時にも文字化けを回避する事が出来ます。
■806行目
AddHandler cgi-script .cgi .pl
ファイル拡張子とマッピングさせるため、「#」を削除し「.pl」を加えます。
ここを追加しないと、CGIスクリプトが作動せず「ダウンロード」になってしまうので、必ずCGIを使用する場合には加えます。
■831行目
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
「#」を削除すると、「.shtml」という拡張子ファイルはSSIとして解析され実行されます。
SSIを使用する場合は、そのディレクトリのOptionsに「Includes」オプションを追加する必要があります。
■979行目・・・バーチャルホスト機能を使わない場合は、この設定は必要ありません。
# Use name-based virtual hosting.
#
inu_wanwan:80
バーチャル・ホストの設定を行う項目です。
221行目を「On」にします。
「saru_monkey.com」以外に「inu_wanwan.com」等のサブドメインがあり、同時に1台のPCで運営が出来ます。
バーチャルホストを利用すると、サイトの目的別にサブドメインネームを捕り、幾つものURLが違うサイトを運営することが可能になります。
バーチャルホスト機能を有効にする場合に「#」を削除します。
バーチャルホストには「IPベース」と「ネームベース」での登録方法がありますが、下記は「ネームベース」の方法になります。
この場合、グローバルIPアドレスは1つで構いません。
また、バーチャルホストを利用した場合、上記にて行った設定は利用できなくなりますので(基本設定はそのまま有効になります)、各ドメイン別に設定を行なう必要があります。
ここでは、「saru_monkey.com」と「inu_wanwan.com」をバーチャルホストとして登録する内容を掲載しています。

■987行目・・・ saru_monkey.com と inu_wanwan.com を割り当てる場合。
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /www/docs/dummy-host.example.com
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
「#」を削除します。
saru_monkey.com の公開ディレクトリが D:\www\public_html だった場合と
inu_wanwan.com の公開ディレクトリが D:\www\public_html2 だった場合の例です。
下記のように設定ます。
#■■■■ここからは、saru_monkey.comの設定■■■■
<VirtualHost *:80>
ServerAdmin ここにはサーバー管理者のメールアドレス
DocumentRoot D:/www/public_html
ServerName saru_monkey.com
LogFormat "%h %l \"%{cookie}n\" %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
SetEnvIf Request_URI "\.(gif|jpg|png|css)$" nolog
ErrorLog logs/saru_error.log
CustomLog logs/saru_access.log combined env=!nolog

<Directory "D:/www/public_html">
 AllowOverride None
 Options FollowSymLinks ExecCGI
 AllowOverride None
 Order allow,deny
 Allow from all
</Directory>
</VirtualHost>

#■■■■ここからは、inu_wanwan.comの設定■■■■
<VirtualHost *:80>
ServerAdmin ここにはサーバー管理者のメールアドレス
DocumentRoot D:/www/public_html2
ServerName inu_wanwan.com
LogFormat "%h %l \"%{cookie}n\" %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
SetEnvIf Request_URI "\.(gif|jpg|png|css)$" nolog
ErrorLog logs/inu_error.log
CustomLog logs/inu_access.log combined env=!nolog

<Directory "D:/www/public_html2">
 AllowOverride None
 Options FollowSymLinks ExecCGI
 AllowOverride None
 Order allow,deny
 Allow from all
</Directory>
</VirtualHost>
のようになります。
見て頂いて分かる通り、<VirtualHost *:80>から</VirtualHost>までの間、必要な項目を全て記入します。
同様に、<VirtualHost *:80>から</VirtualHost>までの項目を更に下に増やすことにより、バーチャルホストを幾つも増やすことが可能です。
その他、該当するバーチャルホストの<VirtualHost *:80>から</VirtualHost>までの間にログのカスタマイズユーザーディレクトリを追加する設定をしたりなどが出来るので、自分の用途に合わせ設定をしてください。
Apacheはhttpd.confを上から順に読み込んでいくため、ネームベースのバーチャルホスト機能を利用した場合、例えばグローバルIPアドレスなどで直接TOPディレクトリURLを指定された時などは、最初に書かれているバーチャルホストを読み込み、呼び出します。
そのような場合は、サーバー管理者が意図しないホストが呼び出される場合もあるかも知れません。
特に呼び出されても問題が無いと感じる場合にはそのままで良いと思いますが、問題と感じる場合には、最初に書くバーチャルホストなどはダミーなどを用意し、何も記載されていないHTMLを置いておくと良いかも知れません。
これでApache2のhttpd.confの基本的な設定は終了です。
後は、公開するドキュメントルートや、ユーザーディレクトリにHTMLファイルをどんどん入れていきます。
TOPより「OSセキュリティ設定」をクリックし、次へ進んでください。