その他
    ホーム 技術発信 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です。

    今回はここまでです。

    それではまた次回。