0.はじめに
対象者
- Apache or Tomcatを使っている人
- ApacheとTomcatの違いがよく分からない人
伝えたいこと
- AapcheとTomcatの違い
- ApacheとTomcatを連携している理由
- ApacheとTomcatの設定方法
目次
- ApacheとTomcatの概要
- Apache, Tomcatでのシステム構成
- Apache(とTomcat)の設定方法
- 付録
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の意味
- 雄猫
- ((俗)) 女の尻を追い回す男,女たらし.
- ((T-)) 〔軍事〕 トムキャット:米海軍艦上戦闘機 F-14の愛称.
Apacheの意味
- アパッチ族[米国南西部のインディアンの一族]
- 【軍事】アパッチ[陸軍の2人乗り攻撃ヘリコプター]