httpd(httpd-2.0.40-8)の設定

[サーバの実験室 Redhat/Fedora]

作成 : 2002/10/24

"サーバの実験室"の検索


httpd-2.0.40-8のインストール

Redhat8.0へアップグレードしたとき、httpd-2.0.40とhttpd-manual-2.0.40-8、httpd-devel-2.0.40-8にアップデートされる。

旧バージョン新バージョン
/etc/httpd/conf/httpd.conf/etc/httpd/conf/httpd.conf.rpmnew

httpdは、旧バージョン(apache-1.3.x)のhttpd.confで起動しようとするが、次のようなエラーになり起動できない。

httpd: Apache 1.3 config directives test failed

/etc/httpd/conf/httpd.conf の設定

設定項目の詳細は httpd の設定(httpd.conf) を見てね。

Port 80

Listen するポートを設定する。 デフォルトは 80番ポート。

User apache
Group apache

httpdを起動するユーザとグループを設定する。 CGIスクリプトは、set uid されていない限り、このユーザとグループで起動される。 原則として、HTMLドキュメントとディレクトリのオーナシップは、このユーザ・グループにしない。

ServerAdmin info@nina.jp

Webサーバ管理者のメールアドレスを設定する。

DocumentRoot "/var/www/html"

HTMLドキュメントルートを設定する。

<Directory />
    Options None
    AllowOverride None
</Directory>

<Directory> 〜 </Directory> で、指定したディレクトリに対するオプションやアクセス制限、.htaccessを有効にするかどうかを設定する。 Options でディレクトリのオプション、AllowOverride で .htaccess による設定の上書きを許可するかを設定する。 Options と AllowOverride の詳細は、もっとhttpd.confの設定を見てね。

<Directory "/var/www/html">
    Options IncludesNOExec ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

ここでは、/var/www/html ディレクトリ(HTML ドキュメントルート)の設定をおこなっている。 このディレクトリより下のディレクトリでの、Execを除くSSI実行とCGI実行を許可している。

<LocationMatch "^/$">
    Options -Indexes
    ErrorDocument 403 /error/noindex.html
</LocationMatch>

apache-1.3.22パッケージには、記述がなかった。 HTMLドキュメントルート(うちだとhttp://www.nina.jp/)にアクセスしたときの振る舞いを記述。 OptionsからIndexesを無効にしている。 DirectoryIndexで指定されたファイルをロードできない場合は、noindex.html(apacheのTestページ)をロードする。

<IfModule mod_userdir.c>
    UserDir disable
</IfModule>

UserDir は、ユーザの html ディレクトリを指定する。 apache-2.0.40パッケージでは、デフォルトでdisable。

DirectoryIndex index.html index.html.var

DirectoryIndex は、ディレクトリを指定したアクセスのとき、ロードされるファイル名を指定する。 apache-2.0.40パッケージでは、デフォルトで設定されている種類が少ない! これに指定されたファイルがなく、Options で Indexes が指定されていると、そのディレクトリ内のファイル一覧が表示されてしまう。 デフォルト設定では、Options に Indexes が指定されてるので注意!

AccessFileName .htaccess

AccessFileName で、ディレクトリごとのオプションとアクセス制限に使用するファイル名を設定する。 デフォルトは、.htaccess。

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>

<Files xxxx> 〜 </Files> で、xxxxファイルに対するアクセス制限を設定することができる。 ファイル名の前に ~ をつけると、正規表現を使ったファイル指定ができる。 "^\.ht" は、.ht ではじまるファイル名がすべてマッチする。

.htxxxx ファイルに対する http アクセスを拒否している。

ErrorLog logs/error_log

エラーログを書き出すファイルを指定する。 デフォルトでは、/etc/httpd/logs/error_log。

CustomLog logs/access_log combined

アクセスログを書き出すファイルを指定する。 デフォルトでは、/etc/httpd/logs/access_log。

AddDefaultCharset EUC-JP

apache-1.3.22パッケージには、記述がなかった。 すべてのページの文字セットを指定する。 パッケージのデフォルト値はISO-8859-1。 apacheのデフォルト値はoff。

AddHandler cgi-script .cgi

ScriptAlias で設定されたディレクトリ以外でスクリプトを実行したいとき、設定する。 デフォルトではコメントアウトされているので、有効にするため # をはずす。

重要! 日本語文字セットの指定

httpd.confのAddDefaultCharsetで、使用する文字セットを指定する。 HTMLだけでなく、CGIなどのページにも適用される。 デフォルトはISO-8859-1(ラテン・アルファベット No.1)になっているので、日本語WEBサイトでは必ず変更すること! EUCならEUC-JP、SJISならshift_jis、JISならISO-2022-JPを指定する。

AddDefaultCharset EUC-JP

前回(もっとhttpd.confの設定)では、「AddType "text/html; charset=euc-jp" html」のように日本語文字セットを指定していた。 AddDefautlCharsetとAddTypeでの違いは?(適用される範囲が違うだけってことはあるまい)

httpdの再起動

httpdを再起動する。

# /etc/init.d/httpd restart

httpd を起動時開始サービスに追加

httpd.confにエラーがあり起動できなかったため、起動時開始サービスからはずされている。 httpdサービスがサーバ起動時に開始されるように、ntsysvコマンドなどで設定する。


[サーバの実験室 Redhat/Fedora]