なぜApacheとTOMCATを連携させるのか|CentOS5 ApacheとTOMCATの連携

今回は、ApacheTOMCATの連携を行います。
その前になぜそれが必要なのってのを自分の頭を整理するために書いておこうと思います。
Apacheは、クライアントのブラウザからアクセスし何らかのサービスを提供するためのWebサーバソフトウェアになります。
Tomcatは、"サーブレット・コンテナ"と言ってServlet等を動作させるために必要なWebアプリケーションサーバであり、Servletインスタンス管理やセッション管理を行ってくれます。
またTomcatにはWebサーバ機能もあります。しかし、このWebサーバ機能は主に開発とデバッグ用に用意されたものらしいです。
開発とデバッグ用でもTomcatにもWebサーバ機能があるならば、Tomcatだけでいいのではないかと思いますが、JavaのアプリケーションであるTomcatのWebサーバ機能がApacheなどのWebサーバの性能と同等になるか疑問視されているようです。
そこで、HTMLや画像などの静的コンテンツはより高速なWebサーバが処理し、動的コンテンツのみTomcatに処理させることになります。
こういう理由で連携するんだね〜
参考サイト(②)にもっと詳しく書いてあるので、そっち見てみてね。
また、TomcatApacheのアドオンと考えていいのかもしれないです。
Perl言語の勉強してたときも、ApacheCGIを有効にしてとかやってた記憶があるので、入れればその機能が使えるようになると簡単に覚えてもいいかもしれないです。
では、ApacheTomcatの連携にいきます。


Apacheのバージョンによって連携方法が違うようなので、まずバージョンを確認します。


# httpd -v
Server version: Apache/2.2.3
Apache2.2系の場合は、"mod_proxy_ajp"のモジュールを利用します。
Apache2.0以前の場合は、"mod_jk"モジュールを利用します。(参考サイト④)
TomcatにはデフォルトでWebサーバと相互にやり取りを行うAJPコネクタが搭載されています。また、最Apache 2.2系にはAJPプロトコル通信を可能にするmod_proxy_ajpモジュールがあり、これにより相互通信が可能にします。
ということで今回は、"mod_proxy_ajp"のモジュールを利用し連携します。
"proxy_ajp.conf"ファイルを編集します。

# vi /etc/httpd/conf.d/proxy_ajp.conf
以下の2行のコメントを外す
ProxyPass /tomcat/ ajp://localhost:8009/
ProxyPass /examples/ ajp://localhost:8009/examples/
差分をとるとこんな感じ。

# diff proxy_ajp.conf proxy_ajp.conf.org
17,18c17,18< ProxyPass /tomcat/ ajp://localhost:8009/< ProxyPass /examples/ ajp://localhost:8009/examples/

    • -

> #ProxyPass /tomcat/ ajp://localhost:8009/
> #ProxyPass /examples/ ajp://localhost:8009/examples/

最後に、Apacheの再起動します。

# /etc/init.d/httpd reload
以下のURLにアクセスすれば、以前"サーバー名:8080"を付けたときと同じページが見れます。

http://サーバー名/tomcat/
http://サーバー名/tomcat/examples/servlets/
http://サーバー名/tomcat/examples/jsp/
http://サーバー名/examples/jsp/
http://サーバー名/examples/servlets/
この状態だと、以前までポートを指定してアクセス方法でページをみることができます。


別の方法も紹介しておきます。
"proxy_ajp.conf"ファイルに、Tomcat側へアクセスを飛ばす設定を記述します。
Tomcat側へは、AJPプロトコルで8009番ポートを使って接続を行います。

# vi /etc/httpd/conf.d/proxy_ajp.conf
以下を追加

ProxyPass ajp://localhost:8009/


ProxyPass ajp://localhost:8009/examples/

#サンプル

ProxyPass ajp://localhost:8009/helloworld/

自分の環境だと、はじめから"httpd.conf"ファイル内に以下の行があり、"conf.d"フォルダ内のなんたらかんたら".conf"は、読み込むようになっていました。

Include conf.d/*.conf
次に8080ポートからのアクセスを無効にします。
下記のファイルの接続ポート指定部分をコメントアウトします。

#vi /usr/local/tomcat/conf/server.xml

差分見てみます。

# diff server.xml server.xml.org
70d69

<

コメントアウトを追加した部分が差分で出ます。
最後にTomcatを再起動します。

# /etc/init.d/tomcat restart
これで完了です。
あとブラウザからURL叩いて、8080ポートを指定し接続した際に接続できませんとなれば大丈夫です。


8月下旬から9月上旬まで忙しくサボっててしもうた・・・
てかうつっぽくなってたし・・・
頃ごろ息吹き返してきたなんとか今生きてる状態!
業務時間は1つのプロジェクト集中して、業務後に別プロジェクト・・・
それも二つ・・・
毎日会社22〜23時に出る生活送ってたけどそれもなんとか抜けた!
週末3連休だからそこで一気に挽回するぞ〜
今回タイトルは、ちょっとしたサイトを参考にしてみました。
それでちょっと書き方変えてます!(参考サイト⑥)


次はEclipseのインストールをします。
参考記事
Javaアプリケーションサーバー構築(Tomcat6) - CentOSで自宅サーバー構築
Tomcatって何ですか? | Think IT(シンクイット)
Tomcatと外部のプログラムを連携させよう! | Think IT(シンクイット)
http://centossrv.com/tomcat5.shtml
Apache側の設定 - Tomcatとの連携(mod_proxy_ajp) - Apache入門
本当は教えたくないSEO!アクセス数が20倍になったブログタイトル32文字の法則 - Chrome Life