Windowsの下でApacheとtomcatは責任の均衡を実現します
1.ApacheとTomcatに関する紹介
1.1同一点
1.1.1どちらもapache組織が開発した
1.1.2両方ともHTTPサービスの機能がある
1.1.3どちらも無料
1.2異なる点
1.2.1 apache
a)これはウェブサーバ環境プログラムであり、彼がウェブサーバとして使用できることを有効にするが、asp、php、cgi、jspなどの静的ウェブページだけをサポートすると、正確に解析できない.
b)apache環境でjspを実行する場合、jspページを実行するために解釈器が必要であり、このjsp解釈器はtomcatであり、jspがデータベースに接続する必要がある場合、jdkが接続データベースの駆動を提供する必要があるため、apache環境でjspを先に実行するwebサーバプラットフォームにはapache+tomcat+jdk、すなわちapacheとtomcatを統合する必要がある.
1.2.2 tomcat
a)tomcatはアプリケーション(java)サーバであり、servlet(jspもservletに翻訳)コンテナにすぎず、apacheの拡張と考えられるが、apacheとは独立して実行したり、静的ページを解析したりすることができ、apacheに及ばない効率である.
1.2.3上記をまとめる
Apacheはwebサーバであり、Tomcatはアプリケーションサーバ(servletコンテナ)である.
2.Apacheとtomcatの統合ApacheとTomcatの統合のメリット
2.1 Apacheは主にhtmlなどの静的テキストを解析するために使用されます.Tomcatにもこの機能がありますが、Apacheの効率はTomcatよりも大きく、特にコンカレント数の大きいエンタープライズアプリケーションでは、Apacheの効率性をよりよく示すことができます.
2.2 Tomcatはjsp、servletなどを解析するために使用され、すべての顧客要求はまずApacheに送信され、要求が静的テキストであればApacheによって解析され、結果をクライアントに返し、jspなどの動的な要求であればApacheは解析作業をTomcatに渡し、Tomcatによって解析され(前提:両者の現実的な統合)、Tomcat解析が完了すると、結果はやはりTpacheを通じてクライアントに戻ることで、このように分業協力を達成することができて、負荷の均衡を実現して、システムの性能を高めることができます!また、JSPはサーバ側解釈コードであるため、統合によりTomcatのサービスオーバーヘッドを低減することができる.
3.統合前の準備
3.1バージョン選択
統合のパフォーマンスをより安定させるために、apacheとtomcatは最新バージョンではなく、比較的安定したバージョンを採用しています.
Apache:httpd-2.2.22-win32-x86-openssl-0.9.8t.msi
Tomcat:apache-tomcat-7.0.6_1
Tomcat-connector:mod_jk-1.2.37-httpd-2.2.22.so(必要に応じて対応するバージョンをオンラインでダウンロードします).
注意:1.2.37:コネクタのバージョン番号を指します.
2.2.22:apacheのバージョン番号を指します.
3.2インストールディレクトリ
今回の統合にはtomcatを2つ使用しました
Apache:
E:apacheapacheinstall(今回の統合でapacheという名前を付けましたが、インストールディレクトリはdirApacheで、以下の説明を容易にすることを目的としています)
Tomcat:
E:\apache\tomcat\apache-tomcat-7.0.6_1(tomcat1,dirTomcat1)
E:\apache\tomcat\apache-tomcat-7.0.6_2(tomcat2,dirTomcat2)
4.統合された構成
4.1 Tomcat
4.1.1 serverのクローズポートの構成
1台のマシンで2つのtomcatをオンにするには、tomcatを異なるポート番号に構成する必要があります.
dirTomat 1のconf/server.xmlの構成文
次のように変更します.
dirTomcat 2の構成は、portが占有されていない限り類推されます.
4.1.2サービス名の構成
今回はtomcatを2つ実行したので、tomcatごとに名前を付けて、異なるtomcatサーバを区別します.
dirTomcat 1でconf/server.xmlで検索
次のように変更します.
dirTomcat 2の構成はこのようにtomcat 2に変更する.
注意:
この名前はdirApacheとconf/workersです.义齿tomcat 1はtomcat 1に対応し、tomcat 2はこのように推定される(具体的に一致しなければならないかどうかはさらに決定される).
4.1.3 httpアクセス用コネクタポートの構成
dirTomcat 1でconf/server.xmlで検索
次のように変更します.
2つのtomcatがあるため、1つはデフォルトのアクセスポートを採用しており、ポートは変更されていません.
tomcat 2の場合、今回の統合ではポートを8090に変更しました(アクセスポートが占有されていない限り)
4.1.4 AJP 1.3コネクタポートの構成
同様にdirTomcat 1のconf/serverを開く.xml、見つかりました
次のように変更します.
注意:
次の3つの緑の構成は、構成を同時にサポートするように構成されています.
dirTomcat 2の場合はこのようにします.
4.1.5 Engineの構成
jvmRouteプロパティを追加する場合はdirTomcat 1/conf.serverを見つけます.xmlの
次のように変更します.
注意:
jvmRouteとworkers.义齿tomcat 1対応.
dirTomcat 2の場合はこのようにします.
4.1.6ホストの構成
dirTomcat 1/conf.server.xmlのHostセクション
次のように変更します.
注意:
この設定はapacheの仮想ホスト設定に対応します(dieApache/conf/extra/httpd-vhosts.confのDocumentRootとDirectoryに対応します).
tomcat 2についてはこのように推定します
4.2 Apache
4.2.1 Apacheアクセスポートを確認する
Apacheデフォルトアクセスポート:Listen 80は、使用されていない限り変更されません.
4.2.2 apacheプロジェクトディレクトリとその仮想ディレクトリの構成
1)apacheのデフォルトディレクトリを変更する(理論的にはこれを変更しなくてもよい)diApache/conf/http.confファイルで見つけて構成
DocumentRoot"E:apachewebapps"(構成しないのはapacheのデフォルトのプロジェクトディレクトリで、仮想ディレクトリと一致し、tomcatの仮想ディレクトリと一致するように構成する必要があります).
2)apache仮想ディレクトリをdirApache/conf/extra/http-vhostsで構成する.confファイル、内容:
注意:
a)ServerAdmin:apacheのインストール時に記入したメール情報です.
b)DocumentRoot:tomcatで指定するディレクトリと一致します.
c) JkMount/*.jsp controller:動的Webページjspを要求するとtomcatに転送して解析し、controllerの名前とworkers.propertiesファイルで指定したcontrollerの名前は一致しています(apacheとtomcatが統合されたときの構成文は、構成を必要としません).
3)httpd-vhostsをロードする.confプロファイル
dirApache/conf/http.confファイルで見つかりました
次のように変更します.
4.2.3 workersを作成する.propertiesプロファイル
注意:
1)controllerの名前は勝手に取ることができますが、...対応する.
2) worker.controller.balanced_workers=tomcat1,tomcat2
ここでtomcat 1、tomcat 2はtomcatのserverとする.xmlファイルの
または
のいずれかの名前が同じです(テスト時は1つだけ同じでいいです).ただし、apacheとtomcatの負荷等化リンクを実装する名前はEngineのjvmRouteプロパティで実装される接続なので、上記の2つの名前を同じにすることをお勧めします.これでエラーは発生しません.
3) worker.tomcat1.host=localhostはtomcatのserverとします.xmlファイルの
構成文種の=name属性に対応し、サーバipまたはドメイン名である.
指定した名前が対応していない場合は、次のエラーが表示されます.
apacheはプロジェクトディレクトリが見つからないという意味です.
4) worker.tomcat1.portのポート番号はtomcatで定義されたAJP 1.3 Connectorポート番号で、以下の通りです.
つまり、上記のポート番号に対応しています.
4.2.4 Tomcatコネクタの構成
a)tomcatコネクタmod_jk-1.2.37-httpd-2.2.22.so dirApache/modulesディレクトリにコピーします.
b)dirApache/confにmod_を作成するjk.conf(tomcatコネクタプロファイル)ファイル.その内容は次のとおりです.
c)tomcatコネクタプロファイルをロードします(このファイルを作成しないと、彼のすべてのプロファイルがhttpd.confファイルに直接配置され、管理が不便になります).
dirApache/conf/http.confファイルは最後に次の文を追加します.
5.プロジェクトテスト
ApacheAndTomcatというjavawebプロジェクトを用意します
プロジェクトにindexを使用します.jspページ(内容は「jsp success!!」)を出力し、web.xmlではデフォルトのプロジェクトのトップページがindexになるように構成する.jsp、プロジェクトを上の仮想ディレクトリに配置
apacheサービスとtomcatサービスを起動し、ページに次のurlを入力します.
http://localhost/ApacheAndTomcat/
http://localhost:8080/ApacheAndTomcat/
http://localhost:8090/ApacheAndTomcat/
コンテンツが次の場合:
JSP success!!
apacheとtomcatの統合に成功したことを示します.
6.統合最適化
6.1スレッドとリクエストのサポート設定
apacheプロファイルhttpd.confで見つけた
次のように変更します.
ない場合は直接追加します.
6.2同時サポート構成
apacheプロファイルに次の構成文を最後に追加します.
ここまででapacheとtomcatの統合例が完成し、興味のある方は自分でやってみてください.本文は参考学習に供する.
1.1同一点
1.1.1どちらもapache組織が開発した
1.1.2両方ともHTTPサービスの機能がある
1.1.3どちらも無料
1.2異なる点
1.2.1 apache
a)これはウェブサーバ環境プログラムであり、彼がウェブサーバとして使用できることを有効にするが、asp、php、cgi、jspなどの静的ウェブページだけをサポートすると、正確に解析できない.
b)apache環境でjspを実行する場合、jspページを実行するために解釈器が必要であり、このjsp解釈器はtomcatであり、jspがデータベースに接続する必要がある場合、jdkが接続データベースの駆動を提供する必要があるため、apache環境でjspを先に実行するwebサーバプラットフォームにはapache+tomcat+jdk、すなわちapacheとtomcatを統合する必要がある.
1.2.2 tomcat
a)tomcatはアプリケーション(java)サーバであり、servlet(jspもservletに翻訳)コンテナにすぎず、apacheの拡張と考えられるが、apacheとは独立して実行したり、静的ページを解析したりすることができ、apacheに及ばない効率である.
1.2.3上記をまとめる
Apacheはwebサーバであり、Tomcatはアプリケーションサーバ(servletコンテナ)である.
2.Apacheとtomcatの統合ApacheとTomcatの統合のメリット
2.1 Apacheは主にhtmlなどの静的テキストを解析するために使用されます.Tomcatにもこの機能がありますが、Apacheの効率はTomcatよりも大きく、特にコンカレント数の大きいエンタープライズアプリケーションでは、Apacheの効率性をよりよく示すことができます.
2.2 Tomcatはjsp、servletなどを解析するために使用され、すべての顧客要求はまずApacheに送信され、要求が静的テキストであればApacheによって解析され、結果をクライアントに返し、jspなどの動的な要求であればApacheは解析作業をTomcatに渡し、Tomcatによって解析され(前提:両者の現実的な統合)、Tomcat解析が完了すると、結果はやはりTpacheを通じてクライアントに戻ることで、このように分業協力を達成することができて、負荷の均衡を実現して、システムの性能を高めることができます!また、JSPはサーバ側解釈コードであるため、統合によりTomcatのサービスオーバーヘッドを低減することができる.
3.統合前の準備
3.1バージョン選択
統合のパフォーマンスをより安定させるために、apacheとtomcatは最新バージョンではなく、比較的安定したバージョンを採用しています.
Apache:httpd-2.2.22-win32-x86-openssl-0.9.8t.msi
Tomcat:apache-tomcat-7.0.6_1
Tomcat-connector:mod_jk-1.2.37-httpd-2.2.22.so(必要に応じて対応するバージョンをオンラインでダウンロードします).
注意:1.2.37:コネクタのバージョン番号を指します.
2.2.22:apacheのバージョン番号を指します.
3.2インストールディレクトリ
今回の統合にはtomcatを2つ使用しました
Apache:
E:apacheapacheinstall(今回の統合でapacheという名前を付けましたが、インストールディレクトリはdirApacheで、以下の説明を容易にすることを目的としています)
Tomcat:
E:\apache\tomcat\apache-tomcat-7.0.6_1(tomcat1,dirTomcat1)
E:\apache\tomcat\apache-tomcat-7.0.6_2(tomcat2,dirTomcat2)
4.統合された構成
4.1 Tomcat
4.1.1 serverのクローズポートの構成
1台のマシンで2つのtomcatをオンにするには、tomcatを異なるポート番号に構成する必要があります.
dirTomat 1のconf/server.xmlの構成文
<Server port="8005" shutdown="SHUTDOWN">
次のように変更します.
<Server port="8015" shutdown="SHUTDOWN">
dirTomcat 2の構成は、portが占有されていない限り類推されます.
4.1.2サービス名の構成
今回はtomcatを2つ実行したので、tomcatごとに名前を付けて、異なるtomcatサーバを区別します.
dirTomcat 1でconf/server.xmlで検索
<service name="Catalina">
次のように変更します.
<service name="tomcat1">
dirTomcat 2の構成はこのようにtomcat 2に変更する.
注意:
この名前はdirApacheとconf/workersです.义齿tomcat 1はtomcat 1に対応し、tomcat 2はこのように推定される(具体的に一致しなければならないかどうかはさらに決定される).
4.1.3 httpアクセス用コネクタポートの構成
dirTomcat 1でconf/server.xmlで検索
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
次のように変更します.
<Connector port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="150" />
2つのtomcatがあるため、1つはデフォルトのアクセスポートを採用しており、ポートは変更されていません.
tomcat 2の場合、今回の統合ではポートを8090に変更しました(アクセスポートが占有されていない限り)
4.1.4 AJP 1.3コネクタポートの構成
同様にdirTomcat 1のconf/serverを開く.xml、見つかりました
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
次のように変更します.
<Connector
port="8019"
protocol="AJP/1.3"
redirectPort="8443"
maxThreads="3000"
emptySessionPath="true"
enableLookups="false"/>
注意:
次の3つの緑の構成は、構成を同時にサポートするように構成されています.
dirTomcat 2の場合はこのようにします.
4.1.5 Engineの構成
jvmRouteプロパティを追加する場合はdirTomcat 1/conf.serverを見つけます.xmlの
<Engine name="Catalina" defaultHost="localhost">
次のように変更します.
<Engine jvmRoute="tomcat1" name="Catalina" defaultHost="localhost">
注意:
jvmRouteとworkers.义齿tomcat 1対応.
dirTomcat 2の場合はこのようにします.
4.1.6ホストの構成
dirTomcat 1/conf.server.xmlのHostセクション
<Host
name="localhost"
appBase="webapps"(tomcat conf )
unpackWARs="true"
autoDeploy="true">
次のように変更します.
<Host
name="localhost"
appBase="E:\apache\webapps"( , )
unpackWARs="true"
autoDeploy="true">
注意:
この設定はapacheの仮想ホスト設定に対応します(dieApache/conf/extra/httpd-vhosts.confのDocumentRootとDirectoryに対応します).
tomcat 2についてはこのように推定します
4.2 Apache
4.2.1 Apacheアクセスポートを確認する
Apacheデフォルトアクセスポート:Listen 80は、使用されていない限り変更されません.
4.2.2 apacheプロジェクトディレクトリとその仮想ディレクトリの構成
1)apacheのデフォルトディレクトリを変更する(理論的にはこれを変更しなくてもよい)diApache/conf/http.confファイルで見つけて構成
DocumentRoot"E:apachewebapps"(構成しないのはapacheのデフォルトのプロジェクトディレクトリで、仮想ディレクトリと一致し、tomcatの仮想ディレクトリと一致するように構成する必要があります).
2)apache仮想ディレクトリをdirApache/conf/extra/http-vhostsで構成する.confファイル、内容:
NameVirtualHost localhost
<VirtualHost localhost>
ServerAdmin [email protected]
DocumentRoot "E:/apache/webapps"
ServerName localhost
JkMount /*.jsp controller
DirectoryIndex index.html index.jsp
<Directory E:/apache/webapps/>
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost localhost>
ServerAdmin [email protected]
DocumentRoot "E:/apache/webapps"
ServerName localhost
JkMount /*.jsp controller
DirectoryIndex index.html index.jsp
<Directory E:/apache/webapps/>
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
注意:
a)ServerAdmin:apacheのインストール時に記入したメール情報です.
b)DocumentRoot:tomcatで指定するディレクトリと一致します.
c) JkMount/*.jsp controller:動的Webページjspを要求するとtomcatに転送して解析し、controllerの名前とworkers.propertiesファイルで指定したcontrollerの名前は一致しています(apacheとtomcatが統合されたときの構成文は、構成を必要としません).
3)httpd-vhostsをロードする.confプロファイル
dirApache/conf/http.confファイルで見つかりました
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
次のように変更します.
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
4.2.3 workersを作成する.propertiesプロファイル
worker.list=controller
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2
worker.controller.sticky_session=1
worker.controller.sticky_session_force=1
# Set properties for tomcat1 (ajp13)
worker.tomcat1.type=ajp13
worker.tomcat1.host=localhost
worker.tomcat1.port=8019
worker.tomcat1.lbfactor=1
# Set properties for tomcat2(ajp13)
worker.tomcat2.type=ajp13
worker.tomcat2.host=localhost
worker.tomcat2.port=8029
worker.tomcat2.lbfactor=1
注意:
1)controllerの名前は勝手に取ることができますが、...対応する.
2) worker.controller.balanced_workers=tomcat1,tomcat2
ここでtomcat 1、tomcat 2はtomcatのserverとする.xmlファイルの
<Service name="tomcat1">
または
<Engine jvmRoute="tomcat1" name="Catalina" defaultHost="localhost">
のいずれかの名前が同じです(テスト時は1つだけ同じでいいです).ただし、apacheとtomcatの負荷等化リンクを実装する名前はEngineのjvmRouteプロパティで実装される接続なので、上記の2つの名前を同じにすることをお勧めします.これでエラーは発生しません.
3) worker.tomcat1.host=localhostはtomcatのserverとします.xmlファイルの
<Host
name="localhost"
appBase="E:\apache\webapps"
unpackWARs="true"
autoDeploy="true">
構成文種の=name属性に対応し、サーバipまたはドメイン名である.
指定した名前が対応していない場合は、次のエラーが表示されます.
Service Temporarily Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
apacheはプロジェクトディレクトリが見つからないという意味です.
4) worker.tomcat1.portのポート番号はtomcatで定義されたAJP 1.3 Connectorポート番号で、以下の通りです.
<Connector
port="8019"
protocol="AJP/1.3"
redirectPort="8443"
maxThreads="3000"
emptySessionPath="true"
enableLookups="false"/>
つまり、上記のポート番号に対応しています.
4.2.4 Tomcatコネクタの構成
a)tomcatコネクタmod_jk-1.2.37-httpd-2.2.22.so dirApache/modulesディレクトリにコピーします.
b)dirApache/confにmod_を作成するjk.conf(tomcatコネクタプロファイル)ファイル.その内容は次のとおりです.
# TOMCAT
# mod_jk (tomcat )
LoadModule jk_module modules/mod_jk-1.2.37-httpd-2.2.22.so
# workers.properties ( tomcat )
JkWorkersFile conf/workers.properties
# TOMCAT
c)tomcatコネクタプロファイルをロードします(このファイルを作成しないと、彼のすべてのプロファイルがhttpd.confファイルに直接配置され、管理が不便になります).
dirApache/conf/http.confファイルは最後に次の文を追加します.
# mod_jk
include conf/mod_jk.conf
5.プロジェクトテスト
ApacheAndTomcatというjavawebプロジェクトを用意します
プロジェクトにindexを使用します.jspページ(内容は「jsp success!!」)を出力し、web.xmlではデフォルトのプロジェクトのトップページがindexになるように構成する.jsp、プロジェクトを上の仮想ディレクトリに配置
apacheサービスとtomcatサービスを起動し、ページに次のurlを入力します.
http://localhost/ApacheAndTomcat/
http://localhost:8080/ApacheAndTomcat/
http://localhost:8090/ApacheAndTomcat/
コンテンツが次の場合:
JSP success!!
apacheとtomcatの統合に成功したことを示します.
6.統合最適化
6.1スレッドとリクエストのサポート設定
apacheプロファイルhttpd.confで見つけた
ThreadsPerChild 250
MaxRequestsPerChild 0
次のように変更します.
ThreadsPerChild 1900
MaxRequestsPerChild 10000
ない場合は直接追加します.
6.2同時サポート構成
apacheプロファイルに次の構成文を最後に追加します.
<IfModule worker.c>
StartServers 4
ServerLimit 64
ThreadLimit 256
MaxClients 2048
MinSpareThreads 64
MaxSpareThreads 128
ThreadsPerChild 64
MaxRequestsPerChild 0
</IfModule>
ここまででapacheとtomcatの統合例が完成し、興味のある方は自分でやってみてください.本文は参考学習に供する.