httpd(httpd-2.0.40-8)の設定
作成 : 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コマンドなどで設定する。