tomcat

1.5   Tomcat的安裝與配置

http://book.csdn.net/bookfiles/779/10077923468.shtmlhtml

安裝Tomcat以前要先安裝JDK,本書中,筆者所用的JDK版本爲1.6.0_05。java

JDK的下載地址是:http://java.sun.com/javase/downloads/?intcmp=1281,下載頁面如圖1-5所示。web

圖1-5  JDK的下載頁面apache

要下載Tomcat,首先訪問Tomcat項目的網址:http://tomcat.apache.org/,如圖1-6所示。瀏覽器

圖1-6  Tomcat項目的首頁tomcat

在頁面左邊的下載連接中選擇要下載的Tomcat版本,在這裏,咱們選擇「Tomcat 6.x」下載,單擊這個連接,進入Tomcat 6.x的下載頁面,如圖1-7所示。服務器

本書使用的Tomcat版本是6.0.16。對於Windows操做系統,Tomcat還提供了可執行的安裝程序的下載,即「Windows Service Installer」連接。經過安裝程序安裝Tomcat,將把Tomcat安裝爲Windows的服務。app

筆者建議讀者下載zip壓縮包,經過解壓縮的方式來安裝Tomcat,由於解壓縮的方式也適用於其餘的操做系統(如Linux系統),而且更容易與其餘的開發環境集成。對於初學者來講,也能更好地學習Tomcat的啓動過程。webapp

圖1-7  Tomcat 6.x的下載頁面工具

單擊「zip」連接,下載apache-tomcat-6.0.16.zip。使用WinZip或WinRAR等解壓縮工具將apache-tomcat-6.0.16.zip解壓縮到指定的驅動器和目錄中。筆者是在D:/OpenSource目錄下直接解壓,產生了目錄apache-tomcat-6.0.16,解壓後的文件夾和文件存放於D:/OpenSource/apache-tomcat-6.0.16目錄下。

Tomcat 6.x須要的J2SE版本最低爲5.0。Tomcat 6.x再也不須要JDK的支持,只須要安裝JRE就能夠了,這是由於Tomcat 6.x使用Eclipse JDT Java編譯器來編譯JSP頁面,而再也不使用JDK中的編譯器。Eclipse JDT Java編譯器已經綁定到Tomcat的發行版中。若是你使用Tomcat 5.0.x或者Tomcat 5.5.x,那麼仍然須要安裝JDK。

1.5.1  Tomcat的目錄結構

Tomcat安裝後的目錄層次結構如圖1-8所示。

圖1-8  Tomcat 6.0.16目錄層次結構

各目錄的用途如表1-1所示。

表1-1  Tomcat的目錄結構及其用途

 

   

/bin

存放啓動和關閉Tomcat的腳本文件

/conf

存放Tomcat服務器的各類配置文件,其中包括server.xmlTomcat的主要配置文件)、tomcat-users.xmlweb.xml等配置文件

/lib

存放Tomcat服務器和全部Web應用程序須要訪問的JAR文件

/logs

存放Tomcat的日誌文件

/temp

存放Tomcat運行時產生的臨時文件

/webapps

當發佈Web應用程序時,一般把Web應用程序的目錄及文件放到這個目錄下

/work

TomcatJSP生成的Servlet源文件和字節碼文件放到這個目錄下

從表1-1中能夠看到,lib目錄下存放的JAR文件能夠被全部的Web應用程序所訪問,若是多個Web應用程序須要訪問相同的JAR文件,那麼能夠將這些JAR文件放到Tomcat的lib目錄下。此外,對於後面將要介紹的Java Web應用程序,在它的WEB-INF目錄下,也能夠創建lib子目錄,在lib子目錄下能夠存放各類JAR文件,這些JAR文件只能被當前Web應用程序所訪問。

Tomcat 6.x修改了5.x版本的目錄結構,刪除了common、server和shared目錄,將common/lib、server/lib和shared/lib中的JAR文件統一放到了lib目錄下。

1.5.2  運行Tomcat

在Tomcat安裝目錄下的bin子目錄中,有一些批處理文件(以.bat做爲後綴名的文件),其中的startup.bat就是啓動Tomcat的腳本文件,用鼠標雙擊這個文件,你將看到一個窗口一閃而過,以後就什麼也沒有了,這說明Tomcat的啓動出錯了。

