なぜApacheとTOMCATを連携させるのか|CentOS5 ApacheとTOMCATの連携
今回は、ApacheとTOMCATの連携を行います。
その前になぜそれが必要なのってのを自分の頭を整理するために書いておこうと思います。
Apacheは、クライアントのブラウザからアクセスし何らかのサービスを提供するためのWebサーバソフトウェアになります。
Tomcatは、"サーブレット・コンテナ"と言ってServlet等を動作させるために必要なWebアプリケーションサーバであり、Servletのインスタンス管理やセッション管理を行ってくれます。
またTomcatにはWebサーバ機能もあります。しかし、このWebサーバ機能は主に開発とデバッグ用に用意されたものらしいです。
開発とデバッグ用でもTomcatにもWebサーバ機能があるならば、Tomcatだけでいいのではないかと思いますが、JavaのアプリケーションであるTomcatのWebサーバ機能がApacheなどのWebサーバの性能と同等になるか疑問視されているようです。
そこで、HTMLや画像などの静的コンテンツはより高速なWebサーバが処理し、動的コンテンツのみTomcatに処理させることになります。
こういう理由で連携するんだね〜
参考サイト(②)にもっと詳しく書いてあるので、そっち見てみてね。
また、TomcatをApacheのアドオンと考えていいのかもしれないです。
Perl言語の勉強してたときも、ApacheでCGIを有効にしてとかやってた記憶があるので、入れればその機能が使えるようになると簡単に覚えてもいいかもしれないです。
では、ApacheとTomcatの連携にいきます。
Apacheのバージョンによって連携方法が違うようなので、まずバージョンを確認します。
Apache2.2系の場合は、"mod_proxy_ajp"のモジュールを利用します。
# httpd -v
Server version: Apache/2.2.3
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の再起動します。
以下のURLにアクセスすれば、以前"サーバー名:8080"を付けたときと同じページが見れます。
# /etc/init.d/httpd reload
この状態だと、以前までポートを指定してアクセス方法でページをみることができます。
http://サーバー名/tomcat/
http://サーバー名/tomcat/examples/servlets/
http://サーバー名/tomcat/examples/jsp/
http://サーバー名/examples/jsp/
http://サーバー名/examples/servlets/
別の方法も紹介しておきます。
"proxy_ajp.conf"ファイルに、Tomcat側へアクセスを飛ばす設定を記述します。
Tomcat側へは、AJPプロトコルで8009番ポートを使って接続を行います。
自分の環境だと、はじめから"httpd.conf"ファイル内に以下の行があり、"conf.d"フォルダ内のなんたらかんたら".conf"は、読み込むようになっていました。
# vi /etc/httpd/conf.d/proxy_ajp.conf
以下を追加
ProxyPass ajp://localhost:8009/
ProxyPass ajp://localhost:8009/examples/
#サンプル
ProxyPass ajp://localhost:8009/helloworld/
次に8080ポートからのアクセスを無効にします。
Include conf.d/*.conf
下記のファイルの接続ポート指定部分をコメントアウトします。
差分見てみます。
#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