tomcat服務器總結

一、常用的web服務器

*Tomcat:Apache的產品,它是一個開源免費的web服務器。

web項目開發好之後,需要發佈(部署)到一臺服務器上,然後外界才能訪問。

二、tomcat目錄結構

bin:二進制文件存放的目錄,啓動文件,停止文件等。

conf:保存的tomcat服務器中的所有配置文件。

  • server.xml:配置整個服務器信息。例如修改端口號,添加虛擬主機等;

  • tomcatusers.xml:存儲tomcat用戶的文件,這裏保存的是tomcat的用戶名及密碼,以及用戶的角色信息。

  • web.xml:部署描述符文件,這個文件中註冊了很多MIME類型,即文檔類型。這些MIME類型是客戶端與服務器之間說明文檔類型的,如用戶請求一個html網頁,那麼服務器還會告訴客戶端瀏覽器響應的文檔是text/html類型的,這就是一個MIME類型。客戶端瀏覽器通過這個MIME類型就知道如何處理它了。當然是在瀏覽器中顯示這個html文件了。但如果服務器響應的是一個exe文件,那麼瀏覽器就不可能顯示它,而是應該彈出下載窗口才對。MIME就是用來說明文檔的內容是什麼類型的!

  • context.xml:對所有應用的統一配置,通常我們不會去配置它。

lib:tomcat運行javaee程序需要依賴的那些jar包。

logs:tomcat運行的時候的日誌信息。

temp:存放Tomcat的臨時文件,這個目錄下的東西可以在停止Tomcat後刪除!

webapps:存放web項目的目錄,其中每個文件夾都是一個項目;如果這個目錄下已經存在了目錄,那麼都是tomcat自帶的。項目。其中ROOT是一個特殊的項目,在地址欄中沒有給出項目目錄時,對應的就是ROOT項目。http://localhost:8080/examples,進入示例項目。其中examples就是項目名,即文件夾的名字。

work:運行時生成的文件,最終運行的文件都在這裏。通過webapps中的項目生成的!可以把這個目錄下的內容刪除,再次運行時會生再次生成work目錄。當客戶端用戶訪問一個JSP文件時,Tomcat會通過JSP生成Java文件,然後再編譯Java文件生成class文件,生成的java和class文件都會存放到這個目錄下。

server.xml詳講

(1)配置外部應用

  原來我們的項目放到webapps下,現在我放到外面,也希望tomcat可以找到它!

        第一種方式:conf/server.xml:打開server.xml文件,找到<Host>元素,在其中添加<Context>元素,代碼如下:

server.xml

 

  1. path:指定當前應用的名稱;

  2. docBase:指定應用的物理位置;

  3. 瀏覽器訪問路徑:。

第二種方式:conf/catalana/localhost:在該目錄下創建itcast_hello.xml文件,在該文件中編寫<Context>元素,代碼如下:

 

  1. 文件名:指定當前應用的名稱;

  2. docBase:指定應用的物理位置;

  3. 瀏覽器訪問路徑:http://localhost:8080/itcast_hello/index.html

(2)理解server.xml

  • <Server>:根元素,表示整個服務器的配置信息;

  • <Service>:<Server>的子元素,在<Server>中只能有一個<Service>元素,它表示服務;

  • <Connector>:<Service>的子元素,在<Service>中可以有N個<Connector>元素,它表示連接。

  • <Engine>:<Service>的子元素,在<Service>中只能有一<Engine>元素,該元素表示引擎,它是<Service>組件的核心。

  • <Host>:<Engine>的子元素,在<Engine>中可以有N個<Host>元素,每個<Host>元素表示一個虛擬主機。所謂虛擬主機就像是真的主機一樣,每個主機都有自己的主機名和項目目錄。例如<Host name=”localhost” appBase=”webapps”>表示主機名爲localhost,這個主機的項目存放在webapps目錄中。訪問這個項目下的主機時,需要使用localhost主機名,項目都存放在webapps目錄下。

  • <Context>:<Host>元素的子元素,在<Host>中可以有N個<Context>元素,每個<Context>元素表示一個應用。如果應用在<Host>的appBase指定的目錄下,那麼可以不配置<Context>元素,如果是外部應用,那麼就必須配置<Context>。如果要爲應用指定資源,也需要配置<Context>元素。

用戶發出一個請求:http://localhost:8080/hello/index.jsp。發現是http/1.1協議,而且還是8080端口,所以就交給了處理這一請求的“服務員(處理HTTP請求的<Connector>)”,“服務員”再把請求交給了“後廚(<Engine>)”,因爲請求是要一盤水煮魚,所以由“川菜區(<Host>)”負責,因爲“大老王師傅<Context>”做水煮魚最地道,所以由它完成。

  • <Connector>:關心請求中的http、和8080;

  • < Host>:關心localhost;

  • <Context>:關心hello

