httpd(apache-1.3.22-6)の設定
作成 : 2002/08/11
apache-1.3.22-6のインストール
パッケージapache-1.3.22-6-i386.rpmをインストールする。 apache-manual-1.3.22-6-i386.rpmと、apache-devel-1.3.22-6-i386.rpmもインストールする。
# rpm -Uvh apache-1.3.22-6-i386.rpm apache-manual-1.3.22-6-i386.rpm apache-devel-1.3.22-6-i386.rpm
/etc/httpd/conf/httpd.conf の設定
httpdの設定は、httpd.conf ファイルに記述する。 主な設定項目と解説は、次のとおり。
Port 80
Listen するポートを設定する。 デフォルトは 80番ポート。
User apache Group apache
httpdを起動するユーザとグループを設定する。 CGIスクリプトは、set uid されていない限り、このユーザとグループで起動される。 原則として、HTMLドキュメントとディレクトリのオーナシップは、このユーザ・グループにしない。
ServerAdmin info@polaris.as.wakwak.ne.jp
Webサーバ管理者のメールアドレスを設定する。
DocumentRoot "/var/www/html"
HTMLドキュメントルートを設定する。 http://polaris.as.wakwak.ne.jp/index.html に接続すると、実際は /var/www/html ディレクトリの index.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 ドキュメントルート)の設定をおこなっている。 Order でディレクトリに対するアクセス制限を設定する。 Order の詳細は、もっとhttpd.confの設定を見てね。
<IfModule mod_userdir.c>
UserDir public_html
</IfModule>
<IfModule xxxx> 〜 </IfModule> は、xxxxモジュールが組み込まれているならば、中身を実行する。
UserDir は、ユーザの html ディレクトリを指定する。 http://polaris.as.wakwak.ne.jp/~user/ で接続しようとすると、実際は ~user/public_html ディレクトリにアクセスすることになる。
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
ユーザの html ディレクトリに対する設定。 <Limit> 〜 </Limit> は、指定した http のメソッドにより制限をおこなう。 <LimitExcept> 〜 </LimitExcept> は、指定した http のメソッド以外について、制限をおこなう。
<IfModule mod_dir.c>
DirectoryIndex index.html index.htm index.shtml index.php index.php4 index.php3 index.phtml index.cgi
</IfModule>
DirectoryIndex は、ディレクトリを指定したアクセスのとき、ロードされるファイル名を指定する。 これに指定されたファイルがなく、Options で Indexes が指定されていると、そのディレクトリ内のファイル一覧が表示されてしまう。 Options に Indexes が指定されていないときは、Forbidden が返される。
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。
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
ScriptAlias で、スクリプトの実行を許可するディレクトリのエイリアスを設定している。 http://polaris.wakwak.ne.jp/cgi-bin/ に接続すると、実際は /var/www/cgi-bin ディレクトリにアクセスしている。 (ScriptAlias が設定されていないときは、/var/www/html/cgi-bin)
AddHandler cgi-script .cgi
ScriptAlias で設定されたディレクトリ以外でスクリプトを実行したいとき、設定する。 デフォルトではコメントアウトされているので、有効にするためには # をはずす。
ドキュメントのパーミッション
ディレクトリのパーミッション
ディレクトリのパーミッションは、701(rwx --- --x)、必要な場合は 704(rwx --- r-x)にする。 CGIスクリプトなどで、ディレクトリにファイルを作成する必要があるばあいは、707(rwx --- rwx)にするが、危険なので置くファイルに注意する。
ファイルのパーミッション
ファイルのパーミッションは、 604(rw- --- r--)にする。 CGIスクリプトは、 705(rwx --- r-x)にする。 書き込みが必要なファイルは、606(rw- --- rw-)。
ipchainsの設定
すべてのホストから80番ポートへの接続を許可するよう、ipchainsを設定する。 詳細は、ipchainsの設定を見てね。
-A input -s 0/0 -d 0/0 80 -p tcp -j ACCEPT
httpd を起動時開始サービスに追加
httpd サービスがサーバ起動時に開始されるように、ntsysvコマンドなどで設定する。
ルータの設定
80番ポート宛のパケットを、ローカルセグメントのWebサーバに転送するよう設定する。
httpd プロセスの起動
httpd プロセスを起動する。
# /etc/init.d/httpd start