單擊Windows的【開始】菜單,選擇【全部程序】→【附件】→【命令提示符】,打開「命令提示符」窗口,進入Tomcat的bin目錄中,在「命令提示符」窗口中輸入startup,你將看到如圖1-9所示的畫面。

圖1-9  運行Tomcat提示出錯信息

筆者之前碰到過不少學員,在初次運行Tomcat時,看到如圖1-9所示的信息就不知所措了。有的學員之前還配置過Tomcat,可是再次使用的時候,因爲忘記了上次是如何配置的,一樣感受無從下手。

咱們在學習軟件開發時,必定要養成查看錯誤提示信息,進而根據錯誤提示解決問題的良好習慣。筆者第一次配置Tomcat時,就是根據錯誤提示信息一步一步配置成功的。當看到錯誤信息時,首先不要慌張和無所適從,要仔細看清楚錯誤提示,弄明白錯誤的緣由。

圖1-9中的錯誤提示信息,已經很明確地告訴你了錯誤的緣由。咱們看圖1-9中的錯誤信息,以下所示:

Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

At least one of these environment variable is needed to run this program

這個錯誤信息是告訴你要配置JAVA_HOME或者JRE_HOME環境變量,以便Tomcat可以找到JDK或JRE的安裝目錄。從環境變量的名字,咱們能夠猜想到JAVA_HOME是配置JDK的安裝目錄,JRE_HOME是配置JRE的安裝目錄。

因爲Tomcat 6.x再也不須要JDK的支持,因此才新增了JRE_HOME環境變量,對於6.0以前的Tomcat版本,沒有JRE_HOME環境變量,只能配置JAVA_HOME環境變量。

下面,咱們在Windows XP Service Pack 2操做系統下設置JAVA_HOME環境變量,步驟以下。

① 右鍵單擊「個人電腦」,選擇【屬性】,出現如圖1-10所示的畫面。

② 單擊「高級」選項卡,選擇「環境變量(N)」,如圖1-11和圖1-12所示。

③ 在「系統變量」下方單擊「新建」按鈕。在「變量名」中輸入「JAVA_HOME」,在變量值中輸入JDK所在的目錄「D:/Java/jdk1.6.0_05」(讀者能夠根據本身機器上JDK的安裝目錄來修改這個值),而後單擊「肯定」按鈕,如圖1-13所示。

       

圖1-10 「個人電腦」屬性                                          圖1-11 「高級」選項卡

④ 最後在「環境變量」對話框上單擊「肯定」按鈕,結束JAVA_HOME環境變量的設置。

咱們再一次轉到Tomcat的bin目錄下,用鼠標雙擊startup.bat文件,能夠看到如圖1-14所示的啓動信息。

注意圖1-14中圓角矩形框中的文本,能夠看到啓動的是Tomcat 6.0.16。

               

圖1-12 「環境變量」對話框                                  圖1-13  新建JAVA_HOME系統變量

圖1-14  Tomcat啓動信息

而後,打開瀏覽器,在地址欄中輸入http://localhost:8080/(localhost表示本地機器,8080是Tomcat默認監聽的端口號),將出現如圖1-15所示的Tomcat頁面。

圖1-15  Tomcat的默認主頁

注意圖1-15中鼠標(小手形狀)指向的連接——「Tomcat Documentation」,單擊這個連接將進入Tomcat的文檔頁面,有關Tomcat的幫助信息能夠在文檔頁面中找到;讀者也能夠直接訪問Tomcat的文檔,文檔首頁的位置是Tomcat安裝目錄下的webapps/docs/index.html。若是要關閉Tomcat服務器,能夠用鼠標雙擊Tomcat bin目錄下的shutdown.bat文件。

若是你機器上的Tomcat啓動失敗,有多是由於TCP的8080端口被其餘應用程序所佔用,若是你知道是哪個應用程序佔用了8080端口,那麼先關閉這個程序。若是你不知道或者不想關閉佔用8080端口的應用程序,那麼你能夠修改Tomcat默認監聽的端口號。

