tomcat的安装与web项目部署到tomcat的使用

一、Tomcat8的下载

http://tomcat.apache.org/download-80.cgi

二、Tomcat配置

解压tomcat到当前的文件

TOMCAT环境变量配置

TOMCAT_HOME : D:\apache-tomcat-7.0.63
Path : %TOMCAT_HOME%\bin

以上即可,不影响tomcat的使用

详细的配置也可以配置为

(1)变量名: CATALINA_BASE     变量值: D:\apache-tomcat-7.0.63(Tomcat解压到的目录)
(2)变量名: CATALINA_HOME     变量值:D:\apache-tomcat-7.0.63
(3)变量名: CATALINA_TMPDIR     变量值:D:\apache-tomcat-7.0.63\temp

(4)变量名: Path    变量值:D:\apache-tomcat-7.0.63\bin

运行Tomcat8,“开始”->“运行”->输入cmd,在命令提示符中输入 startup.bat,之后会弹出tomcat命令框,输出启动日志;打开浏览器输入http://localhost:8080/ ,如果进入tomcat欢迎界面,那么恭喜你,配置成功。

三、Eclipse中集成tomcat

在eclipse的栏目菜单中点击window-preferences 搜索server 找到Runtime Envirement中 点击Add

选择对应tomcat的版本

找到解压的tomcat路径

创建 Servers,如果找不到 Servers,则选择 Window--->Show View--->Others,然后在弹出来的对话框中输入 Servers,点击OK就可以了看到了

在弹出来的对话框中,不用改变啥,直接,Next,然后  Finish 即可

  

双击建好的服务,打开如下界面:

  注意:如果你服务器里面有项目了,那必须清楚项目,才能打开进行修改

  

在打开的界面进行如下的修改操作,然后保存

   

服务器已经部署完成,那么接下来就是将项目部署到服务器上,启动服务器即可

右键项目名,选择 Run AS--->Run on Server,然后点击 Finish 即可运行项目了

  

注意:第 7 步一定要操作,然后服务器能正常启动,但是访问项目却会报 404 错误。这是因为eclipse将tomcat的项目发布目录(tomcat 目录中的webapp)重定向了,所以你会发现在tomcat安装目录下的webapp目录里面找不到你的项目文件

tomcat 服务器启动时做的工作

  ①、加载 web.xml 文件配置的过滤器,调用过滤器的 init()方法,初始化所有资源文件,主要包括 default.properties 文件,struts-default.xml,strut-plugin.xml,struts.xml 文件

Eclipse中tomcat service设置
选择window ----show view---services可以看到服务的面板
双击tomcat进入配置界面Service Locations(Specify the server path (i.e. catalina.base) and deploy path. Server must be published with no modules present to make changes.)选项变灰色无法更改配置。
若要更改,则先把tomcat下的所有項目移除。并右击,clean...之后方可设置。。。启动后将又变为黑色。

默认选项为:
Use workspace metadata(dose not modify Tomcat installation)
修改选项为:
Use Tomcat installation(takes control of Tomcat installation)

然后把Deploy path设置为TOMCAT_HOME/webapps就可以了
注:在进行此步骤时,TOMCAT7上部署的项目要全remove,然后启动,这时候ServerLocations才可以进行配置。
保存配置,重新启动TOMCAT即可。

Publishing 

Never publish automatically  从不自动发布项目

更改项目的根路径

四、单个项目引入tomcat

选择项目右键,build path ---Library

选择Add Library 选择server Runtime

选择上面已经配置的tomcat即可

查看项目中引入的tomcat服务

选择项目右键---properties--project Facets 点击最右边的Runtimes

五、tomcat部署项目

一、tomcat自动部署web应用

最典型的自动部署,就是当我们安装完Tomcat后,$TOMCAT_HOME/webapps目录下有如下文件夹:

通过eclipse将要部署的项目打包成war包,放到tomcat下的到wabapps目录下

将编写并编译好的web项目(注意要是编译好的,如果是 eclipse,可以将项目打成 war 包放入),放入到 webapps 中

