2. x86 Intel Solaris 10 へのWebObjectsアダプタのインストール

■CGIアダプタ(cgi-bin/WebObjects) 対 HTTPアダプタ(mod_WebObjects.so)

CGIアダプタ(cgi-bin/WebObjects)を通してWebObjectsアプリケーションにアクセスする方法と、Apacheのモ ジュールとしてmod_webobjects.soを使う方法を選ぶ。(ここでは、わかりやすい表現としてHTTPアダプタとは言わず、モジュールと言っ てます)

  • CGIアダプタ(cgi-bin/WebObjects) > 確実に動く
  • モジュール(mod_webObjects.so) > 動作が速い

■どちらにせよコンパイルして作る

 コンパイルすればどちらも作れるのだが、ちょっとばかり仕込みをしておく必要がある。「コンパイラはgcc」「作るものはCGIアダプタだけ」「メイクはgmake」など。その設定をこれから行う。

■Adaptorの部屋へ移動する

コンパイル作業を行うため、アダプタ制作のための部屋へ入って作業をしなくてはいけない。各自のWebObjectsインストール場所に置き換えて読み進めていただきたい。

# cd /opt/WebObjects5.2.4/Developer/Examples/WebObjects/Source/Adaptors
# ls -F
APPLE_LICENSE     IIS/              build/            woadaptor.dtd
Adaptor/          Makefile          example.xml       woadaptor.xml
Apache/           Makefile.ORG      make.config
CGI/              NSAPI/            make.config.ORG

これからさわるmake.config、Makefileは、 バックアップをとっておく。

こ の部屋にいるmake.config、こいつがコンパイル するときの元締めとなっている。Apacheディレクトリには、Apacheモジュール(mod_webobjects.so)を作るための道具がそろっ ている。CGIアダプタを作るための道具は、CGIディレクトリの中にそろっているのだ。

■make.configを修正する

 何を作るか?APXSはどこにあるか?CCは何を使うか? を教えてあげる。

make.config 32行目付近 

ifeq "SOLARIS" "$(OS)"
ADAPTORS = CGI Apache (NSAPIを削除して、CGIアダプタとApacheモジュールだけを作ると指定)
# Default path for apxs on Solaris 8.
APXS = /usr/local/apache/bin/apxs (自分で用意したApacheのbinのapxsを使うぞ、と)
CC = gcc (gccを/usr/sfw/bin/gccのように絶対指定するのもよし)
endif

 Apacheモジュールを作ることに失敗するときは、CGIアダプタのみを作ればOK。

■Makefileを修正する

makeをgmakeに変更する。

clean:
        touch ${COMMON_TARGETS}
        for adaptor in $(ADAPTORS) Adaptor ; do \
                echo Cleaning $adaptor ; \
                ( cd ${adaptor} ; gmake clean ) ; \ (gmakeを指定する)
        done

OS_NOT_DEFINED:
        @echo OS \"${OS}\" unknown. Check the Makefile.
        exit 1

${COMMON_TARGETS}: Adaptor
        cd Adaptor ; gmake (gmakeを指定する)

CGI::
        cd CGI ; gmake (gmakeを指定する)

Apache::
        cd Apache ; gmake (gmakeを指定する)

■gmakeする

 # gmake

こんな感じでメッセージが出力される。

■出来上がったブツは、ここ

現在地が、 /opt/WebObjects5.2.4/Developer/Examples/WebObjects/Source/Adaptors/だとして、

CGI/WebObjects CGIアダプタ

Apache/mod_WebObjects.so Apacheモジュール

Apache/apache.conf  Apacheモジュールの説明書

■CGIアダプタを使う場合の下準備 

WebObjectsアダプタをcgi-binに配置する。 

# cp CGI/WebObjects /path/to/cgi-bin/

WebObjectsアダプタの動作を設定するXMLファイルを配置する。

# cp example.xml /user/local/apache/conf/WebObjects.xml
# cp woadaptor.xml /usr/local/apacheconf/WebObjectsHelp.xml

 woadaptor.xmlは、設定方法を調べたいときにすぐに見られるので、WebObjects.xmlのそばに置いておくと便利。

 

■CGIアダプタを使う場合の設定

WebObjects.xml の場所をapacheに教えてあげる。 apacheのhttpd.confを編集する。(WebObjects.xmlがWebObjectsアプリを指定するリモコンの役割をする)

# vi /usr/local/apache/conf/httpd.conf 
(次の一行を一番おしりに追加) 
SetEnv WO_CONFIG_URL file:///usr/local/apache/conf/WebObjects.xml

■設定の確認

# /usr/local/apache/bin/httpd configtest

エラーが出なければOKなはずだが、SetEnvのパスが間違っていていもエラーが出ないので、もう一度、確認すること。

■apacheの再起動

# /usr/local/apache/bin/apachectl restart

■設定の確認

http://192.168.0.123/cgi-bin/WebObjects/ というようにアクセスしたときに

Invalid application name

と表示されればCGIアダプタは正常に動作している。

 

 

 


ここから下は、CGIアダプタではなく、mod_WebObjects.soを使いたいときに設定する。実運用でスピードに問題なければ、CGIアダプタの設定の方が楽。

 

 

 

■mod_WebObjects.soを使う場合の下準備

現在地が、 /opt/WebObjects5.2.4/Developer/Examples/WebObjects/Source/Adaptors/だとして、

 WebObjects.xmlを配置する。

# cp example.xml /user/local/apache/conf/WebObjects.xml
# cp woadaptor.xml /usr/local/apache.conf/WebObjectsHelp.xml (設定方法を調べたいときにすぐに見られるので、置いておくと便利) 

■httpd.confに一行追加する

 /usr/local/apache/conf/httpd.conf に一行追加する。

Include /opt/WebObjects5.2.4/Developer/Examples/WebObjects/Source/Adaptors/Apache/apache.conf 

 WebObjectsインストール時に上記のように追加されている場合は、修正する。パスがSolaris SPARK版のアダプタを指しているので、今回ビルドしたものを指すようにするため。

 

■apache.confを修正する

上記で指定したapache.confを修正する。

LoadModule WebObjects_module /opt/WebObjects5.2.4/Developer/Examples/WebObjects/Source/Adaptors/Apache/mod_WebObjects.so
AddModule mod_WebObjects.c (下記参照)
WebObjectsDocumentRoot /usr/local/apache/htdocs
WebObjectsAlias /cgi-bin/WebObjects
# WebObjectsConfig http://localhost:1085 10 (コメントアウトする)
# WebObjectsConfig webobjects://239.128.14.2:1085 10 (コメントアウト)
# WebObjectsConfig file://<path-to-a-xml-config-file> 10 (コメントアウト)
WebObjectsConfig file:///usr/local/apache/conf/WebObjects.xml 10 (追加する)

 

■設定の確認

# /usr/local/apache/bin/httpd configtest
[Tue Mar  7 14:06:58 2006] [warn] module mod_WebObjects.c is already added, skipping

上記のようにmod_WebObjects.cは、すでに追加されているというメッセージが出たら、コメントアウトしておく。

# AddModule mod_WebObjects.c

■apacheの再起動

# /usr/local/apache/bin/apachectl restart

■設定の確認

http://192.168.0.123/cgi-bin/WebObjects/ というようにアクセスしたときに

Invalid application name

と表示されればHTTPアダプタは正常に動作している。