前面介紹了,Tomcat安裝目錄下的conf子目錄用於存放Tomcat服務器的各類配置文件,其中的server.xml是Tomcat的主要配置文件,這是一個格式良好的XML文檔,在這個文件中能夠修改Tomcat默認監聽的端口號。用UltraEdit(你能夠用「記事本」程序或其餘的文本編輯工具)打開server.xml,找到修改8080端口的地方。讀者也許要問了,「這個配置文件,我都不熟悉,怎麼知道在哪裏修改端口號呢?」對於初次接觸server.xml的讀者,確實不瞭解這個文件的結構,可是咱們應該有一種開放的思路,既然Tomcat的監聽端口號是在server.xml中配置,那麼只要咱們在這個文件中查找「8080」這樣的數字字符序列,不就能找到修改端口號的地方了嗎!在UltraEdit中,同時按下鍵盤上的「Ctrl」和「F」鍵,出現如圖1-16所示的「查找」對話框。

圖1-16  UltraEdit的查找對話框

而後在「查找」文本框中輸入「8080」,單擊「下一個」按鈕。重複這一過程,直到找到如圖1-17所示的在server.xml中配置端口號位置。

圖1-17  server.xml中配置端口號的位置

找到後,若是咱們不能肯定此處就是修改端口號的地方,也沒有關係,能夠先嚐試着修改一下端口號,而後啓動Tomcat。若是啓動成功而且可以在修改後的端口號上訪問到Tomcat的默認主頁,那就證實了咱們修改的地方是正確的。學習時,咱們應該養成這種探索並不斷實驗的精神。在這裏,咱們能夠修改端口號爲8000(讀者能夠根據本身機器的配置選擇一個端口號),而後保存。再次啓動Tomcat,在Tomcat啓動完畢後,打開瀏覽器,在地址欄中輸入http://localhost:8000/(讀者根據本身設置的端口號作相應的修改),就能夠看到Tomcat的默認主頁了。關閉Tomcat服務器時,執行bin目錄下的shutdown.bat文件。

若是你想將Tomcat安裝爲Windows的服務,以便在Windows系統啓動時即運行Tomcat,那麼能夠打開「命令提示符」窗口,進入Tomcat安裝目錄下的bin子目錄,而後執行下面的命令:

service.bat install

這樣將會在Windows系統中安裝一個Tomcat6服務,要啓動這個服務,能夠執行下面的命令:

net start Tomcat6

要中止Tomcat6服務,能夠執行下面的命令:

net stop Tomcat6

要刪除Tomcat6服務,能夠執行下面的命令:

service.bat remove

要提醒讀者的是:net命令是Windows自帶的命令,而service.bat是Tomcat提供的批處理文件。

1.5.3  Tomcat啓動分析

在本節中咱們將經過對Tomcat啓動過程的分析,來幫助讀者更好地理解和掌握Tomcat。

用文本編輯工具打開用於啓動Tomcat的批處理文件startup.bat,仔細閱讀。在這個文件中,首先判斷CATALINA_HOME環境變量是否爲空,若是爲空,就將當前目錄設爲CATALINA_HOME的值。接着判斷當前目錄下是否存在bin/catalina.bat,若是文件不存在,將當前目錄的父目錄設爲CATALINA_HOME的值。根據筆者機器上Tomcat安裝目錄的層次結構,最後CATALINA_HOME的值被設爲Tomcat的安裝目錄。若是環境變量CATALINA_HOME已經存在,則經過這個環境變量調用bin目錄下的「catalina.bat start」命令。經過這段分析,咱們瞭解到兩個信息,一是Tomcat啓動時,須要查找CATALINA_HOME這個環境變量,若是在Tomcat的bin目錄下調用startup.bat,Tomcat會自動並正確設置CATALINA_HOME;二是執行startup.bat命令,實際上執行的是「catalina.bat start」命令。

若是咱們不是在Tomcat的bin目錄做爲當前目錄時調用startup.bat,就會出現如圖1-18所示的錯誤信息(在bin目錄的父目錄下調用除外)。

圖1-18  在其餘目錄下啓動Tomcat出錯

若是要想在任意目錄下都能啓動Tomcat,就須要設置CATALINA_HOME環境變量,你能夠將CATALINA_HOME添加到Windows XP系統的環境變量中,其值就是Tomcat的安裝目錄。在筆者的機器上,Tomcat的安裝目錄是D:/OpenSource/apache-tomcat-6.0.16。添加CATALINA_HOME環境變量的過程和前述添加JAVA_HOME環境變量的過程是同樣的。若是你不想在系統的環境變量中添加,也能夠直接在startup.bat文件中進行設置。下面是在startup.bat文件中設置CATALINA_HOME後的文件片斷:

