読者です 読者をやめる 読者になる 読者になる

Gobble up pudding

プログラミングの記事がメインのブログです。

MENU

Apache HTTP ServerとApache Tomcatの連携する意味

スポンサードリンク

f:id:fa11enprince:20141019143919j:plain
Apache TomcatをつかっているとなぜだかApache HTTP Serverと併用しますよね。
恥ずかしながら、僕はここをなんとなく理解したようなしていないようなまま過ごしていました。
おかしいなと少し思いながら。
だってTomcatはWebサーバの機能を持っているから
Apache HTTP Server使わなくてもページにアクセスできるよね。って。
もちろんApache HTTP Serverを入れると、
URLの後ろに:8080ってつけなくて済む*1よねとか、
静的ファイルはApache HTTP Serverのほうが若干速いとか聞いてて
いままでふーんな感じでしたが、
今日はなぜか気になって調べてみました。

そもそもTomcatってなによって話ですが、
端的にいいますとJavaのServletとJSPを処理してくれる偉い人です。
Catalinaたんが大好きだそうです。
いや、Coyoteさんもいるんだよ。
おまけな感じでWebサーバの機能も持ち合わせています。
Catalinaがサーブレットコンテナで
CoyoteがHttp Serverです。
CatalinaはなんでCatalinaなのって気になる人はココに書いてます。An Introduction To Tomcat Catalina | MuleSoft
カタリナ島に行ったことないけど好きだったんだってさ。開発者が。
そしてAvalonって名前をCatalinaの前身のフレームワークにつけてたんだってさ。
ちなみにAvalonはCatalina島の中にある町なんだってさ~。
「何故だ!何故裏切ったモルドレッド!!!」

Apache HTTP Serverって何よって話ですが、Webサーバです。
PHPなんかはこいつとくっついて動いてくれます。
んじゃWebサーバって何よって話ですが、プログラマ寄りに凄く大雑把にいうと、
GETとかPOSTとかのHTTPリクエストを受け付けてくれるサーバです。

うーん、Tomcatで充分じゃ?と思い調べてみる。

だいたいこのあたりがその通り
【Tomcat 】【Apache】Tomcat と Apache を連携させる ( ソフトウェア ) - プログラム の個人的なメモ - Yahoo!ブログ
Tomcat と Apache の連携
Tomcatのウェブサーバが、Apache httpdよりも高速に動作するという事実 at ミネルヴァの梟は黄昏とともに飛び始める(山下 大介 公式ブログ)

まとめると、
1.静的なページ (js,css,jpg 等) に関して Apache の方が早い
2.セキュリティがApacheのほうが高い(本当?)
3.設定の柔軟性・拡張性がApacheのほうが高い。

1についてはTomcatのほうが早いよ!という話もあります。
2についてはよくわかりません。
3についてはまぁその通りなんじゃないでしょうか…。
さらに、Apacheを使うと、例えば、1台HTTP Serverだけのサーバをたてて
それにつながっているTomcatが搭載されたサーバを複数台立てる
というようなスケーリングができる
っていう話もあって、これは納得がいきました。

僕の携わったモノはそんなに規模が大きいわけでないので
ApacheもTomcatも同じサーバに載ってましたが…。

Why use Apache Web Server in front of Glassfish or Tomcat? - Stack Overflow
そうそう、と書いてたら良い回答がstackoverflowに載ってました。
というかここのは公式の転載だった……。
公式の回答はコレ
Why should I integrate Apache with Tomcat? (or not)
http://wiki.apache.org/tomcat/FAQ/Connectors#Q3
だいたい僕が妄想したのとそんなに違ってないみたい。

そんなわけでサーブレットのプログラムをお試しで書いて
Eclipse上のTomcatで動かそうとしたら、
以前DドライブからCドライブにeclipseのフォルダごとごっそり移動させたせいで
ビルドパス(TOMCAT_HOME(なんでCATALINA_HOMEじゃないの???))と
TomcatのありかがEclipse上で設定されていてエラー続出で
なおさないといけない羽目になってしまいました。
めんどくさい。
Eclipse関連の設定って環境変数も含めてあっちこっちに分散してるから
もうどこで直すのか調べるの面倒なんですよね。
どうも新しいEclipse Lunaが
でてるそうなので全部ごっそり消して新しいEclipseをダウンロード中……。
どうせゴミコードしかないのでworkspaceごとごっそり消してます(^^)/

*1:ポート番号の設定さえ変えればそんなことはない。ただし、80でアクセスする場合はhttp://blog.katty.in/2477に書いてあるような注意が必要