tomcat的默认访问路径是ROOT,一般情况把war包改名为ROOT放在tomcat的webapp下

在bin目录下运行 startup.bat 启动项目即可。

当我们启动Tomcat后,可以使用http://localhost:8080/来访问Tomcat,其实访问的就是ROOT对应的Web应用;

也可以直接把.war文件放在webapps目录下运行 startup.bat即可

在浏览器输入:http://localhost:8080/项目名/访问的文件名

二、server.xml中静态部署Web应用

修改 conf/server.xml 文件

除了自动部署,我们也可以在server.xml中通过<context>元素静态部署Web应用。

①、打开tomcat下conf/server.xml,在<Host> </Host>标签之间输入项目配置信息

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

静态部署与自动部署是可以共存的。在实际应用中,并不推荐使用静态部署,因为server.xml 是不可动态重加载的资源,服务器一旦启动了以后,要修改这个文件,就得重启服务器才能重新加载。而自动部署可以在Tomcat运行时通过定期的扫描来实现,不需要重启服务器。

path:浏览器访问时的路径名

docBase:web项目的WebRoot所在的路径,注意是WebRoot的路径,不是项目的路径。其实也就是编译后的项目

reloadble:设定项目有改动时,tomcat是否重新加载该项目

双击 startup.bat,启动 tomcat 服务器,然后在浏览器输入访问的项目名称路径

注意:如果你配置的 path="/xx",那么访问的时候就是这样:

<Context>元素的配置

Context元素最重要的属性是docBase和path,此外reloadable属性也比较常用。

docBase指定了该Web应用使用的WAR包路径,或应用目录。可以给定绝对路径也可以给定相对路径。如应用HelloApp1的文件路径为/webapps/HelloApp1

path指定了访问该Web应用的上下文路径,当请求到来时,Tomcat根据Web应用的 path属性与URI的匹配程度来选择Web应用处理相应请求。例如,Web应用app1的path属性是”/app1”,Web应用app2的path属性是”/app2”,那么请求/app1/index.html会交由app1来处理;而请求/app2/index.html会交由app2来处理。如果一个Context元素的path属性为””,那么这个Context是虚拟主机的默认Web应用;当请求的uri与所有的path都不匹配时,使用该默认Web应用来处理。

但是,需要注意的是,在自动部署场景下(配置文件位于xmlBase中),不能指定path属性,path属性由配置文件的文件名、WAR文件的文件名或应用目录的名称自动推导出来。如扫描Web应用时,发现了xmlBase目录下的app1.xml,或appBase目录下的app1.WAR或app1应用目录,则该Web应用的path属性是”app1”。如果名称不是app1而是ROOT,则该Web应用是虚拟主机默认的Web应用,此时path属性推导为””。

reloadable属性指示tomcat是否在运行时监控在WEB-INF/classes和WEB-INF/lib目录下class文件的改动。如果值为true,那么当class文件改动时,会触发Web应用的重新加载。在开发环境下,reloadable设置为true便于调试;但是在生产环境中设置为true会给服务器带来性能压力,因此reloadable参数的默认值为false。

上面访问的url为http://localhost:8080/HelloApp1/

三、动态部署,tomcat 服务启动后还可以发布 web 项目

上面的方法没法再tomcat启动的时候发布项目

①、进入到 apache-tomcat-7.0.52\conf\Catalina\localhost 目录,新建一个 项目名.xml 文件

②、在 那个新建的 xml 文件中,增加下面配置语句(和上面的是一样的,但是不需要 path 配置,加上也没什么用)

③、在浏览器输入路径:localhost:8080/xml文件名/访问的文件名


用这种方式每个项目分开配置,tomcat 将以\conf\Catalina\localhost 目录下的 xml 文件的文件名作为 web 应用的上下文路径,而不再理会 <Context>中配置的 path 路径,因此在配置的时候,可以不写 path。

①、第一种方法比较普通,但是我们需要将编译好的项目重新 copy 到 webapps 目录下,多出了两步操作

