AI摘要:IIS和Tomcat可以整合使用,將Tomcat設為應用伺服器,運行在HTTP伺服器IIS背後。整合步驟包括配置Tomcat和IIS:首先,將Tomcat配置為應用伺服器,將server.xml改寫為引用子檔配置;然後,下載Tomcat連接器並配置IIS,添加虛擬目錄、編輯許可權、配置連接器屬性檔。最後在属性檔中配置好規則,將URI與Worker關聯。
Powered by 部落Bot.

web-tomcat.png
官方文檔:https://tomcat.apache.org/connectors-doc/webserver_howto/iis.html

Apache、IIS、Nginx 屬於「HTTP Server」
一個 HTTP Server 關心的是 HTTP 協議層面的傳輸和訪問控制,所以在 Apache/IIS/Nginx 上你可以看到代理、負載均衡等功能。客戶端通過 HTTP Server 訪問伺服器上存儲的資源(HTML 檔、圖片檔等等)。通過 CGI 技術,也可以將處理過的內容通過 HTTP Server 分發,但是一個 HTTP Server 始終只是把伺服器上的檔如實的通過 HTTP 協議傳輸給客戶端。
而 Tomcat、Wildfly 則是一個「Application Server」,或者更準確的來說,是一個「Servlet/JSP」應用的容器(Ruby/Python 等其他語言開發的應用也無法直接運行在 Tomcat 上)。
應用伺服器是一個應用執行的容器。它首先需要支持開發語言的 Runtime(對於 Tomcat 來說,就是 Java),保證應用能夠在應用伺服器上正常運行。其次,需要支持應用相關的規範,例如類庫、安全方面的特性。對於 Tomcat 來說,就是需要提供 JSP/Sevlet 運行需要的標準類庫、Interface 等。為了方便,應用伺服器往往也會集成 HTTP Server 的功能,但是不如專業的 HTTP Server 那麼強大,所以應用伺服器往往是運行在 HTTP Server 的背後,執行應用,將動態的內容轉化為靜態的內容之後,通過 HTTP Server 分發到客戶端。

Tomcat配置部分

server.xml配置,改寫成引用子檔配置的格式。
後續新增vhost,此檔只需新增引用的子檔,不需要修改其他內容。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE server-xml [
<!ENTITY vhost-localhost SYSTEM "vhost\localhost.xml">
]>
<Server port="-1" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
        &vhost-localhost;
</Server>

vhost\localhost.xml
注意Service nameConnector port不能與其他vhost重複,同時修改站點主機頭、路徑、日誌格式

  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"  connectionTimeout="20000" redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" secretRequired="false" />
      <Engine name="Catalina" defaultHost="localhost">
    <Host name="localhost"  appBase="E:\jsp_site\webapps" unpackWARs="true" autoDeploy="true">
      <Context path="" docBase="E:\jsp_site\webapps" reloadable="false" crossContext="true"/>
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="F:\LogFiles\tomcat.log\access\"
               prefix="localhost" suffix=".log"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
     </Engine>
   </Service>

IIS配置部分

配置Tomcat伺服器運行正常後做IIS+Tomcat整合

tomcat連接器

下載地址:https://downloads.apache.org/tomcat/tomcat-connectors/jk/binaries/windows/

  • 配置為ISAPI篩選器

iis-tomcat-1.png
jsp站點下添加虛擬目錄jakarta(參照isapi_redirect.properties中設置),編輯功能許可權,修改為“執行”
iis-tomcat-2.png

  • isapi_redirect.properties中配置好相關路徑
  • workers.properties中設置好worker名及對應port(端口在tomcat配置檔中修改)
ps=\
worker.list=webapps,jsp1

worker.webapps.type=ajp13
worker.webapps.host=localhost
worker.webapps.port=8009
worker.webapps.lbfactor=1

worker.jsp1.type=ajp13
worker.jsp1.host=localhost
worker.jsp1.port=8010
worker.jsp1.lbfactor=1
  • uriworkermap.properties中配置好規則匹配uri與worker關聯(可匹配目錄也可匹配主機頭)
/localhost/*=webapps
/draw.oa.ht/*=jsp1