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の構成文
<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の統合例が完成し、興味のある方は自分でやってみてください.本文は参考学習に供する.