この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
こんにちは。タジです。
今回はapacheに関するお話です。
以前、apacheを設定し、-t オプションでSyntaxをチェックした時、mod_rewriteやmod_accessがないですと怒られてしまいました。
ちなみに、mod_rewriteはapacheのrewiteを使うのに、mod_accessはOrder Allow,Denyなどでアクセス制御を使うのに必要なモジュールで、モジュールがない状態でこれらを使用する設定がhttpd.confに書かれていると、apacheが立上がらなくなってしまいます。
apacheでモジュールが足りない場合は、再コンパイル(configureからmake、make installを実施)でやることが多いですが、すでにシステムが動いているサーバやphpの複雑なモジュールが入っている場合など、後から再コンパイルするのは怖い場合があります。
そんな時には、apacheに付随しているapxsを使ってモジュールを読み込んでみましょう。
まず、どんな場合でも後からモジュールが追加できるわけではなく、apacheで使用可能なモジュールを確認した際、http_core.cとmod_so.cの二つが読み込まれている必要があります。
この二つはapacheをインストールする際にデフォルトで入るものですが、configureオプションで外すことも可能ですので、一応確認してみましょう。
/usr/local/apache2以下にapacheがある場合、
/usr/local/apache2/bin/apachectl -l
上のコマンドを叩いて、必要な二つが見つかればOKです。
ない場合は、apacheに後からモジュールを追加することを許可していないということですので、残念ながら再コンパイルするしかありません。
次に、読み込みたいモジュールのソースファイルが存在する必要があります。
apacheのソースを落としてきた場所で、追加したいモジュールのソースを探しましょう。
apache2系列では、/usr/local/srcにapacheのソースがある場合は
/usr/local/src/httpd-2.2.11/modules/mappers/
というディレクトリの下にあるはずです。
追加したいモジュールのソースが見つかったら、上記ディレクトリ内で以下のコマンドを使用します。
/usr/local/apache2/bin/apxs -c -i -a ./mod_rewrite.c
-cオプションはコンパイル、-iオプションはインストール、-aオプションはhttpd.confにLoadModuleディレクティブを追加する、という意味になります。
後はapacheを再起動すれば設定が読み込まれますので、再起動後に再度設定を行い、Syntaxチェックをした際にモジュールがないというエラーが出なければOKです。
今回はここまでです。
それではまた次回。