Edited at

【社内勉強会】ApacheとTomcat(2017/03/09)

More than 1 year has passed since last update.


0.はじめに



対象者


  • Apache or Tomcatを使っている人

  • ApacheとTomcatの違いがよく分からない人



伝えたいこと


  • AapcheとTomcatの違い

  • ApacheとTomcatを連携している理由

  • ApacheとTomcatの設定方法



目次


  1. ApacheとTomcatの概要

  2. Apache, Tomcatでのシステム構成

  3. Apache(とTomcat)の設定方法

  4. 付録



1. ApacheとTomcatの概要



Apacheとは?

Webサーバ用のソフト。

正式名称は「Apache HTTP Server」。

初版は1995年。

最新バージョンは2.4。



Webサーバとは?

ブラウザからのHTTPリクエストに対して、HTMLファイルなどを渡すサーバ。

簡単に書くと「Webサービスを置くサーバ」。

※参考サイト : http://wa3.i-3-i.info/word12465.html



Tomcatとは?

サーブレットコンテナ(Java Serveletを動かすソフト)。

正式名称は「Apache Tomcat」。

初版は1999年。

最新バージョンは8.5。

簡易的なWebサーバとしての機能も持つ。



Java Servletとは?

Java Servletを動かすためのソフト。

サーバ上で動くJavaプログラム 。動的なページが生成可能。

public class HelloWorld extends HttpServlet{

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello World!</title>");
//~HTMLを出力~
out.close();
}
}



[補足] JSPと Terasolunaフレームワーク


  • JSPはコンパイルするとServletになる。(Tomcatのworkディレクトリで確認可能)

  • Terasolunaフレームワークは(strutsベース)は、Servletを簡単に書けるようにしたもの(ざっくり)

本スライドでは、JSPもTerasolunaもServletとみなして差支えないです。



ApacheとTomcatの比較


  • Apache: Webサーバソフト

  • Tomcat: Java Servletを動かすためのソフト AND 簡易Webサーバソフト

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典



2. Apache, Tomcatでのシステム構成



Tomcatのみの構成

~図作成中~

Tomcatの役割は「Webサーバ」と「サーブレットコンテナ」。



Apacheと連携した構成

~図作成中~

Apacheの役割は「Webサーバ」。

Tomcatの役割は「サーブレットコンテナ」。



Apacheと連携するメリット


  • 静的コンテンツ(js,css,html)はApacheの方が高速?(後述)

  • 設定の柔軟性、拡張性はApacheの方が高い

http://fa11enprince.hatenablog.com/entry/2015/01/19/233740



[補足] Apacheと連携すると本当に速いのか?

条件によってはTomcatの方が速い場合がある。

高速性はApache連携する理由にはならない。


Tomcat can perform at httpd speeds when using the proper connector (APR with sendFile enabled). Speed should not be considered a factor when choosing between Apache httpd and Tomcat


https://wiki.apache.org/tomcat/FAQ/Connectors#Q3 から引用



システムの構成例

画像ファイルはファイルサーバで管理。

ファイルサーバにもApacheを導入。



3. Apache(とTomcat)の設定方法



Apacheの設定方法



Apacheの設定ファイル


  • [Apache_HOME]/conf/httpd.conf : 全体の設定ファイル



Apacheの基本構文

「ディレクティブ(設定項目) 引数(設定内容)」

# ドキュメントルートを"C:/xampp/htdocs"にする

DocumentRoot "C:/xampp/htdocs"



コンテナ指示子

設定範囲を限定したい場合に使用する。

指定しない場合は、サーバ全体に影響する。

# "C:/xampp/htdocs"ディレクトリに対して処理

<Directory "C:/xampp/htdocs">
# ~設定処理~
</Directory>

<Files>, <Location>などのコンテナ指示子がある。



[補足] コンテナ指示子の応用

ワイルドカード、正規表現も使用できる。

コンテナ指示子のネストも可能。

<Directory "C:/xampp/htdocs">

<Files *.html>
# ~設定処理~
</Files>
</Directory>



画像の直接アクセス禁止

リクエストヘッダの「Referer」で、直接アクセスかどうかを判断する。

リクエストヘッダの「Referer」は、リンク元のURLが設定されている。

<Directory  "C:/xampp/htdocs">

# HTTPリクエストヘッダのRefererがAPサーバならば、環境変数「check」を設定する
SetEnvIf Referer "http://sample.co.jp/" check
# [禁止]、[許可]の順に評価する
Order deny,allow
# 1. すべてのアクセスを禁止する
Deny from all
# 2. 環境変数に設定されたホストからのアクセスのみ許可する
Allow from env=check
</Directory>



[補足] httpd.confの構文チェック

Apacheの起動に失敗したら、以下のコマンドでhttpd.confの構文チェックをしましょう!

%APCHE_HOME%\bin\httpd.exe -t



Tomcatの設定ファイル

[TOMCAT_HOME]/confディレクトリ配下 


  • server.xml : 主要な設定ファイル。コンテキストパスやApache連携用の設定など。

  • tomcat-users.xml : Tomcat Manager用のファイル

ウチのシステムでは、今後Tomcatの設定ファイルを修正する可能性は低いので、

設定方法は省略します。



4. 付録



Apache以外のWebサーバソフト


  • IIS: Windowsの標準Webサーバーソフトウエア

  • nginx: 大規模システムでシェアを伸ばしているソフト



Tomcat以外のサーブレットコンテナ


  • GlassFish

  • JBoss

  • Jetty



Tomcatの意味


  1. 雄猫

  2. ((俗)) 女の尻を追い回す男,女たらし.

  3. ((T-)) 〔軍事〕 トムキャット:米海軍艦上戦闘機 F-14の愛称.

goo辞書



Apacheの意味


  1. アパッチ族[米国南西部のインディアンの一族]

  2. 【軍事】アパッチ[陸軍の2人乗り攻撃ヘリコプター]

goo辞書



おわり