|
| 1 | +--- |
| 2 | +title: Web笔记(二)Tomcat 使用总结 |
| 3 | +date: 2018-08-23 09:12:31 |
| 4 | +url: develop/web/web/base-02 |
| 5 | +updated: 2018-08-23 09:12:31 |
| 6 | +categories: |
| 7 | +- Java EE |
| 8 | +tags: |
| 9 | +- Tomcat |
| 10 | +- Java EE |
| 11 | +--- |
| 12 | + |
| 13 | + |
| 14 | +### Tomcat 介绍 |
| 15 | +Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTTP服务器,它也可以被视作一个单独的Web服务器。但是,不能将Tomcat和Apache HTTP服务器混淆,Apache HTTP服务器是一个用C语言实现的HTTPWeb服务器;这两个HTTP web server不是捆绑在一起的。Apache Tomcat包含了一个配置管理工具,也可以通过编辑XML格式的配置文件来进行配置。(摘录自[Wiki](https://zh.wikipedia.org/wiki/Apache_Tomcat))([Apache Tomcat](http://tomcat.apache.org/)) |
| 16 | +<!-- more --> |
| 17 | + |
| 18 | +### Tomcat 安装 |
| 19 | +Tomcat是免费的开源软件,可在直接在官方网站下载。 |
| 20 | +[http://tomcat.apache.org/](http://tomcat.apache.org/) |
| 21 | +1.可以直接在左侧选择版本: |
| 22 | + |
| 23 | + |
| 24 | + |
| 25 | +2.选择版本后可以在下方进行下载,可以选择下载安装版或者解压版,这里选择了解压版 |
| 26 | +tar.gz文件是Linux操作系统下的安装版本 |
| 27 | +exe文件是Windows系统下的安装版本 |
| 28 | +zip文件是Windows系统下的压缩版本 |
| 29 | + |
| 30 | + |
| 31 | + |
| 32 | +3.下载完成后解压缩,得到Tomcat目录, |
| 33 | + |
| 34 | + |
| 35 | + |
| 36 | +### Tomcat 的默认端口 |
| 37 | + |
| 38 | +Tomcat 修改HTTP默认端口,可以直接修改Tomcat 目录下\conf \server.xml文件。默认端口号为8080,修改为想要的端口,重启Tomcat即可。 |
| 39 | +```xml |
| 40 | +<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/> |
| 41 | +``` |
| 42 | +若要修改成8081端口: |
| 43 | +```xml |
| 44 | +<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8081" protocol="HTTP/1.1" redirectPort="8443"/> |
| 45 | +``` |
| 46 | +### Tomcat 的虚拟目录配置 |
| 47 | +什么是虚拟目录呢,简单的说,我们可以根据请求的路径不同,来发布不同的项目。如此形式:我们想要 |
| 48 | +在访问http://www.codingme.net/testA 时,进入A项目。 |
| 49 | +在访问http://www.codingme.net/testB 时,进入B项目。 |
| 50 | +这个时候我们就需要配置虚拟目录来完成这个操作。 |
| 51 | +此时的URL:http://www.codingme.net/testA 不是单纯的路径,而是协议域名端口号+WEB应用testA。 |
| 52 | +#### 自动映射虚拟目录 |
| 53 | +在Tomcat 默认情况下,我们可以看到 %Tomca%\conf \server.xml文件最底部有配置如下: |
| 54 | + |
| 55 | +```xml |
| 56 | + <Host name="localhost" appBase="webapps" |
| 57 | + unpackWARs="true" autoDeploy="true"> |
| 58 | + <!-- SingleSignOn valve, share authentication between web applications |
| 59 | + Documentation at: /docs/config/valve.html --> |
| 60 | + <!-- |
| 61 | + <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> |
| 62 | + --> |
| 63 | + <!-- Access log processes all example. |
| 64 | + Documentation at: /docs/config/valve.html |
| 65 | + Note: The pattern used is equivalent to using pattern="common" --> |
| 66 | + <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" |
| 67 | + prefix="localhost_access_log" suffix=".txt" |
| 68 | + pattern="%h %l %u %t "%r" %s %b" /> |
| 69 | + </Host> |
| 70 | +``` |
| 71 | +这里Tomcat 默认配置了虚拟主机localhost,基础应用目录webapps,也就是%Tomca%\webapps\ 目录,Tomcat 服务器会自动管理webapps目录下的所有web应用,并把它映射成虚似目录。 |
| 72 | +因此在需要配置虚拟目录时我们可以直接把项目复制到webapps 目录下进行发布 |
| 73 | +示例: |
| 74 | +1. 复制项目到webapps下 |
| 75 | + |
| 76 | + |
| 77 | +2. 查看test/ index.html 文件内容 |
| 78 | +  |
| 79 | +3. 运行%Tomcat%/bin/startup.bat 启动Tomcat |
| 80 | +4. 进行访问测试http://localhost:8080/test/index.html |
| 81 | + |
| 82 | + |
| 83 | + |
| 84 | +注意:http://localhost:8080 会默认访问 webapps/ROOT文件夹中的内容。 |
| 85 | + |
| 86 | +#### 修改server.xml 映射虚拟目录 |
| 87 | + |
| 88 | +我们也可以通过在server.xml 文件中的host 元素之间添加配置代码来配置虚拟目录:添加代码如下; |
| 89 | + |
| 90 | +```xml |
| 91 | +Context path="/app" docBase="D:/app" debug="0" reloadable="true" crossContext="true"/> |
| 92 | +``` |
| 93 | + |
| 94 | + |
| 95 | + |
| 96 | +配置中我们配置了访问路径为/app ,项目路径D:/app 因此我们只要把要发布的内容放入D:/app 文件夹中即可。 |
| 97 | + 配置完毕后 运行%Tomcat%/bin/startup.bat 启动Tomcat,可以通过 |
| 98 | +> http://localhost:8080/app/index.html |
| 99 | +
|
| 100 | +访问到D:/app/index.html,需要多个虚拟目录可以直接配置多条配置。 |
| 101 | + |
| 102 | +注意:若想使用http://localhost:8080 访问项目则需要配置 `path=""` |
| 103 | +注意:配置中的path值和docBase中的文件夹名称没有任何关系。 |
| 104 | + |
| 105 | +#### 在conf /Catalina /localhost 增加xml文件映射虚拟目录 |
| 106 | + |
| 107 | +博主比较推荐这一种。 |
| 108 | +在%Tomcat%/conf/Catalina/localhost目录中,增加配置文件来配置虚拟目录。 |
| 109 | +配置文件名称格式为:虚拟目录路径.xml |
| 110 | +举个栗子: |
| 111 | +在%Tomcat%/conf/Catalina/localhost目录中增加文件 `blog.xml` |
| 112 | +写入内容: |
| 113 | + |
| 114 | +```xml |
| 115 | +<?xml version="1.0" encoding="utf-8"?> |
| 116 | + <Context |
| 117 | + docBase="d:/blog" |
| 118 | + reloadable="true"> |
| 119 | +</Context> |
| 120 | +``` |
| 121 | + |
| 122 | + |
| 123 | +D盘下blog文件夹中内容: |
| 124 | + |
| 125 | + |
| 126 | + |
| 127 | +`docBase="d:/blog" ` 指定了Web应用存放位置为D盘下blog文件夹中。 |
| 128 | +`reloadable="true" `表示当blog文件夹中文件有变化中,自动加载。 |
| 129 | +配置完毕启动Tomcat后就可以通过访问到blog文件夹中的内容。 |
| 130 | + |
| 131 | +> http://localhost:8080/blog |
| 132 | +
|
| 133 | + |
| 134 | + |
| 135 | +注意:需要多个虚拟目录可以多建立几个配置文件,文件名不能相同。 |
| 136 | +注意:若想使用http://localhost:8080 访问项目则需要配置文件名为`ROOT.xml`。 |
| 137 | +注意:文件名blog.xml 和配置中d:/blog 没有关系,文件名可以写成其他,如blog111.xml,那么在访问时就要访问http://localhost:8080/blog111 |
| 138 | + |
| 139 | +### Tomcat 的虚拟主机 |
| 140 | + |
| 141 | +首先我们先了解虚拟主机的用处,一个虚拟主机也就是一个网站。比如我们`只有一个服务器`,一个服务器上只有一个80端口,我们需要发布两个web项目,那么我们可以使用虚拟目录,把两个项目发布到两个不同的路径之下,但是如果我们有两个不同的域名需要把两个项目对应两个域名,我们就需要配置虚拟主机了。 |
| 142 | + |
| 143 | +示例:两个域名 |
| 144 | +一个是`www.aaaa.com` |
| 145 | +一个是 `www.bbbb.com` |
| 146 | + |
| 147 | +为了实验效果,我们配置C:\Windows\System32\drivers\etc\hosts 文件,添加两行映射。 |
| 148 | +``` |
| 149 | +127.0.0.1 www.aaaa.com |
| 150 | +127.0.0.1 www.bbbb.com |
| 151 | +``` |
| 152 | +此时我们本机可以使用 localhost / www.aaaa.com / www.bbbb.com 进行访问。 |
| 153 | + |
| 154 | +配置虚拟主机指定www.aaaa.com访问是的内容。 |
| 155 | +1:在server.xml中Engine元素中添加一个host子元素 |
| 156 | +```xml |
| 157 | +<Host name="www.aaaa.com" debug="0" appBase="d:/aaaa" unpackWARs="true" |
| 158 | +autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> |
| 159 | + <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" |
| 160 | + prefix="aaaa_log." suffix=".txt" timestamp="true" /> |
| 161 | +</Host> |
| 162 | +``` |
| 163 | +其中的 |
| 164 | +1. name表示在访问的域名是www.aaaa.com时会使用此配置。 |
| 165 | +1. appBase="d:/aaaa" 指定了项目的发布路径。 |
| 166 | + |
| 167 | +启动Tomcat后,此时在使用www.aaaa.com进行访问时候,会默认显示d:/aaaa/ROOT中的内容。 |
| 168 | + |
| 169 | + |
| 170 | + |
| 171 | +如果存在 d:/aaaa/test,则可以通过http://www.aaaa.com:8080/test 进行访问。 |
| 172 | +此时test也就是www.aaaa.com的虚拟目录。 |
| 173 | +添加www.bbbb.com 访问同上。 |
| 174 | + |
| 175 | +### Tomcat 的单例多实例配置 |
| 176 | +参考之前文章 |
| 177 | +[Linux配置Tomcat的单机多实例](https://www.wdbyte.com/2018/08/develop/install-tomcat-many-instance/) |
0 commit comments