2010/08/16

apacheのコツ

apacheのコツをいくつか。

configはどこにある?

まず、プロセスを見ましょう。すると、httpdなプロセスがいくつかいるはず。
このバイナリに"-V"オプションをつけて実行してみましょう。
ファイルシステムのパーミッションに阻まれない限り、non-rootユーザでも実行できます。
すると、こんな感じの情報が出てきます。

# httpd -V
Server version: Apache/2.2.3
Server built: Apr 4 2010 17:19:54
Server's Module Magic Number: 20051115:3
Server loaded: APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture: 32-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="run/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"

で、何を見るべきかというと、-Dオプションに続く「HTTPD_ROOT」と「SERVER_CONFIG」を見るのです。このふたつをくっつけたところを見に行ってみると、httpd.confがいるはずです。


ここから先はソースで入れるような人には向かないかもしれませんが、RPM版apacheについていくつか。

httpd.confは初期設定を除いてできるだけいじらない

httpd.confはグローバルな設定(スコープがGlobalなconfig)に止めて、それ意外はできる限り書かないようにしましょう。
VirtualHostの設定なんて書くべきじゃありません。入れておくべきはこのぐらいでしょうか。
  • グローバルパラメータの設定
  • MPMの設定
  • モジュールの読み込み設定
  • 各種インクルード

じゃあ、それ以外はどこに書くの?


Includeを活用しましょう

それは、役割ごとにIncludeするんです。
RPM版apacheのデフォルトでは、こんな記述があります。

Include conf.d/*.conf

サーバ上のパスだと/etc/httpd/conf.d/になります。

ここにいくつかファイルがあるはずですが、不要なものは名前を変えてincludeされないようにしましょう。mod_perlを使わないのであれば、perl.confをperl.conf.offとかに変えるだけ。拡張子が".conf"のものしか読まれないので、これで充分です。

バーチャルホストについてはいろいろやり方がありますが、自分のやりかたを参考までに書いておきます。
  • conf以下にvhostsというディレクトリを掘る
  • vhostsの中に、バーチャルホストのコモンネーム.confでファイルを作成し、該当するバーチャルホストの設定を書く
  • conf.dの下にvhosts.confというファイルを作成する
  • このvhosts.confに、必要なNameVirtualHostを列記し、その下に、Includeでバーチャルホストファイルを読み込んでいく。
こうすることで、httpd.confに余計な改変を加えず、好きな順番でバーチャルホストを読み込ませることができます。
何でバーチャルの順番に気を遣うか。IPアクセスされた際に、最初に設定されたバーチャルホストが反応してしまうので、どのバーチャルホストを先頭に持ってくるかが重要なのです。


まとまりのない文章ですいません。