ホーム DoRuby apxsを使ってapacheのモジュールを追加してみよう。

apxsを使ってapacheのモジュールを追加してみよう。

この記事はアピリッツの技術ブログ「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です。

今回はここまでです。

それではまた次回。

記事を共有

最近人気な記事