windows tomcat+apache 整合

linux和windows下整合思想是相同的,利用apache來解析*.html/*.htm
靜態網頁,當遇到*.jsp和servlet時,經過一個apache中的module把jsp頁面拋給Tomcat(或者
resin)來處理,在linux下經過編譯來製做這個module,要麻煩一些,本文經過現成的win下的一
個module來完成整合。

Tomcat的安裝
安裝目錄爲
d:\server\tomcat
   下面設置環境變量:(貌似不設也行)
   同jdk的環境變量,添加變量TOMCAT_HOME,值爲d:\server\tomcat;增長變量CATALINA_HOME,值爲
d:\
server\tomcat,在path變量中加入%TOMCAT_HOME%\bin
   啓動tomcat.
   在IE中輸入http://localhost:8080/,看到大貓的吧,則tomcat安裝成功.
html

Tomcat和Apache的整合配置
   Tomcat只是一個用來解析*.jsp文件的容器,它不是服務器,其解析靜態htm/html文件的能力遠遠不如apache,
整合後在同一個端口使apache來解析靜態網頁,而遇到*.jsp網頁時,交由tomcat來解析.
  第一步:把 mod_jk.dll複製到apache根目錄module文件夾下。
  第二步:配置APACHEjava

  打開apache根目錄下conf\httpd.conflinux

添加如下語句:web

     #------------------------------------------apache

    #connecting to tomcat using ajp13
    LoadModule jk_module modules/mod_jk.dll
    JkWorkersFile "d:/server/tomcat/conf/workers.properties"
    JkMount /servlet/* ajp13
    JkMount /*.jsp ajp13windows


    #-----------------------------------------------------tomcat

   注意:以上語句的基本意思是:
   loadModule一行:加載mod_jk.dll動態連接庫模塊,使之與tomcat通信
   jkWorkersFile:指明工做時tomcat相關文件workers.properties位置
   jkMount:兩行指明當遇到*.jsp和servlet時,交由ajp13協議,繼而轉發給tomcat處理。
  第三步:創建workers.properties文件,在tomcat根目錄conf下創建workers.properties文件,內容爲:
workers.tomcat_home=d:\server\tomcat
workers.java_home=d:\server\j2sdk1.4.0
ps=\
# worker.list=ajp13
worker.list=ajp12,ajp13 安全

worker.ajp12.port=8007
worker.ajp12.host=localhost
worker.ajp12.type=ajp12
worker.ajp12.lbfactor=1
            
worker.ajp13.port=8009        
worker.ajp13.host=localhost     
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1服務器

worker.loadbalancer.type=lbapp

worker.loadbalancer.balanced_workers=ajp12, ajp13
worker.inprocess.type=jni
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)classes
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)jaxp.jar

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)parser.jar

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)jasper.jar

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)servlet.jar

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)webserver.jar

worker.inprocess.class_path=$(workers.java_home)$(ps)lib$(ps)tools.jar

worker.inprocess.cmd_line=-config

worker.inprocess.cmd_line=$(workers.tomcat_home)/conf/jni_server.xml

worker.inprocess.cmd_line=-home

worker.inprocess.cmd_line=$(workers.tomcat_home)

worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll


worker.inprocess.stdout=$(workers.tomcat_home)$(ps)inprocess.stdout

worker.inprocess.stderr=$(workers.tomcat_home)$(ps)inprocess.stderr

worker.inprocess.sysprops=tomcat.home=$(workers.tomcat_home)

注意以上文件第1、二行填上tomcat和jdk的相關目錄.
 
  第四步:配置tomcat/conf下的server.xml文件,這個是tomcat的主要配置文件,重要配置以下:
    1.虛擬目錄設置:
     找到下面內容:
     <Host name="localhost" debug="0" appBase="/webapps"
       unpackWARs="true" >
    修改成:
    <Host name="localhost" debug="0" appBase="d:/server/www"
       unpackWARs="true" >
    使tomcat主目錄爲d:\server\www.
    找到下面內容:
    <Context path="examples" docBase="/examples" debug="0"
                 reloadable="true" crossContext="true">
    修改成
    <Context path="" docBase="/" debug="0"
                 reloadable="true" crossContext="true">
    這個個人理解是應該是使tomcat根目錄下的jsp做爲一個虛擬主機吧.
   2.設置tomcat監聽端口,找到下面的內容:
   <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
         port="8080"     minProcessors="5" maxProcessors="75"
               enableLookups="true" redirectPort="8443"
               acceptCount="100" debug="0" connectionTimeout="0"
               useURIValidationHack="false" disableUploadTimeout="true" />
    默認的端口是8080,但這個你們都知道,最好修改一下,假設修改成:8123,則以下:
   <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
         port="8123"     minProcessors="5" maxProcessors="75"
               enableLookups="true" redirectPort="8443"
               acceptCount="100" debug="0" connectionTimeout="0"
               useURIValidationHack="false" disableUploadTimeout="true" />
   3.找到如下8009端口的地方,這個很重要,經過8009,tomcat與apache互相通信,若是下面的部分
被<!---->註釋掉,必定要把<!---->去掉.
    <!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
               port="8009" minProcessors="5" maxProcessors="75"
               enableLookups="true" redirectPort="8443"
               acceptCount="10" debug="0" connectionTimeout="0"
               useURIValidationHack="false"
               protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>
    第五步:配置tomcat的conf/web.xml文件:
    相似於apache下404錯誤頁面的配置,在最後</web-app>一行以前加入如下內容:
     
       <error-page>
        <error-code>404</error-code>
        <location>/error/noFile.htm</location>
      </error-page>
      <error-page>
       <exception-type>java.lang.NullPointerException</exception-type>
       <location>/error/error.jsp</location>
      </error-page>
      第一個<error-page></error-page>之間的是404未找到jsp網頁的錯誤導向頁面,使之發生404錯誤時,
網頁導向至/error/noFile.htm,也能夠用相似方法添加其多的錯誤代碼導向頁面。
      第二個<error-page></error-page>之間的是當jsp網頁出現java.lang.NullPointerException導常時
導向至/error/error.jsp錯誤頁面。那麼須要在第個jsp網頁中加入如下內容:
      <%@ page  errorPage="/error/error.jsp" %>
      典型的error.jsp錯誤頁面的程序寫法以下:
  
    <%@ page contentType="text/html;charset=GB2312"%>
    <%@ page isErrorPage="true"%>
    <html>
    <head><title>錯誤頁面</title></head>

    <body>
    出錯了:</p> 錯誤信息: <%= exception.getMessage() %><br>

    Stack Trace is : <pre><font color="red"><%
    java.io.CharArrayWriter cw = new java.io.CharArrayWriter();
    java.io.PrintWriter pw = new java.io.PrintWriter(cw,true);
    exception.printStackTrace(pw);
    out.println(cw.toString());
    %></font></pre>
    </body>
    </html>
        當出現NullPointerException異常時tomcat會把網頁導入到error.jsp,且會打印出出錯信息。
        第五步主要是安全考慮,在正常狀況下,若是找不到網頁即出現404錯誤或者jsp程序出錯,在客戶端
    會列舉出相似於以下的信息(以tomcat爲例,resin相似):
      HTTP Status 404 - /sdags.jsp

      --------------------------------------------------------------------------------

      type Status report

      message /sdags.jsp

      description The requested resource (/sdags.jsp) is not available.


       --------------------------------------------------------------------------------

      Apache Tomcat/5.0.19
     
      這樣服務器版本會被別人看到,若是完成第五步的配置,就不會出現這種狀況.
    第六步:配置httpd.conf文件
    這種方法把tomcat和apache的根目錄設置爲同一目錄,可是必須限制客戶對目錄下一些文件的訪問,好比存入class
的web-inf,在httpd.conf下添加如下代碼:
        #deny the access to WEB-INF
    <Directory ~ "/WEB-INF/">
          Order allow,deny
          Deny from all
    </Directory>
     這樣,當試圖記問http://localhost/web-inf/時,apache將會拒絕.
     
     到此爲至,tomcat和apache的整合就完成啦.從新啓動tomcat和apache,
 把jsp網頁放到d:\server\www\下,例如:
     <html>
    <h1>JSP test<hr>

    <%out.println("Hello World!");%>

    </html>
    存爲index.jsp,在IE中輸入http://localhost:8080/index.jsp
    若是出現了
    Hello World!
    剛說明tomcat運行正常,在IE中輸入http://localhost/index.jsp,若是也出現     Hello World!     恭喜你!整合成功啦!

相關文章
相關標籤/搜索