yamadamn’s blog

IT関連技術で経験したこと・気になったことをたまに書きます

WebLogic用にApacheを構成しようとして少々はまる

Solaris10上で、WebLogic9.2用にApache2.2を構成させようとしたときの話。

まず、Apacheを普通にコンパイル

$ PATH=/usr/local/bin:/usr/bin:/usr/ccs/bin; export PATH
$ LD_LIBRARY_PATH=/usr/local/lib:/usr/lib; export LD_LIBRARY_PATH
$ 
$ cd /usr/local/src
$ gzip -dc httpd-2.2.11.tar.gz |tar xvf -
$ cd httpd-2.2.11
$ 
$ ./configure --prefix=/usr/local/apache2
$ make
$ make install

で、バージョンの確認。

$ cd /usr/local/apache2
$ ./apachectl -V
ld.so.1: httpd: 重大なエラー: /usr/local/lib/libgcc_s.so.1: ELF クラスが正しくありません: ELFCLASS32
強制終了

ということで、libgccの64bit対応版を指すよう設定。

$ LD_LIBRARY_PATH=/usr/sfw/lib/sparcv9:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH
$ ./apachectl -V
Server version: Apache/2.2.11 (Unix)
Server built:   Jul 30 2009 09:44:58
Server's Module Magic Number: 20051115:21
Server loaded:  APR 1.3.3, APR-Util 1.3.4
Compiled using: APR 1.3.3, APR-Util 1.3.4
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
(以下略)

これで、Apacheが64bitになっている。

httpd.confのServerNameを書き換えてから設定を確認。

$ ./apachectl -t
Syntax OK

次にhttpd.confに以下を追記。

LoadModule weblogic_module modules/mod_wl_22.so

WebLogicプラグインをモジュールディレクトリにコピーしてから、設定を再確認。

$ cp -p /opt/bea/weblogic92/server/plugin/solaris/sparc/mod_wl_22.so /usr/local/apache2/modules/
$ ./apachectl -t
httpd: Syntax error on line 411 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_wl_22.so into server: ld.so.1: httpd: fatal: /usr/local/apache2/modules/mod_wl_22.so: wrong ELF class: ELFCLASS32

プラグインモジュールを確認してみる。

$ file modules/mod_wl_22.so
modules/mod_wl_22.so:        ELF 32-bit MSB dynamic lib SPARC Version 1, dynamically linked, not stripped

32bit版じゃ動くはずないよね。ということで64bit版のプラグインを探してみるも見つからず。
Solaris用のプラグインは32bit版しか(今のところ)ないことに、この時点で気づく。(泣)

というわけで、結局Apacheを32bitで再コンパイルことに。

$ gcc -v
(省略)
gcc version 3.4.4

このバージョンはデフォルト64bitでコンパイルするみたいなので、明示的に32bitを指定。

$ rm -fr /usr/local/apache2 /usr/local/src/httpd-2.2.11
$ cd /usr/local/src
$ gzip -dc httpd-2.2.11.tar.gz |tar xvf -
$ cd httpd-2.2.11
$ 
$ CC="gcc -m32" ./configure --prefix=/usr/local/apache2
$ make
$ make install

WebLogicプラグイン設定などをやり直して、ようやく動作。

結論

SolarisWebLogic用に構成するApacheは素直に32bitでコンパイルしましょう。

(追記)
というか、サポート対象の構成を最初に確認すべき。Solaris用のプラグインは、32bitのみ対象とちゃんと書かれてますね。。
Supported Web Servers, Browsers, and Firewalls