②、第二种方法直接在 server.xml 文件中配置,但是从 tomcat5.0版本开始后,server.xml 文件作为 tomcat 启动的主要配置文件,一旦 tomcat 启动后,便不会再读取这个文件,因此无法再 tomcat 服务启动后发布 web 项目

③、第三种方法是最好的,每个项目分开配置,tomcat 将以\conf\Catalina\localhost 目录下的 xml 文件的文件名作为 web 应用的上下文路径,而不再理会 <Context>中配置的 path 路径,因此在配置的时候,可以不写 path。

通常我们使用第三种方法

四、tomcat配置多个服务

1) 修改Tomcat的端口号

Tomcat在使用的时候会用到三个端口号:

8005:Tomcat 监听的关闭端口;

8080:Tomcat的服务端口;

8009:接受其他服务器转发过来的请求;

修改了这三个端口号,就可以在一台主机上启动多个Tomcat了;

修改文件位置:apache-tomcat-7.0.77\conf\server.xml;

下面是具体的修改前后对比图:

通过在Server中配置多个Service服务,可以实现通过不同的端口号来访问同一台机器上部署的不同Web应用。

在server.xml中配置多服务的方法非常简单,分为以下几步:

(1)复制<Service>元素,放在当前<Service>后面。

(2)修改端口号:根据需要监听的端口号修改<Connector>元素的port属性;必须确保该端口没有被其他进程占用,否则Tomcat启动时会报错,而无法通过该端口访问Web应用。

以Win7为例,可以用如下方法找出某个端口是否被其他进程占用:netstat -aon|findstr "8081"发现8081端口被PID为2064的进程占用,tasklist |findstr "2064"发现该进程为FrameworkService.exe(这是McAfee杀毒软件的进程)。

(3)修改Service和Engine的name属性

(4)修改Host的appBase属性(如webapps2)

(5)Web应用仍然使用自动部署

(6)将要部署的Web应用(WAR包或应用目录)拷贝到新的appBase下。

以第一部分的server.xml为例,多个Service的配置如下:

1 <?xml version='1.0' encoding='utf-8'?>
 2 <Server port="8005" shutdown="SHUTDOWN">
 3   <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
 4   <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
 5   <Listener className="org.apache.catalina.core.JasperListener" />
 6   <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
 7   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
 8   <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
 9 
10   <GlobalNamingResources>
11     <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" />
12   </GlobalNamingResources>
13 
14   <Service name="Catalina">
15     <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
16     <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
17     <Engine name="Catalina" defaultHost="localhost">
18       <Realm className="org.apache.catalina.realm.LockOutRealm">
19         <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
20                resourceName="UserDatabase"/>
21       </Realm>
22 
23       <Host name="localhost"  appBase="/opt/project/webapps" unpackWARs="true" autoDeploy="true">
24         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
25       </Host>
26     </Engine>
27   </Service>
28 
29   <Service name="Catalina2">
30     <Connector port="8084" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
31     <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
32     <Engine name="Catalina2" defaultHost="localhost">
33       <Realm className="org.apache.catalina.realm.LockOutRealm">
34         <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
35                resourceName="UserDatabase"/>
36       </Realm>
37 
38       <Host name="localhost"  appBase="/opt/project/webapps2" unpackWARs="true" autoDeploy="true">
39         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
40       </Host>
41     </Engine>
42   </Service>
43 </Server>

将要部署的Web应用(WAR包或应用目录)拷贝到新的appBase下,即将原webapps下的docs目录拷贝到webapps2中,则通过如下两个接口都可以访问docs应用:

注意Service name、Engine name、appBase,端口号别忘了修改,以免重复

发布的路径不同,appBase分别发布在webapps、webapps2跟tomcat的bin目录同一级

复制$TOMCAT_HOME\confi目录下的Catalina生成副本 ,并命名为Catalina2 

http://localhost:8080/项目名称

http://localhost:8084/项目名称

猜你喜欢

转载自blog.csdn.net/qq_35029061/article/details/84101523