Apacheの設定で押さえておくべき箇所

2.4系の話である。
いまだにApacheを利用する機会はなくならず、久々に利用したのでメモを残す。
以下、Directoryの設定に関するものである。

OptionsとAllowOverrideとRequireの設定は必ず理解しておく。

Options

Optionsはディレクトリに対する基本的な設定。
http://httpd.apache.org/docs/2.4/mod/core.html#options
デフォルトがALL。FollowSymLinks以外、利用する機会はほぼないと言える。
ExecCGI(今時CGIなど使わない)、
Includes(そもそもPHPなどでサイトを構築しているし、Server Side Includesを使う機会がない。)
Indexes(ファイル一覧を見せる必要はない)

AllowOverride

AllowOverrideは.htaccessに対する設定。
WordPressを利用する場合は関係してくる。
設定しなければデフォルトがALLで、これ以外を利用するケースはあまりないと思う。
つまりわざわざ書く必要はないが、以下のようにデフォルトで設定されていることから、
.htaccessを使用する場合は明示的に許可するように変更しなければならない。

<Directory />
    AllowOverride None
</Directory>
Require

Requireは認証に関する設定で、一部のユーザに対してのみ公開したいときに利用する。
AllowOverride同様に禁止されているので、設定を変更しなければアクセスができない。

<Directory />
    Require all denied
</Directory>

ローカル開発時など、特に制限する必要がなければ、Require all grantedでよい。


さて、以上を踏まえて以下に簡単な例を示す。
基本的にはVirtualHostを利用することが多いと思うが、以下のような記述を行うことになるだろう。

<VirtualHost *:80>
    DocumentRoot "/home/a/www/public"
    ServerName a.local
    ErrorLog "logs/a-error.log"
    CustomLog "logs/a-access.log" common
    <Directory "/home/a/www/public">
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>