2012年9月28日 星期五

安裝 Tomcat 7.0.x

安裝 Tomcat 7.0.x

This document is provided as is. You are welcomed to use it for non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟
請勿轉貼
看其他教材

我個人最愛的 Tomcat 5.5.x 終於被宣布自 09/2012 起停止支援,甚至到了 12/2012 就無法下載了。在無奈之下,只好開始轉戰 Tomcat 7.0.x 版。 Tomcat 7.0.x 版的安裝對於 JSP 的開發並沒有太大的改變,改變最多的大概 就是 servlet 的程式了;為了避免大幅修改 Java Servlet 入門, 我會在本文中說明開發 servlet 程式時,web.xml 的必要修改。

支援一般連線

Tomcat 是一個讓開發者能夠執行 JSP/servlet 的伺服器(比較專業的說法是 container),其安裝步驟如下:
  1. 安裝 JDK 1.6.x 版或者更新的版本。
    • 記得要設定環境變數 JAVA_HOME。假設 JDK 安裝在 c:\jdk,我們需要執行 set JAVA_HOME=c:\jdk或者在控制台內設定。

  2. 安裝 Tomcat(我們以 7.0.x 版為例;並假設 Tomcat 安裝於 d:\tomcat7)。
    1. 下載點 http://tomcat.apache.org/download-70.cgi
    2. 請下載適當的 zip 檔並將它解壓縮到 d:\
    3. 為了減少 typing,將目錄名稱從 apache-tomcat-7.0.x 改成 tomcat7
    4. 為了測試方便,我們建議將 d:\tomcat7\conf\context.xml 這個檔案內的 <Context> 改成 <Context reloadable="true"> 。對於正式上線使用的程式,我們不建議這樣做。

  3. 開啟"命令提示字元",並 cd 到 d:\tomcat7\bin;執行 .\startup.bat。
  4. 開啟你喜歡的瀏覽器,並輸入 http://127.0.0.1:8080/。如果你的結果如下圖,表示你的安裝成功。
  5. 假設我們要建立一個新的專案,其名稱為 xml,請在 d:\tomcat7\webapps 建立一個目錄 d:\tomcat7\webapps\xml,並在 d:\tomcat7\webapps\xml 下建立 d:\tomcat7\webapps\xml\WEB-INF 以及 d:\tomcat7\webapps\xml\WEB-INF\classes
  6. 假設我們要在 xml 專案下開發一個名為 HelloServ 的 servlet 程式,請依照 下列步驟:
    1. 請到 Hello World -- Servlet 複製原始碼。
    2. 請到 d:\tomcat7\webapps\xml\WEB-INF\classes 目錄下,產生 一個名為 HelloServ.java 的檔案,並將前一步驟所複製的原始碼貼上。
    3. 在命令提示字元視窗內設定 CLASSPATH 的環境變數: set CLASSPATH=%CLASSPATH%;d:\tomcat7\lib\servlet-api.jar
    4. 在命令提示字元視窗內編譯程式:javac HelloServ.java
    5. d:\tomcat7\webapps\xml\WEB-INF 的 web.xml 檔案內(若不存在,則新增該檔案)新增如下的內容:(下列原始碼必須包含在 <web-app> 和 </web-app> 標籤內)(你也可以下載 web.xml)
      01    <servlet>
      02      <servlet-name>HelloWorld</servlet-name>
      03      <servlet-class>HelloServ</servlet-class>
      04    </servlet>
      
      05    <servlet-mapping>
      06      <servlet-name>HelloWorld</servlet-name>
      07      <url-pattern>/hello.php</url-pattern>
      08    </servlet-mapping>
          
      在第 02 和 06 行只是定義給 Tomcat 用的 servlet 名稱,代表這兩對(分別是 <servlet> 和 <servlet-mapping>)的設定是相關的;第 03 行代表 名為 HelloWorld 的 servlet,其實際上的類別名稱是 HelloServ.class,也就是 我們在之前編譯的程式;第 08 行代表執行該 servlet 的時候,其名稱是 /hello.php;也就是說,結合上專案的名稱 xml,如果要執行該 servlet,其 URL 應該是 http://127.0.0.1:8080/xml/hello.php。請注意,雖然執行的程式是 servlet, 但是一般人只以為我們開發的是 php 程式,在某些程度上可以增加系統的安全性, 這也是 Tomcat 7.0.x 修正這麼多的一個理由。
    6. 在瀏覽器內,請輸入 http://localhost:8080/xml/hello.php,即可 看到如下畫面(請注意畫面中瀏覽器 URL 的值):






