httpd(apache-1.3.22-6)の設定

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

作成 : 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

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