[ホーム] -> [Aache + PHP + PostgreSQL 実験室]

Apache の基本的な設定

設定ファイル

Apache には、数々の細かな設定オプションが用意されています。それらを変更することにより、Apache の動作を変えて運用することが可能となっています。これらの設定の多くは、セキュリティにも影響してきますので、グローバルなネットワーク(インターネット)に公開しているサーバの場合、慎重に設定しなければなりません。Apache は、実行される際に、幾つかの設定ファイルを読みにいきます。Apache のインストールで説明した通りにした場合、Apache 1.3.x のルートディレクトリは /usr/local/apache になります。主要な設定ファイルは、その下の conf ディレクトリ内にある、httpd.conf です。

しばらく前までは、この httpd.conf 以外でも、srm.confaccess.conf の3つのファイルを使って設定していたのですが、Apache 1.3.4 あたりから、httpd.conf にまとめられたようです。一応、srm.confaccess.conf は用意されていますし、使うことも可能ですが、デフォルトの設定ではこの2つのファイルを見に行かないので、注意しましょう。ちなみに、httpd.conf に設定できる項目は、他の2つのファイルにも同じように設定することができますが、srm.conf にはリソースの設定、access.conf には、アクセス制御の設定を書いていました。現在は、設定を分散させずに、httpd.conf 一つに集約させるのが主流です(もちろん、管理の好みによりますが)。

全ての設定オプションについて説明するのはとうてい不可能ですので、ここでは、最低限知っていてほしい項目のみ説明をしてあります。実際、インターネットに直接接続して、一般公開する場合は、もっと慎重に設定しなければなりませんが、まずは動かしてみるのが先決ですので、一部の説明のみとさせて頂きます。

中身を見れば分かると思いますが、「#(シャープ)」以降はコメントとして扱われ、Apache からは無視されます。すでにある設定を消すのが不安な場合は、行頭に # を入れて、コメントアウトしておくといいかと思います。

サーバ設定

このセクションでは、Web サーバの基本的な動きを指定します。ほとんど変更する個所はありませんが、必ず全体に目を通してください。

Apache の基本設定
キー 説明
ServerType Apache の起動モードを指定します。マシンの起動時に、rc.httpd などで起動され、プロセスが常駐する場合(デーモンプロセスのこと)、standalone を指定します。また、この手のプログラムの起動方法として、inetd を使う方法があります。/etc/inetd.conf(あるいは、xinetd を利用していれば、/etc/xinetd.d ディレクトリ下) に、Apache プログラムを指定して、クライアントの要求がある度に、Apache を起動するようにした場合には、inetd を指定します。
Port Apache が提供する HTTP の TCP Port 番号を指定します。普通、HTTP の Port は 80 なので、80 を指定します。ですが、すでに 80 を他のプログラムが使っている場合や、権限が無く、80 番の Port を使えない場合などは、他の Port 番号を使用するように指定することも可能です。良く使われる番号は、8080 番です。
ServerAdmin サーバ側に問題が発生した場合、そのエラーレポートを送るメールアドレスを指定します。エラーメッセージ中に、ここに指定されたメールアドレスが表示されます。ちなみに、Apache に異常が起きた場合、このメールアドレスに自動的にメールが送られてくるわけではありません。

リソース設定

このセクションでは、ドキュメント(html ファイルや、イメージファイルなど)の、設定を行います。主に、URL に対する実際のファイルパスの設定が殆んどです。

Apache のリソース設定
キー 説明
DocumentRoot リソースの設定項目の中で、もっとも重要な部分です。ここに、このサイトのルートドキュメントのパスを設定します。ここに設定されたパスは、このサイトのルートパスとなります。つまり、http://www.dokoka.com/ と、アクセスしたときに、その対象となるパスです。
UserDir ユーザごとに、Web ページを公開したい場合に、各ユーザがドキュメント類を置いておくディレクトリを指定します。普通は、public_html で、ユーザのホームディレクトリの下に、public_html というディレクトリを作り、その下にドキュメントを入れて置きます。こうすることにより、例えば http://www.dokoka.com/~user_name//home/user_name/public_html/ にマッピングされます。
DirectoryIndex クライアントが、ディレクトリパスを指定した場合に、どのファイルをデフォルトで表示するかを設定しておきます。例えば、index.html と指定しておけば、http://www.dokoka.com/ にアクセスした場合は、DocumentRoot に設定したディレクトリ内の、index.html が表示されることになります(もし、index.html が存在すればですが)。ここには、複数のファイルを指定しておくこともできます。「DirectoryIndex index.html index.htm」と指定しておけば、まず index.html を探して、無ければ index.htm を探します。また、CGI ファイルなども指定できます。
Alias 1番目の引数の URL を、2番目の実パスへマッピングします。例えば、「Alias /icons/ /usr/local/etc/httpd/icons/」とすると、http://www.dokoka.com/icons/ というアクセスに対して、/usr/local/etc/httpd/icons/ を見ていることになります。

