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版ですが、インストールされます(はじめからされているのかも?)
インストール先
- /usr/share/tomcat5
起動コマンド
- /etc/rc.d/init.d/tomcat5
また、この方法でインストールした場合、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のグレードの 仮想サーバでもサーブレットを作動させることができました。 ただし、シンプルなサーブレットアプリケーションでないと厳しいものがあります。