Apache同梱ソフトウェアに引数を渡してビルド仕事で使える魔法のLAMP(18)

今回は、Apacheが同梱しているけど、うまくインストールできないパッケージをインストールする方法を解説します(編集部)

» 2011年08月12日 00時00分 公開
[山口晴広株式会社イメージズ・アンド・ワーズ]

アカウント情報の一元管理に必要なLDAP

 第14回から、Apache HTTP Server(以下Apache)をビルドする方法を解説してきました。ここ何回かは、ビルド時に「すべてのモジュール」を指定してもビルドされないモジュールのうち、比較的利用頻度が高いと思われるモジュールを取り上げ、トラブル解決方法を解説してきました。残るモジュールはldapです。これは、LDAPというネットワークプロトコルを利用するときに必要になるものです。

 LDAPについて簡単に説明しておきます。LDAPはLightweight Directory Access Protocolの略で、ディレクトリサービスへのアクセスに使うプロトコルです。ディレクトリサービスはデータベースの一種で、ユーザーのアカウントやネットワーク機器などの情報を一元管理し、検索できるようにするシステムです。

 LDAPにはいろいろな使い方がありますが、Linux/UNIXでは主にユーザーアカウント情報の一元管理に使います。LDAPを使うことで、各サーバのログインアカウントやSambaのファイル共有のアカウントを、1カ所で管理できるようになります。多くのユーザーのIDとパスワードを1カ所にまとめることができるため、社内システムなどで広く使われています。

 実装としては商用のもの含め何種類かありますが、LinuxではオープンソースのOpenLDAPを使うことが多いと思います。OpenLDAPはLDAPサーバとクライアント用のライブラリが含まれており、今回Apacheで利用するのはクライアントライブラリです。なお、ApacheではOpenLDAPだけでなく、商用のLDAPソフトウェアを利用することもできます。

 Apacheのldapモジュールと言うと、実際にはldapauthnz-ldapの2つを指します。前者はLDAPサーバへの接続を管理するモジュールで、後者はLDAP認証のためのものです。つまり、authnz-ldapモジュールにはldapモジュールが必要ということになります。

 2つのモジュールに分かれているのは、今後LDAPを認証以外の用途で使うようなモジュールが開発されたときでも、接続部分を共通で使えるようにするためです。ちなみに、dbdモジュールとauthn-dbdもまったく同じ理由で分かれています。authn-dbdはデータベースで認証をするモジュールですが、dbdモジュールでデータベースへの接続を管理するようになっています。

ヘルプに従って実行してもエラーになる

 それでは実際にビルドにとりかかります。OpenLDAPのライブラリを利用しますので、次のようにopenldap-develパッケージをインストールしましょう。

$ sudo yum install openldap-devel

 configureスクリプトのヘルプから、ldapに関する引数を抜き出すと次のようになります。

$ ./configure --help | grep ldap
  --enable-authnz-ldap    LDAP based authentication
  --enable-ldap           LDAP caching and connection pooling services

 ldapとauthnz-ldapモジュールを有効する引数です。これを追加すると、configureのコマンドラインは次のようになります。

./configure \
  --prefix=/opt/apache-httpd-2.2.19 \
  --enable-mods-shared=all \
  --enable-authnz-ldap \
  --enable-ldap \
  --with-mpm=prefork \
  2>&1 | tee configure_log.txt

 これでビルドをしてみてください。大量にエラーが発生してmakeが失敗したはずです。configureのヘルプに従ったのに、これはどういう事でしょうか。

モジュールの引数

 こういうときは別のドキュメントを当たるべきです。Web上のドキュメントの、ldapモジュールのページの冒頭に、次のような一節があります。

 To enable this module, LDAP support must be compiled into apr-util. This is achieved by adding the --with-ldap flag to the configure script when building Apache.

 apr-utilをLDAPサポートを有効にしてビルドしなければならず、それには「--with-ldap」引数を使うとあります。しかし先ほどldapに関する引数をヘルプから抜き出したところ、そういった引数はありませんでした。結論を言うと、この引数はApacheのconfigureのものではなく、apr-utilのものなのです。

 apr、apr-utilについては第14回で少し触れましたが、Apacheのビルドに欠かせないライブラリで、Apacheに同梱された状態で配布されています。これらのライブラリはApache Portable RuntimeApache Portable Runtime Utilityの略で、OS間の差異を吸収するためのものです。もともとApacheの一部であったものが今は分離独立したプロジェクトとなっており、Apache以外からも利用されています。

 独立したソフトウェアですので、それぞれがconfigureスクリプトを持っていて、そのままApacheに同梱されています。しかし今までのビルド手順の通りにビルドしても、aprやapr-utilのconfigureは実行しているようには見えません。これはApacheのconfigureの内部で、aprなどのconfigureも自動的に実行しているためです。configureの出力をよく見ると、そのような表示になっているのが分かります(図1)。

checking for chosen layout... Apache
checking for working mkdir -p... yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
 
Configuring Apache Portable Runtime library ...
 
checking for APR... reconfig
configuring package in srclib/apr now
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
Configuring APR library
Platform: x86_64-unknown-linux-gnu
checking for working mkdir -p... yes
APR Version: 1.4.5
checking for chosen layout... apr
checking for gcc... gcc
(略)
図1 Apacheのconfigureの冒頭部分。途中でaprのconfigureが実行されている

 この同梱ライブラリのconfigureに引数を指定する方法としては、あらかじめそれぞれのソフトウェアを手作業でconfigure、ビルド、インストールしておくという方法が真っ先に思いつきますが、Apacheのconfigure経由で指定することもできます。

 Apacheのconfigureは、引数をそのままaprやapr-utilなどの同梱ソフトウェアに渡すようになっています。「--with-ldap」はApacheのconfigureの引数ではないので無視され、動作に影響を及ぼすことはありません。aprについても同様です。最終的にapr-utilのconfigureに「--with-ldap」が渡されると、LDAPサポートが有効に設定されるのです。

 従って、ldapモジュールをビルドするには、次のようなコマンドラインを実行すればよいということになります。この内容であれば無事ビルド、インストールが完了します。

./configure \
  --prefix=/opt/apache-httpd-2.2.19 \
  --enable-mods-shared=all \
  --enable-authnz-ldap \
  --enable-ldap \
  --with-mpm=prefork \
  --with-ldap \
  2>&1 | tee configure_log.txt

 このように、本来のconfigureの引数ではなく、同梱ソフトウェアの引数を指定しなければならないケースもあります。この場合はヘルプ表示には出てこないので、ドキュメントや同梱ソフトウェアもよく確認しましょう。

 同梱ソフトウェアは別途インストールする手間が省けるため、便利ではありますが、他のソフトウェアと組み合わせたときにバージョンが一致しないという問題も起こしやすく、要注意です。この問題についてはいずれ解説します。

 次回は、ldapと同様に、apr-utilで設定できる内容について解説します。

著者紹介

株式会社イメージズ・アンド・ワーズ
代表取締役
山口晴広(やまぐち はるひろ)



「仕事で使える魔法のLAMP」バックナンバー

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。