LoginSignup
113
175

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-03-05
1 / 33

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の方が高い


[補足] 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辞書


おわり

113
175
0

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
113
175