672
542

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

図解で解説!! Apache、Tomcatってなんなの?

Last updated at Posted at 2021-05-13

ログイン画面出ているのに404になった。
そこで、関連してくるApacheとTomcatについて書いていこうと思います!

はじめに

Apacheってなんだ?!
Tomcatってなんだ?!
お前達は一体どこにいるんだ?!
何をしてるんだ?!
そんなApacheとTomcatの疑問に関してまとめていきます。

※概念部分のみで、以降には技術的なコードを書いてませんのでご了承を...

 

環境

OS macOS Catalina バージョン10.15.7

 
 

Apacheって何?

Webサーバ用のソフトのこと
正式名称はApache HTTP Serverという
世界中で最も使用されているWebサーバソフト

 

Webサーバって何?

ブラウザからのHTTPリクエストに対して、HTMLファイルなどをレスポンスとして返してくれるサーバのこと
 
今回でいうとPCなどにApacheというWebサーバ用のソフトを入れることでWebサーバになる!

 

Tomcatって何?

APPサーバ(アプリケーション)
Java Servletを動かす時に使うソフトでWebコンテナのこと(サーブレットコンテナとも言う)
簡易的なWebサーバとしての機能も持っている
正式名称はApache Tomcatという

 

ここで疑問に思うことがありますよね!

・ ApacheはWebサーバ用のソフト
・ Tomcatも簡易的なWebサーバとしての機能も持っている

 
• • • ??

だったら、Tomcatあれば、Apache要らなくね?! という疑問。。

ここからはタイトルにもあった通り、図解での説明に入ります!!

図解で説明

1. まずは全体のイメージを掴む

スクリーンショット 2021-05-14 1.03.56.png

【 全体図から分かること 】

  • クライアントはWEBサーバに対してリクエストを送るので、ApacheとTomcatがある場合にクライアントと最初に繋がるのはApacheになる

  • リクエストに対してApacheからWebアプリケーションを動作させるための実行環境であるTomcatへ必要な処理を要求する

  • DBとTomcatの間にJAVAが有り、そのJAVAがDBをたたきにいったり、必要なテンプレートを作成したりしている。(TomcatがDBをたたきにいくわけではないということ)

 
 
次は、簡易的なWebサーバとしての機能も持っているTomcatあれば、Apache要らなくね?! という疑問を考えてみる。

ここは、エンジニアの先輩がめちゃくちゃわかりやすく教えてくれたので、その例えを使って書いていきます!!
 

##2.Apacheがないとどうなるのか?
ホール担当のバイト(Apacheさん)と、ホールもキッチンもできるオーナー(Tomcatさん)のお話

【 少々のリクエスト&レスポンスなら対応できる 】

スクリーンショット 2021-05-14 2.49.19.png

クライアントからの少ない注文に対しては対応できる!!

 

スクリーンショット 2021-05-14 2.49.27.png
メニューに無い注文がきたらそんなもんうちには無い!!と対応できる(404エラー)

 

 

【 沢山のリクエストが来てそのレスポンスを返さなくてはいけない場合どうなる? 】

スクリーンショット 2021-05-14 3.10.31.png

当然...負担がかかることでレスポンスが遅くなり、ダウンする原因に。。

 
 

3. Apache入れるとどうなるのか?

スクリーンショット 2021-05-14 3.28.43.png

・ 設定の柔軟性、拡張性が高くなる
・ サーバ負荷を減らすことで、Js、CSS,HTMLの静的コンテンツが高速化できる
(条件によってはTomcatだけの方が早い時もあるみたい)

 
 
 

4. ついでに図から404と500番系のエラーを考える

【 Not Found 404エラー】

スクリーンショット 2021-05-14 7.44.03.png

〜 クライアント側に問題あり 〜
Apacheのリソースに無い、クライアント側の無茶振りな注文には404エラーを出す
 
 
 

【 Internal Server Error 500系のエラー】

スクリーンショット 2021-05-14 7 59 02 **〜 サーバー側に問題あり 〜** **クライアント側の要求は良いけど、サーバ側に不具合がある場合に500系のエラーを出す**    

【 エラー出る場所を切り分ける】

ちなみに、
Webサーバで出る404の特徴、Webコンテナで出る404特徴があります。

【 Apacheがあかん時 のNot Found 404エラー】

みんな大嫌いな真っ赤っかのエラーが出る
 ブラウザがあかんのでリクエスト関連を見るべし!

【 Tomcatがあかん時 のNot Found 404エラー】

下のような紺色のエラーが出る
スクリーンショット 2021-05-15 10.12.38.png

【 JAVAがあかん時 のNot Found 404エラー】

(例)
ログイン画面は表示できているけど、ログインボタン押すと404が発生する時など

おまけ

ちなみに、Apache以外のWebサーバ用のソフトっていうとこんなのがあるみたい

  • IIS(アイアイエス) : Windowsの標準Webサーバソフト
  • nginx(エンジンエックス) : 大規模システムに使われるWebサーバソフト
     
        
     

##ApacheとNginxの使い分けって?

Apache Nginx
アクセス急増時のサーバーへの負荷 いっきに負荷増 アクセスに比例して負荷は急激に増えない
その結果Webサーバーの動き 遅くなり、ダウンしやすくなる 処理速度は維持し、ダウンしにくい

※RailsだとNginxが使われることが多い.....みたい。

##ApacheとNginxの使い分けポイント
ApacheとNginxでは駆動方式が違います。

Apacheは、マルチプロセスのプロセス駆動アーキテクチャ

Nginxはシングルスレッドモデルのイベント駆動アーキテクチャ

Nginxを選択する場合:

  • 負荷が高くて、スケーラビリティが要求されるような場合に向いています。
  • 静的ページに同時多数のアクセスが想定されるような場合に向いています。
    (ただ、NginxはCPUリソースがたくさん必要な処理には向いてないようです)
     

Apacheを選択する場合:

  • 負荷が低くて、早期または簡易的なセットアップが必要な場合に向いています。
  • 同時アクセスする数が少なく、単純にリクエスト数が多いような場合に向いています。

 

672
542
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
672
542

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?