rem $Id: startup.bat 562770 2007-08-04 22:13:58Z markt $

rem --------------------------------------------------------------------

set CATALINA_HOME=D:/OpenSource/apache-tomcat-6.0.16

rem Guess CATALINA_HOME if not defined

set CURRENT_DIR=%cd%

if not "%CATALINA_HOME%" == "" goto gotHome

set CATALINA_HOME=%CURRENT_DIR%

注意以粗體顯示的這句代碼的做用就是設置CATALINA_HOME環境變量,在它的下面是判斷CATALINA_HOME是否爲空的語句。若是找不許位置,乾脆將設置CATALINA_HOME環境變量的這句代碼放到文件的第一行。JAVA_HOME環境變量也能夠採用一樣的方式進行設置。不過,若是要在其餘目錄下利用shutdown.bat來關閉Tomcat服務器,則須要在shutdown.bat文件中設置CATALINA_HOME和JAVA_HOME這兩個環境變量,設置變量的位置和startup.bat文件同樣,都是在判斷CATALINA_HOME是否爲空以前。固然,爲了一勞永逸,避免重裝Tomcat後還要進行設置(須要是同一版本的Tomcat安裝在同一位置),咱們最好仍是將CATALINA_HOME和JAVA_HOME這兩個環境變量添加到Windows XP系統的環境變量中。

有的讀者可能會對Tomcat安裝目錄的環境變量的名字是CATALINA_HOME而感到奇怪,按照其餘環境變量的設置來看,JAVA_HOME表示JDK的安裝目錄,那麼應該用TOMCAT_HOME來表示Tomcat的安裝目錄,可爲何要使用CATALINA_HOME呢?實際上,在Tomcat 4之前,用的就是TOMCAT_HOME來表示Tomcat的安裝目錄,在Tomcat 4之後,採用了新的Servlet容器Catalina,因此環境變量的名字也改成了CATALINA_HOME。

在Windows系統下環境變量的名字是與大小寫無關的,也就是說,JAVA_HOME和java_home是同樣的。

瞭解了startup.bat文件之後,咱們再來看看真正負責啓動Tomcat服務器的catalina.bat文件。經過分析catalina.bat文件,咱們發現它還調用了一個文件setclasspath.bat。在setclasspath.bat文件中,它檢查JAVA_HOME環境變量是否存在,並經過JAVA_HOME環境變量,找到java.exe,用於啓動Tomcat。在這個文件中,還設置了其餘的一些變量,表明調用Java的標準命令,有興趣的讀者能夠自行分析一下這個文件。在執行完setclasspath.bat以後,catalina.bat剩下的部分就開始了Tomcat服務器的啓動進程。

直接執行catalina.bat時,須要帶上命令行的參數。讀者能夠在命令提示符窗口下,執行catalina.bat,就會打印出catalina.bat命令的各類參數及其含義,如圖1-19所示。

圖1-19  catalina.bat的各參數信息

其中經常使用的參數是start、run和stop。參數start表示在一個單獨的窗口中啓動Tomcat服務器,參數run表示在當前窗口中啓動Tomcat服務器;參數stop表示關閉Tomcat服務器。咱們執行startup.bat,實際上執行的就是「catalina.bat start」命令;執行shutdown.bat,實際上執行的是「catalina.bat stop」命令。「catalina.bat run」命令有時候是很是有用的,特別是當咱們須要查看Tomcat的出錯信息時。

在開發JSP程序時,常常會碰到本身機器上的8080端口號被別的應用程序佔用,或者在配置server.xml時出現錯誤,當經過startup.bat(至關於執行「catalina.bat start」)啓動Tomcat服務器時,若是啓動過程當中出現嚴重錯誤,因爲是在單獨的窗口中啓動Tomcat服務器,因此一旦啓動失敗,命令提示符窗口就自動關閉了,程序運行中輸出的出錯信息也隨之消失,並且沒有任何的日誌信息,這就使得咱們沒有辦法找出錯誤緣由。當出現錯誤時,咱們能夠換成「catalina.bat run」命令再次啓動,一旦啓動失敗,僅僅是Tomcat服務器異常終止,可是在當前的命令提示符窗口下仍然保留了啓動時的出錯信息,這樣咱們就能夠查找啓動失敗的緣由了。