支援安全連線

許多資訊系統往往要求比較高的安全強度,其中一項就是希望能夠在連線的 過程,彼此交換的資料都能夠以加密的方式來進行;也就是使用 https。 tomcat 也支援 https,而且設定的方式也很簡單。如果要使得 tomcat 支援安全連線, 請先確認你已經依據上一節的內容完成 tomcat 的基本安裝。 要進行 https 連線之前,tomcat(或者其他的網頁伺服器)都需要 一個電子憑證;電子憑證的目的主要是希望能夠經由公正的第三者來證明"你就是 你說的你"或者"使用者連過去的公司真的就是那家公司"。如果你開發的系統 是給一個正式的機構,那麼我們建議你去申請一個電子憑證,例如:VerySign 等公司。 如果你只是想測試一下,那麼你可以建立自己的電子憑證,只不過你的使用者 可能會怕怕的,我們等一下以圖片說明。
為 tomcat 產生電子憑證,以及利用瀏覽器來使用 https 的方式如下:
  1. 產生電子憑證:請開啟"命令提示字元"視窗,並依照以下畫面來執行:
    密碼的長度要求至少 6 位。預設的情形下,該電子憑證(.keystore)的有效期間 是 3 個月;你可以加長,假設你想加長為 365 天,請在指令最後加上 -validity 365即可。
  2. 請將 .keystore 檔放置於 tomcat 的目錄;在本範例中,請放在 d:\tomcat
  3. 請修改 d:\tomcat7\conf\server.xml 的內容。利用編輯器 (例如記事本之類的工具)開啟檔案,並找尋如下的部分:
        <!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
        <!--
        <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
                   maxThreads="150" scheme="https" secure="true"
                   clientAuth="false" sslProtocol="TLS" />
        -->
    
    首先,將 Connector 標籤前後的註解刪除掉;然後,依據下列 綠色的部分加到 server.xml 中。其中,passwd 必須與你之前產生 電子憑證時的密碼相同。修改後的 server.xml 如下所示:

        <!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
        <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
                   maxThreads="150" scheme="https" secure="true"
                   clientAuth="false" sslProtocol="TLS"
                   keystoreFile="conf/.keystore" keystorePass="passwd" />
    
  4. 除了 8443 的 port 要打開之外,我們還要移除 APR 的設定,也就是在檔案大約 27 行的地方,把該設定 comment out,如下所示:
      <!--APR library loader. Documentation at /docs/apr.html -->
      <!--
      <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
      -->
    
  5. 以上步驟完成後,請重新啟動 tomcat。






我們要如何確認之前的設定是正確的呢?這時候,請使用你的瀏覽器去看 tomcat 的首頁,只是這次請輸入 https://localhost:8443/; 請注意:要輸入 https 而不是 http;另外,port 也要輸入 8443 而不是 8080

  1. 如果你的瀏覽器是 Firefox,那麼你會看到如下的畫面:
  2. 你可以點選"技術細節"或者"我了解此安全風險",兩個都點選的話,畫面 如下所示:
  3. 由於我們知道這是可以信任的網站(我們自己開發的,不是嗎?),所以 請點選畫面底下的"新增例外網站"。點選後,會出現以下的視窗:
  4. 你可以點選"檢視"按鈕,點選後,會出現以下視窗:
    你可以檢查一下內容。如果沒問題就可以點選"關閉"按鈕來關閉這個視窗。
  5. 最後,請點選"確認安全例外"按鈕。你就可以看到 tomcat 的歡迎畫面。









  1. 如果你使用的是 IE,以 IE8 為例,你會看到如下的畫面:
  2. 請點選"繼續瀏覽此網站(不建議)"來繼續,你會看到如下的畫面:
  3. 如果想要知道電子憑證的內容,請點選 IE8 位於上方中央的地方,有一個 "憑證錯誤"的紅色區塊,點選後,請選擇"檢視憑證",你會看到如下的畫面:
  4. 你如果希望下一次再造訪這個網頁而不想出現警告訊息的話,請在視窗上 點選"安裝憑證"的按鈕,然後依照指示完成憑證的安裝。





Written by: 國立中興大學資管系呂瑞麟







沒有留言:

張貼留言