tomcat安装启动配置
服務(wù)器:
服務(wù)器的概念非常的廣泛,它可以指代一臺(tái)特殊的計(jì)算機(jī)(相比普通計(jì)算機(jī)運(yùn)行更快、負(fù)載更高、價(jià)格更貴),也可以指代用于部署網(wǎng)站的應(yīng)用。我們這里說(shuō)的服務(wù)器,其實(shí)是web服務(wù)器,或者應(yīng)用服務(wù)器。它本質(zhì)就是一個(gè)軟件,一個(gè)應(yīng)用,通過(guò)軟硬件的結(jié)合從而達(dá)到發(fā)布應(yīng)用(工程)的作用,讓用戶可以通過(guò)瀏覽器訪問(wèn)我們的應(yīng)用。
常見(jiàn)的應(yīng)用服務(wù)器,請(qǐng)看下表:
- 重量級(jí):重量級(jí)服務(wù)器實(shí)現(xiàn)了所有的JavaEE規(guī)范
- 輕量級(jí):輕量級(jí)服務(wù)器實(shí)現(xiàn)了部分JavaEE規(guī)范
| weblogic | 實(shí)現(xiàn)了javaEE規(guī)范,重量級(jí)服務(wù)器,又稱為javaEE容器 |
| websphereAS | 實(shí)現(xiàn)了javaEE規(guī)范,重量級(jí)服務(wù)器。 |
| JBOSSAS | 實(shí)現(xiàn)了JavaEE規(guī)范,重量級(jí)服務(wù)器。免費(fèi)的。 |
| Tomcat | 實(shí)現(xiàn)了jsp/servlet規(guī)范,是一個(gè)輕量級(jí)服務(wù)器,開(kāi)源免費(fèi)。 |
Tomcat:
Tomcat是Apache軟件基金會(huì)的一個(gè)核心項(xiàng)目,由Apache、Sun和其它公司共同開(kāi)發(fā)而成的。由于有了Sun公司的參與支持,最新的Servlet、JSP規(guī)范總是能在Tomcat中得到體提現(xiàn),因?yàn)門omcat技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi),所以深受Java愛(ài)好者并得到了部分軟件開(kāi)發(fā)商的認(rèn)可,已成為目前開(kāi)發(fā)企業(yè)JavaWeb應(yīng)用的最佳Servlet容器選擇之一。
Tomcat各版本的技術(shù)支持:
| 6.0 | 3.1 | 5.0 | TBD | TBD | 10.1.x | 10.1.0-M6 (alpha) | 11 and later |
| 5.0 | 3.0 | 4.0 | 2.0 | 2.0 | 10.0.x | 10.0.12 | 8 and later |
| 4.0 | 2.3 | 3.0 | 1.1 | 1.1 | 9.0.x | 9.0.54 | 8 and later |
| 3.1 | 2.3 | 3.0 | 1.1 | 1.1 | 8.5.x | 8.5.72 | 7 and later |
| 3.1 | 2.3 | 3.0 | 1.1 | N/A | 8.0.x (superseded) | 8.0.53 (superseded) | 7 and later |
| 3.0 | 2.2 | 2.2 | 1.1 | N/A | 7.0.x (archived) | 7.0.109 (archived) | 6 and later(7 and later for WebSocket) |
| 2.5 | 2.1 | 2.1 | N/A | N/A | 6.0.x (archived) | 6.0.53 (archived) | 5 and later |
| 2.4 | 2.0 | N/A | N/A | N/A | 5.5.x (archived) | 5.5.36 (archived) | 1.4 and later |
| 2.3 | 1.2 | N/A | N/A | N/A | 4.1.x (archived) | 4.1.40 (archived) | 1.3 and later |
| 2.2 | 1.1 | N/A | N/A | N/A | 3.3.x (archived) | 3.3.2 (archived) | 1.1 and later |
Mac版本下載:
下載地址:http://tomcat.apache.org/
啟動(dòng)Tomcat:
- 下載好了解壓到指定路徑,并進(jìn)到bin目錄下
- 打開(kāi)終端,把bin目錄拖到cd后面
啟動(dòng):
- Windows啟動(dòng):startup.bat Windows
- Linux/Mac啟動(dòng):./startup.sh
停止:
- Windows停止:shutdown.bat Windows
- Linux/Mac停止:./shutdown.sh
訪問(wèn)http://localhost:8080/可以看到這樣的就說(shuō)明啟動(dòng)了
自己部署項(xiàng)目的話就放在在webapps目錄下瀏覽器訪問(wèn)對(duì)應(yīng)的路徑就可以了
為什么需要寫8080才可以訪問(wèn)
- 正常情況下訪問(wèn)一個(gè)網(wǎng)站都是只要輸入域名就可以了,但是Tomcat提供的是http服務(wù),而http的端口默認(rèn)是80,所以為了和http的端口貼近,就默認(rèn)是8080了,而且在Linux里不是root用戶的話是不能使用1024以內(nèi)的端口號(hào)的
Linux版本下載與安裝:
- 下載Tomcat,和Mac版一樣,用tar.gz的上傳到Linux
- 在crt上 使用 alt+p,將windows上的軟件拖進(jìn)去即可(root目錄)
Tomcat目錄結(jié)構(gòu):
Tomcat異常:
啟動(dòng)問(wèn)題:
- 原因:沒(méi)有配置環(huán)境變量。
- 解決辦法:配置上JAVA_HOME環(huán)境變量
- 原因:端口被占用
- 解決辦法:修改conf文件下的server.xml配置文件修改端口號(hào),(修改69行的port=”8080″)修改完再啟動(dòng)
- 原因:Tomcat中部署著很多項(xiàng)目,每次啟動(dòng)這些項(xiàng)目都會(huì)啟動(dòng)。而這些項(xiàng)目中有啟動(dòng)報(bào)異常的。
解決辦法: - 找到報(bào)異常的項(xiàng)目,就把它從發(fā)布目錄中移除。
- 不能確定報(bào)異常的項(xiàng)目,就重新解壓一個(gè)新的Tomcat。
- 原因:可能和你的控制臺(tái)的字符集不匹配
解決辦法: - 打開(kāi)conf下的logging.properties的配置文件,47行的UTF-8改成GBK,或者GBK改成UTF-8
IDEA集成Tomcat:
新建項(xiàng)目就可以使用Tomcat了
創(chuàng)建完是這樣的
URL:自己隨便寫,把下面兩個(gè)改為更新和資源便于后續(xù)更新時(shí)不需要重啟服務(wù)器
都配置完畢,就可以啟動(dòng)Tomcat了
Tomcat報(bào)錯(cuò):java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet
報(bào)錯(cuò)內(nèi)容如下,
解決:
1、更換Tomcat版本,我是10版本換成了9就沒(méi)問(wèn)題了,不知道為什么。
2、網(wǎng)上說(shuō)要加依賴,這個(gè)沒(méi)試,
Tomcat部署項(xiàng)目找不到war包:
在我們啟動(dòng)項(xiàng)目時(shí)發(fā)現(xiàn)tomcat配置里找不到war包,這個(gè)時(shí)候啟動(dòng)就會(huì)有問(wèn)題。把下面的操作跟著做一遍即可。
1、首先找到項(xiàng)目結(jié)構(gòu)
2、找到工件,點(diǎn)擊添加
3、在工件中添加web應(yīng)用程序,選擇基于模塊
然后會(huì)彈出彈框,點(diǎn)擊確定
4、這個(gè)時(shí)候的配置如圖所示,點(diǎn)擊確定即可
5、回到Tomat配置文件中,點(diǎn)擊添加工件就會(huì)出現(xiàn)war包了
點(diǎn)擊確定,到這里就配置好了
JavaWeb應(yīng)用目錄結(jié)構(gòu)詳解
Tomcat創(chuàng)建好以后會(huì)自動(dòng)創(chuàng)建幾個(gè)目錄
- src:存放源代碼的
- web:存在項(xiàng)目相關(guān)資源的(html、css、js、jsp、圖片等)
- WEB-INF:存放相關(guān)配置的(web.xml等),如果有web.xml或者.class文件時(shí),該目錄必須存在,且嚴(yán)格區(qū)分大小寫。該目錄下的資源,客戶端是無(wú)法直接訪問(wèn)的。目錄中內(nèi)容如下:
- classes:web應(yīng)用的class文件(加載順序:我們的class,lib目錄中的jar包,tomcat的lib目錄中的jar包。優(yōu)先級(jí)依次降低)
- lib:web應(yīng)用所需的jar包(tomcat的lib目錄下jar為所有應(yīng)用共享)
- web.xml:web應(yīng)用的主配置文件
Tomcat啟動(dòng)報(bào)錯(cuò):java.net.BindException
報(bào)錯(cuò)內(nèi)容:沒(méi)復(fù)制完,當(dāng)時(shí)還有別的內(nèi)容,反正一般起不來(lái)基本都是端口沖突的問(wèn)題,改端口或者kill就行了。有時(shí)候是因?yàn)閯偘惭bTomcat然后啟動(dòng)訪問(wèn)8080測(cè)試,當(dāng)時(shí)忘記關(guān)閉,然后又去IDEA集成Tomcat,就會(huì)遇到?jīng)_突的問(wèn)題。
org.apache.catalina.LifecycleException: 協(xié)議處理程序初始化失敗 at org.apache.catalina.connector.Connector.initInternal(Connector.java:1059) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.core.StandardService.initInternal(StandardService.java:556) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:1012) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.startup.Catalina.load(Catalina.java:747) at org.apache.catalina.startup.Catalina.load(Catalina.java:769) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:305) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:475)Tomcat更改端口號(hào):
Tomcat服務(wù)器主配置文件中配置著訪問(wèn)端口,它在配置文件中寫的值是:8080。但是它不是Tomcat的默認(rèn)端口。我們此處說(shuō)的默認(rèn)端口是,當(dāng)使用默認(rèn)值的時(shí)候,端口號(hào)可以省略。Tomcat的默認(rèn)端口是80。
通過(guò)在主配置文件中添加標(biāo)簽實(shí)現(xiàn),在conf的目錄下有一個(gè)server.xml的配置文件,如果想改端口號(hào)就找到這個(gè)
<!-- 改成80端口號(hào)的話就不需要輸入localhost:8080了,只需要輸入localhost就可以發(fā)布正式項(xiàng)目的時(shí)候都是需要改為80端口號(hào)的 --><Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />Tomcat配置虛擬目錄:
作用:可以發(fā)布任意目錄下的項(xiàng)目
在server.xml的元素中加一個(gè)元素。
? path:訪問(wèn)資源虛擬目錄名稱 。URL名稱可以隨便起,但是必須在前面加上一個(gè)/
? docBase:項(xiàng)目真實(shí)存在的路徑。
寫一個(gè)獨(dú)立的xml文件,該文件名可以隨便起。在文件內(nèi)寫一個(gè)元素。該文件要放在Tomcat目錄中的conf\Catalina\localhost\目錄下。需要注意的是,在使用了獨(dú)立的配置文件之后,訪問(wèn)資源URI就變成了/+文件的名稱。而Context的path屬性就失效了
Tomcat編輯虛擬主機(jī):
編輯server.xml配置文件,找到在<Engine>元素在元素中添加一個(gè)
<!-- 會(huì)在localhost訪問(wèn)的時(shí)候,會(huì)到webapps下找到webdemo這個(gè)項(xiàng)目 --><Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"Context path ="" docBase="webdemo"></Host>其中:
- name:指定主機(jī)的名稱
- appBase:當(dāng)前主機(jī)的應(yīng)用發(fā)布目錄
- unparkWARs:true啟動(dòng)時(shí)是否自動(dòng)解壓war包
- autoDeploy:是否自動(dòng)發(fā)布
- docBase:項(xiàng)目的名稱
改完server.xml后還要修改電腦的hosts文件,加上host中name的值,如果是配置域名的話就把name的值改為域名地址,然后下面綁定域名就可以了
127.0.0.1 localhostTomcat Server處理一個(gè)http請(qǐng)求的過(guò)程:
假設(shè)來(lái)自客戶的請(qǐng)求為:http://localhost:8080/wsota/wsota_index.jsp
請(qǐng)求被發(fā)送到本機(jī)端口8080,被在那里偵聽(tīng)的Coyote HTTP/1.1 Connector獲得
Connector把該請(qǐng)求交給它所在的Service的Engine來(lái)處理,并等待來(lái)自Engine的回應(yīng)
Engine獲得請(qǐng)求localhost/wsota/wsota_index.jsp,匹配它所擁有的所有虛擬主機(jī)Host
Engine匹配到名為localhost的Host(即使匹配不到也把請(qǐng)求交給該Host處理,因?yàn)樵揌ost被定義為該Engine的默認(rèn)主機(jī))
localhost Host獲得請(qǐng)求/wsota/wsota_index.jsp,匹配它所擁有的所有Context
Host匹配到路徑為/wsota的Context(如果匹配不到就把該請(qǐng)求交給路徑名為""的Context去處理)
path="/wsota"的Context獲得請(qǐng)求/wsota_index.jsp,在它的mapping table中尋找對(duì)應(yīng)的servlet
Context匹配到URL PATTERN為*.jsp的servlet,對(duì)應(yīng)于JspServlet類
構(gòu)造HttpServletRequest對(duì)象和HttpServletResponse對(duì)象,作為參數(shù)調(diào)用JspServlet的doGet或doPost方法
Context把執(zhí)行完了之后的HttpServletResponse對(duì)象返回給Host
Host把HttpServletResponse對(duì)象返回給Engine
Engine把HttpServletResponse對(duì)象返回給Connector
Connector把HttpServletResponse對(duì)象返回給客戶browser
startup.bat詳解:
if "%OS%" == "Windows_NT" setlocal //判斷當(dāng)前系統(tǒng)是否是window系統(tǒng)rem --------------------------------------------------------------------------- //rem 是注釋(下同)rem Start script for the CATALINA Serverremrem $Id: startup.bat 302918 2004-05-27 18:25:11Z yoavs $rem ---------------------------------------------------------------------------rem Guess CATALINA_HOME if not definedset CURRENT_DIR=%cd% //設(shè)置當(dāng)前目錄if not "%CATALINA_HOME%" == "" gotogotHome //如果設(shè)置了CATALINA_HOME環(huán)境變量 ,就直接到下面的gotHome處set CATALINA_HOME=%CURRENT_DIR% //如果沒(méi)有設(shè)置CATALINA_HOME,就設(shè)置CATALINA_HOME為當(dāng)前目錄(其實(shí)這里她假設(shè)你進(jìn)入tomcat的安裝目錄)if exist "%CATALINA_HOME%\bin\catalina.bat" gotookHome//判斷一下catalina.bat是否找到了,找到了就直接到下面的gotHome處cd .. //這里他是假設(shè)你開(kāi)始已經(jīng)進(jìn)入到了tomcat的bin目錄,所以就退到上一級(jí)目錄set CATALINA_HOME=%cd%//現(xiàn)在再設(shè)置CATALINA_HOME為tomcat的安裝目錄cd %CURRENT_DIR% //這里是進(jìn)入dos的當(dāng)前目錄:gotHomeif exist "%CATALINA_HOME%\bin\catalina.bat" gotookHome //再次判斷catalina.bat是否找到了,找到了就直接到下面的okHome處,沒(méi)有的話,就只能提示你啦!echo The CATALINA_HOME environment variable is not defined correctlyecho This environment variable is needed to run this programgoto end:okHomeset EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat //設(shè)置要執(zhí)行的文件rem Check that target executable existsif exist "%EXECUTABLE%" gotookExec //再次判斷catalina.bat是否找到了,找到了就直接到下面的okExec處,沒(méi)有的話,就提示。echo Cannot find %EXECUTABLE%echo This file is needed to run this programgoto end:okExecrem Get remaining unshifted command line arguments and save them in theset CMD_LINE_ARGS= //這里是設(shè)置參數(shù):setArgsif ""%1""=="""" gotodoneSetArgs //判斷參數(shù)是否加入完成set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 //將參數(shù)組成一行,接在后面shiftgotosetArgs:doneSetArgscall "%EXECUTABLE%" start %CMD_LINE_ARGS% //執(zhí)行catalina.bat,最好將這行改為:echo "%EXECUTABLE%" start %CMD_LINE_ARGS% 以便閱讀、理解本文件的作用:end//這個(gè)批處理文件,主要是正確的找到catalina.bat,并且執(zhí)行。當(dāng)把tomcat解壓到一個(gè)地方時(shí),通常是設(shè)置一個(gè)CATALINA_HOME的環(huán)境變量,執(zhí)行這個(gè)文件時(shí),就很容易找到 catalina.bat 如果沒(méi)有設(shè)置CATALINA_HOME的環(huán)境變量,那么你需要在dos中進(jìn)入tomcat的安裝目錄,或者bin...子目錄,再執(zhí)行這個(gè)文件,如果在其他目錄,將會(huì)出現(xiàn)提示找不到文件。修改startup.bat,使其不依賴JAVA_HOM和CATALINA_HOME變量的方法:SET JAVA_HOME=JDK目錄 SET CATALINA_HOME=解壓后Tomcat的目錄例如:set JAVA_HOME=D:\Program Files\java\jdk1.6.0_21set CATALINA_HOME=D:\Program Files\apache-tomcat-6.0.29web.xml詳解:
<web-app> <display-name></display-name>定義了WEB應(yīng)用的名字 <description></description> 聲明WEB應(yīng)用的描述信息 <context-param></context-param> context-param元素聲明應(yīng)用范圍內(nèi)的初始化參數(shù)。 <filter></filter> 過(guò)濾器元素將一個(gè)名字與一個(gè)實(shí)現(xiàn)javax.servlet.Filter接口的類相關(guān)聯(lián)。 <filter-mapping></filter-mapping> 一旦命名了一個(gè)過(guò)濾器,就要利用filter-mapping元素把它與一個(gè)或多個(gè)servlet或JSP頁(yè)面相關(guān)聯(lián)。 <listener></listener>servlet API的版本2.3增加了對(duì)事件監(jiān)聽(tīng)程序的支持,事件監(jiān)聽(tīng)程序在建立、修改和刪除會(huì)話或servlet環(huán)境時(shí)得到通知.Listener元素指出事件監(jiān)聽(tīng)程序類。 <servlet></servlet> 在向servlet或JSP頁(yè)面制定初始化參數(shù)或定制URL時(shí),必須首先命名servlet或JSP頁(yè)面。Servlet元素就是用來(lái)完成此項(xiàng)任務(wù)的。 <servlet-mapping></servlet-mapping> 服務(wù)器一般為servlet提供一個(gè)缺省的URL:http://host/webAppPrefix/servlet/ServletName。 但是,常常會(huì)更改這個(gè)URL,以便servlet可以訪問(wèn)初始化參數(shù)或更容易地處理相對(duì)URL。在更改缺省URL時(shí),使用servlet-mapping元素。 <session-config></session-config> 如果某個(gè)會(huì)話在一定時(shí)間內(nèi)未被訪問(wèn),服務(wù)器可以拋棄它以節(jié)省內(nèi)存。 可通過(guò)使用HttpSession的setMaxInactiveInterval方法明確設(shè)置單個(gè)會(huì)話對(duì)象的超時(shí)值,或者可利用session-config元素制定缺省超時(shí)值。 <mime-mapping></mime-mapping>如果Web應(yīng)用具有想到特殊的文件,希望能保證給他們分配特定的MIME類型,則mime-mapping元素提供這種保證。<welcome-file-list></welcome-file-list> 指示服務(wù)器在收到引用一個(gè)目錄名而不是文件名的URL時(shí),使用哪個(gè)文件。 <error-page></error-page> 在返回特定HTTP狀態(tài)代碼時(shí),或者特定類型的異常被拋出時(shí),能夠制定將要顯示的頁(yè)面。 <taglib></taglib> 對(duì)標(biāo)記庫(kù)描述符文件(Tag Libraryu Descriptor file)指定別名。此功能使你能夠更改TLD文件的位置,而不用編輯使用這些文件的JSP頁(yè)面。 <resource-env-ref></resource-env-ref>聲明與資源相關(guān)的一個(gè)管理對(duì)象。 <resource-ref></resource-ref> 聲明一個(gè)資源工廠使用的外部資源。<security-constraint></security-constraint> 制定應(yīng)該保護(hù)的URL。它與login-config元素聯(lián)合使用 <login-config></login-config> 指定服務(wù)器應(yīng)該怎樣給試圖訪問(wèn)受保護(hù)頁(yè)面的用戶授權(quán)。它與sercurity-constraint元素聯(lián)合使用。 <security-role></security-role>給出安全角色的一個(gè)列表,這些角色將出現(xiàn)在servlet元素內(nèi)的security-role-ref元素的role-name子元素中。分別地聲明角色可使高級(jí)IDE處理安全信息更為容易。 <env-entry></env-entry>聲明Web應(yīng)用的環(huán)境項(xiàng)。 <ejb-ref></ejb-ref>聲明一個(gè)EJB的主目錄的引用。 < ejb-local-ref></ ejb-local-ref>聲明一個(gè)EJB的本地主目錄的應(yīng)用。 </web-app>總結(jié)
以上是生活随笔為你收集整理的tomcat安装启动配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 并发编程概念、程序线程进程、线程同步、互
- 下一篇: Golang——HTTP编程请求和响应实