Sunday, October 28, 2012

Apache と GlassFish の連携 - Part 2

前に Apache と GlassFish を mod_jk で連携させたい という記事 (Sep 30, 2012) を書きました. いま改めて復習してみますと, もう少し手順を簡略化することができるとわかりましたので, その補足を書きたいと思います.

GlassFish の設定

まず GlassFish の asadmin コンソールで, JK Connector のネットワークリスナーを作成します. 以下のコマンドを実行します.

asadmin> create-network-listener --protocol http-listener-1 --listenerport 8009 --jkenabled true jk-connector

これを実行して, 特にエラーもなく,

Command create-network-listener executed successfully.

と表示されれば OK でしょう. 念のため, ネットワークリスナーのリストを表示してみます.

asadmin> list-network-listeners
http-listener-1
http-listener-2
admin-listener
jk-connector
Command list-network-listeners executed successfully.
asadmin> 

いま作成したばかりの jk-connector という名前のネットワークリスナーも表示されています.

また, OS の netstat コマンドでも, すでに 8009/tcp が LISTEN になっていることを確認することができるはずです.

mod_jk の設定

Debian6 (Debian Squeeze) では, /etc/apache2 と, そのサブディレクトリに, Apache HTTP Server 関連の各種の設定を置くことになっています. ただ, デフォルトでは mod_jk に関する設定が何もなされていませんので, それをおこなう必要があります.

そこで, /etc/apache2/conf.d に何か適当な名前 (mod_jk.conf とか) のファイルを作成して, 以下のように書いてみます.

<IfModule mod_jk.c>
    JkWorkerProperty worker.list=worker1
    JkWorkerProperty worker.worker1.type=ajp13
    JkWorkerProperty worker.worker1.host=127.0.0.1
    JkWorkerProperty worker.worker1.port=8009
    JkMount / worker1
</IfModule>

前の記事では mod_jk.confworkers.properties とに書き分けていましたが, 実際にはこのように mod_jk.conf にまとめて書くことができるようです. これは気づきませんでした.

もうひとつ忘れてはならないのが, 前の記事でも書きましたが, JkMount の設定を各バーチャルホストに適用することです. デフォルトでは, /etc/apache2/apache2.conf の末尾に以下の記述がありますが,

# Include the virtual host configurations:
Include sites-enabled/

ここで指定されている /etc/apache2/sites-enabled には, 000-default という名前のシンボリックリンクがひとつあるだけです.

シンボリックリンクが指している /etc/apache2/sites-available/default というファイルの内容は次のようになっています. (ここではタブ 1 個をスペース 4 個に置き換えて引用します.)

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

そこで, もっとも手っ取り早い方法として, <VirtualHost *:80> のすぐ下に, JkMountCopy On という一行を書き加えます. たとえば, 次のようにです.

<VirtualHost *:80>
    JkMountCopy On

    :
    :

<VirtualHost>

あとは, Apache HTTP Server を再起動すれば, JkMount の適用も含めて mod_jk.conf に書いた設定内容が反映されることになるはずです.

まとめ

以上, 前回よりもいくらか簡略化した手順で, Apache と GlassFish を mod_jk で連携させることができました. おしまい.

No comments:

Post a Comment