(3)映射虛擬主機

我們的目標是,在瀏覽器中輸出:http://www.itcast.cn就可以訪問我們的項目。

完成這一目標,我們需要做三件事:

  • 修改端口號爲80,這一點應該沒有問題吧;

  • 在本機上可以解析域名爲127.0.0.1,這需要修改C:\WINDOWS\system32\drivers\etc\hosts文件,添加對http://www.itcast.cn和127.0.01的綁定關係;

  • 在server.xml文件中添加一個<Host>(主機)。

  1. 修改端口號爲80

  1. 綁定http://www.itcast.cn和127.0.01的綁定關係

  1. server.xml文件中添加一個<Host>

  • name=”www.itcast.cn”:指定虛擬主機名爲www.itcast.cn

  • appBase=”F:/itcastapps”:指定當前虛擬主機的應用程序存放目錄爲F:/itcastapps。

  • 在itcastapps目錄下創建名爲ROOT的應用,因爲一個主機只可以有一個名爲ROOT的應用,名爲ROOT的應用在瀏覽器中訪問是可以不給出應用名稱。

現在訪問:http://www.itcast.cn看看是什麼頁面!

請注意,只有本機可以通過http://www.itcast.cn來訪問,而其他電腦不可以!

 

三、tomcat部署項目的三種方式

3.1 直接將web項目文件件拷貝到webapps目錄中

(1)將編寫並編譯好的web項目(注意要是編譯好的,如果是 eclipse,可以將項目打成 war 包放入),放入到 webapps 中

(2)啓動服務器

(3) 在瀏覽器輸入:http://localhost:8080/項目名/訪問的文件名

Tomcat的Webapps目錄是Tomcat默認的應用目錄,當服務器啓動時,會加載所有這個目錄下的應用。如果你想要修改這個默認目錄,可以在conf下的server.xml文件裏修改Host標籤裏的appBase值。

這個方法實際上和在IDE開發環境裏部署項目是一樣的。

 3.2修改 conf/server.xml 文件

打開tomcat下conf/server.xml,在<Host> </Host>標籤之間輸入項目配置信息

<Context path="/WebProject" docBase="D:/WebProject" reloadable="true" />

  path:瀏覽器訪問時的路徑名

  docBase:web項目的WebRoot所在的路徑,注意是WebRoot的路徑,不是項目的路徑。其實也就是編譯後的項目

  reloadble:設定項目有改動時,tomcat是否重新加載該項目

  ②、雙擊 startup.bat,啓動 tomcat 服務器,然後在瀏覽器輸入訪問的項目名稱路徑

3.3  在confCatalinalocalhost 目錄下添加xml配置文件

新建名爲jfinal_demo.xml文件,文件內容配置如下:

<Context path="/jfinal_demo" docBase="F:workjfinal_demoWebRoot" reloadable ="true" debug="0" privileged="true">

</Context>

Catalinalocalhost目錄tomcat下載下來默認是沒有的,首次啓動會自動創建,也可以手動創建;

配置中可以去掉path屬性,因爲訪問項目時的根路徑只取決於XML文件的名稱,如上述例子中,訪問該應用程序地址如下:http://localhost:8080/jfinal_demo ;

推薦使用第三種方式,因爲不需要修改tomcat默認配置,對Tomcat的侵入性最小,並且如果想取消部署,直接刪除xml配置文件即可。

以上幾種方法都經過本人測試,除此之外還有Tomcat熱部署的方式 。

總結:

①、第一種方法比較普通,但是我們需要將編譯好的項目重新 copy 到 webapps 目錄下,多出了兩步操作

②、第二種方法直接在 server.xml 文件中配置,但是從 tomcat5.0版本開始後,server.xml 文件作爲 tomcat 啓動的主要配置文件,一旦 tomcat 啓動後,便不會再讀取這個文件,因此無法再 tomcat 服務啓動後發佈 web 項目

③、第三種方法是最好的,每個項目分開配置,tomcat 將以\conf\Catalina\localhost 目錄下的 xml 文件的文件名作爲 web 應用的上下文路徑,而不再理會 <Context>中配置的 path 路徑,因此在配置的時候,可以不寫 path。

通常我們使用第三種方法

 

4、常見的問題

訪問html頁面404 查看war包下是否有該頁面

war包輸出路徑

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章