アクセス設定

このセクションは、セキュリティに関係のある設定項目が多数あります。CGI や SSI の実行許可の設定や、ここでは説明しませんがアクセス許可の設定などを行うことができます。

Apache のアクセス制御
キー オプション 説明
<Directory パス>
</Directory>
この Directory の後ろに指定したパスを対象に、<Directory パス> から </Directory>で囲まれた中に記述されているオプションを設定します。「Options 設定項目」と記述し、設定項目が複数ある場合は、「Options 設定項目1 設定項目2」と続けて記述できます。また、その設定項目を明示的に禁止したい場合は、「Options -設定項目」と、禁止したい項目の前にマイナス「-」記号を付けます。
Options Indexes クライアントが、ディレクトリ名を指定してアクセスした場合、まず、リソースの設定で説明した DirectoryIndex に指定されたファイルを探して、存在すればそれを表示しますが、そのファイルがない場合にディレクトリ内の一覧を表示するかを設定します。Options Indexes と指定すると、ディレクトリ内の一覧を表示しますが、Options -Indexes と指定すると、ディレクトリ内の一覧を表示しなくなります(クライアントにはエラーを返す)。特に理由がない場合は、ディレクトリ内の一覧は表示させないようにした方がいいと思います。
Options FollowSymLinks シンボリックリンクファイルを認識させるかを設定します。
Options ExecCGI CGI を実行できるかどうかを設定します。
Options Includes SSI を実行できるかどうかを設定します。
AccessFileName 後述する .htaccess のファイル名を指定します。デフォルトのままで特に変更する必要はないと思います。もし、このファイルを利用したくない場合は、コメントアウトしておきます。
AllowOverride これは、上位で設定した設定値を、下位の設定で変更できるように許可を与えます。例えば、<Directory /> 内に設定した値は、すべてのディレクトリに有効になります(/ がルートディレクトリ以下を指しているから)。それとは別に、<Directory /usr/local/apache/html> という設定があったとします。AllowOverride None の場合は、<Directory /> で設定された項目を、下位の設定である <Directory /usr/local/apache/html> で変更することはできません。逆に、AllowOverride All の場合は、下位の設定で変更することができます。
AllowOverride All すべての設定の変更を有効にします。
AllowOverride None すべての設定の変更を無効にします。
AllowOverride Options 上記の Options の設定の変更を有効にします。
AllowOverride Limit アクセス制御の設定の変更を有効にします。

.htaccess ファイル

アクセス設定のセクションでの説明が、ディレクトリを指定して、それに対して色々なオプションを指定するのに対し、このファイルは、これが置かれているディレクトリと、その下層のディレクトリに対して設定を行います。このファイル内には、アクセス設定のセクションで説明したほとんどのオプションを書くことができます。ただし、<Directory>などで、ディレクトリを指定することはできません。

このファイルで設定するメリットは、httpd.conf で設定するには管理者でなければいけないのに対し、このファイルはドキュメントを作っているユーザが設定できるという点です。つまり、個々人が自由に設定を細かく変更できるのです。逆にデメリットは、アクセスがある度に .htaccess を見に行くので、パフォーマンスに影響が出ます。非常にアクセス数が高いサーバの場合は、問題になる場合もあるでしょう。

ユーザごとに好き勝手に設定されては困る場合、httpd.conf で変更されたくない設定を行い、前述の AllowOverride で変更を許可する項目を指定してください。全面的にこのファイルを利用したくない場合は、AccessFileName の設定をコメントアウトしてください。

httpd.conf ファイルとの使い分けですが、サイトのグローバルな設定は httpd.conf ファイルで行い、ユーザ毎のディレクトリでは、.htaccess を使用するのが普通のようです(もっとも、ISP などでは、このファイルの使用を禁止している場所もあります)。

ちなみに、最近の Apache では、デフォルトの設定のままでは、.htaccess ファイルでの設定がほとんど無効にされています。というのも、サーバの設定ファイルで、次のように指定されているからです。

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

ディレクトリ「/」以下、つまり全てのディレクトリ対して、設定の上書きが禁止されているので、CGI の実行や、SSI の実行が出来なくなっています。これを避けるには、ここの AllowOverride の値を変えて対応する必要があります。たとえば次のようにすれば、.htaccess ファイルで、Options を指定することができるようになり、ユーザ毎に CGI や SSI を有効にすることができます。

<Directory />
  Options FollowSymLinks
  AllowOverride Options
</Directory>
ホームへ