Index > mod_ajpによるTomcatとApacheとの連携(ファーストサーバ プロビジネス20の場合)
Sat, April 26, 2008

mod_ajpによるTomcatとApacheとの連携(ファーストサーバ プロビジネス20の場合)

ファーストサーバというレンタルサーバ会社から プロビジネスシリーズ という仮想サーバのサービスが出ました。

いままでJavaServlet(Tomcat)などをレンタルサーバで使いたい場合、 最低でも月額1万円くらいは出さないといけない状況でしたが、 このプロシリーズの登場で、サーブレットのアプリケーションも 安価に使うことができるようになりそうです。

プロビジネス20を使って、ApacheとTomcatを連携させたのでその方法をまとめました。

自己責任で

プロビジネスにはPLESKが搭載されていて、PLESK上でTomcatも設定できることを 期待して契約したのですが、実際には使えませんでした。 サポートにも問い合わせたのですが{u:対応していない}との回答。

ただ、PLESKの販売元のページには、アドオンとしてTomcatのモジュールがあるので、 それを個別にインストールできないかと思い問い合わせてみたところ、 これもNGとの回答でした。

PLESKはファースサーバさんにライセンスされているものなので、 ファーストサーバさんがアドオンを購入してセットアップすることは可能だが、 レンタルサーバのユーザがこれを行うことは許可されていない、とのこと。 (やるのであれば、PLESKを自分で購入して、もとからインストールされている PLESKを削除した上で・・・という話でした。)

ということで、プロビジネスでは、 オフィシャルには、 Tomcatはサポートされていないため自己責任で対処してください。

Tomcat5のインストール

PallelsPowerPanel(またはPLESK?)を使ってTomcat5を入れておきます。 (yumで入れても一緒だと思います、たぶん)
※JavaVMもGCJ版ですが、インストールされます(はじめからされているのかも?)

インストール先

起動コマンド

また、この方法でインストールした場合、Tomcat5のwebappsは空なので テストするには不都合です。
そこで、Apache Tomcatのサイトより、 適当なバージョンのTomcat(バイナリ版)をダウンロードして展開、
webapps/ROOT にある {u:ROOT フォルダを demo というフォルダ名にリネーム}した上で、 プロビジネスのサーバの {u:/usr/share/tomcat5/webapps/demo} に配置しておきます。

作動確認

プロビジネスのサーバにsshで接続した上で以下を実行

$ su

# /etc/rc.d/init.d/tomcat5 start

この状態で、http://yourdomain:8080/demo/ にアクセスしてTomcatが正常作動することを 確認しておきます。

ApacheとTomcatの連携設定

過去からの経験で、ApacheとTomcatの連携は結構面倒という印象があるのですが、 プロビジネス20の環境下では驚くほど簡単に設定できました。

留意点

PLESKを使わないで直接設定ファイルを書き換えているので、 PLESKの作動がおかしくなったり、PLESK上でApache等に関わる設定変更をしたときに、 今回設定した内容が無効になるなどのリスクが考えられます。

Apacheの設定ファイルを変更

/etc/httpd/conf.d/proxy_ajp.conf に設定を追加するだけです。

先ほどのように webapps/demo にウェブアプリケーションを配置している場合は、 AJPの設定は、以下のようにします。

ProxyPass /demo/ ajp://localhost:8009/demo/

作動確認

以下の手順で作動確認します。 念のためApache,Tomcatを停止します。

$ su
# /etc/rc.d/init.d/httpd stop
# /etc/rc.d/init.d/tomcat5 stop

起動します。

# /etc/rc.d/init.d/httpd start
# /etc/rc.d/init.d/tomcat5 start

ここで、http://yourdomain/demo/ にアクセスしてページが正常に表示されるか確認します。

Tomcatの設定 8080ポートを閉じる

この状態では、 http://yourdomain:8080/demo/ としてTomcatへ直接アクセスすることができます。
しかしApache経由でアクセスできるようになったので、もはやポート8080で アクセスする必要はないので、これを閉じます。

閉じるには、 /usr/share/tomcat5/conf/server.xml ファイルを編集します。

<!--
<Connector port="8080" redirectPort="8443" minSpareThreads="25"
    connectionTimeout="20000" maxThreads="150"  maxSpareThreads="75" />
->

※8080ポートのコネクタをコメントアウトします。

以上で設定は完了です。

後日談 プロビジネス20で、tomcat5を使うのは、メモリ制限などでかなり厳しいです。 winstoneなどの軽量コンテナを使うことができれば、 そのほうがよいと思います。

winstoneであれば、プロビジネス5のグレードの 仮想サーバでもサーブレットを作動させることができました。 ただし、シンプルなサーブレットアプリケーションでないと厳しいものがあります。

 Twitter
follow me on Twitter
 Categories