Apacheの設定で誤解していたことのまとめ

いつも色々な見落としがあってその度に詰まるので,引っかかりやすい点を述べておきます.かなり初歩的なことが多いので,見飽きた人はそっ閉じしてください.

バージョンは重要である

Apache にもいくつかバージョンがありますが,CentOS 7 で新しくインストールするとバージョン 2.4 が入ります.

しかし,インターネット上には当然古い記事も多く,バージョン 2.2 に対応した設定の仕方が書かれているものがたくさんあります.

当然動かないので時間の無駄です.バージョンは大切.

設定ファイルは分離できる

Apache のメインの設定は /etc/httpd/conf/httpd.conf に書かれています.

その最終行を見ると,/etc/httpd/conf.d/*.conf を設定ファイルとして認識するようにと記述があります.これのおかげで様々な名前で設定ファイルを作れるようになっているのですね.

AllowOverride とか Require all granted とか

よく見る設定です.これがないと 403 Forbidden などで接続できなかったりします.

httpd.conf の設定では,ドキュメントルート /var/www/html 下に置かれたファイルに関しては AllowOverride None, Require all granted になっています.そのため,AllowOverride All は必要ですが Require all granted は不要です.

一方,違うディレクトリに置いている場合は,その限りではありません./var/www 下では Require all denied になっています.

バージョン 2.2 では全く違う記法なので,その点でも注意が必要です.

モジュールを使う

mod_wsgi や mod_rewrite を使う場面が来るかも知れません.前者は Python を高速で実行したいとき,後者は URL の書き換えをしたいときなどに使うようです.

ここで必要になるのはモジュールのインストールですが,まず起動するためにはこんな感じで設定ファイルも書き換える必要があります.

LoadModule rewrite_module modules/mod_rewrite.so

元のファイルには書かれていないことが多いので,書き忘れると言うことを聞かずにイライラします.

Python などは CGI でも動かせる

モジュールを入れなくても,var/www/cgi-bin 下に入れたファイルは設定ファイルさえ書き換えておけば,Python などで実行できるようになっています.

それだと鈍い可能性があるので mod_wsgi などを入れてもいいのですが.

パーミッション

Apache 自体の話ではないですが,関連としてちょっとめんどくさいパーミッション.

使っているフレームワークなどによっては,パーミッションが正しく設定されていても,設定が間違っているというエラーしか返さなかったりすることがあるので,紛らわしいです.

ルートでディレクトリやファイルを生成した後,WordPress から操作しようとしたときに断られるなどのトラブルに見舞われることもあります.

所有者グループ,所有者,ファイルに与えるパーミッションの設定は重要です.所有者は chown, パーミッションは chmod で正しく設定します.

最後に

これっぽっちを理解しているか否かだけでも,くそ時間かかるか素早く済むか.