目 录
1. tomcat是什么
tomcat是Apache的一个开源项目,是一款免费的轻量级应用服务器。它可以实现JavaWeb程序的装载,发布应用上线,是当前使用比较多的服务器。
它的下载也非常简单,首先进到tomcat的官网,然后选择要下载的版本,下载到本地即可,之后该解压就解压,该安装就安装。比如,我这里下载tomcat 9的版本。
(1)点击 Tomcat 9
(2)选择window系统,64位的压缩包下载,大概就10多M,一会儿就下载完
(3)将zip包解压,里面的目录就是这样的
2. tomcat主要目录详解
- bin文件夹:存放tomcat的命令
- conf文件夹:存放各种全局配置文件,保存配置信息
- lib文件夹:用来存放Tomact服务器所需要的jar包
- logs文件夹:存放tomcat在运行过程中产生的日志文件
- temp文件夹:存放tomcat在运行过程中产生的临时文件
- webapps文件夹:tomcat默认部署路径,用来存放需要部署上线的应用程序,应用程序可以以war包、Jar包、普通文件夹三种形式进行发布。
- work文件夹:存放tomact在运行时产生的编译文件,删除这个目录相当于清理掉缓存
2.1 bin目录
以.sh结尾的代表Linux下的命令,以.bat结尾的代表Windows下的命令。需要了解的,主要以下4个:
- startup.bat:windows系统下启动Tomcat的命令
- shutdown.bat:Windows系统下关闭Tomcat的命令
- startup.sh:Linux系统下启动Tomcat的命令
- shutdown.sh:Linux系统下关闭Tomcat的命令
2.2 conf目录
- context.xml:配置数据源,比如配置数据库连接就在这个文件里进行
- logging.properties:进行日志打印的配置,比如日志的打印级别是info还是error或者warn等
- server.xml : 配置项目的域名、端口号、IP、请求的编码、默认加载的项目等
- web.xml:全局的配置文件,这个文件很重要
2.3 lib目录
这个目录是存放一堆jar包的,如果把需要用的jar包,放到这个目录下,那么后续创建项目,就不用每次都引入jar包,直接用这个目录下的就好。
2.4 logs目录
这个目录是存放一堆以.log结尾的日志文件的,只要tomcat服务器启动起来,就会自动在这里创建日志文件,记录日志信息,这里没有启动过tomcat服务器,所以暂时没有任何日志。
2.5 temp目录
存放临时文件的,这里默认有一个空的tmp文件。
2.6 webapps目录
上面这个图片中的这些项目是tomcat自带的,如果启动tomcat,在浏览器中输入localhost:8080进行访问,会进入到ROOT目录中,找到index.jsp文件展示出来。
后续,自己创建的项目,也是类似这几个一样,新建一个项目目录。
2.7 work目录
存放tomact在运行时产生的编译文件,这里没有运行过tomcat,所以暂时为空。
3. tomcat主要文件详解
3.1 server.xml
下面是最初始的server.xml文件内容,为了看的更清晰,把一大堆注释信息去掉了。
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<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" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
如果需要变更访问的端口,就把文件里面的8080,替换成要改的那个。
如果要修改域名,则把下面这行里面localhost,替换成自己要改的域名。
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
4. 浏览器访问tomcat的过程
4.1 默认情况下
在默认情况下,浏览器访问tomcat的步骤、过程:
- 启动tomcat服务器
- 在浏览器输入localhost:8080,回车
- 将域名解析成ip地址127.0.0.1
说明:这里先到本地的hosts文件中,查看当前访问域名是否有ip映射,如果有则直接拿ip使用,否则访问DNS服务器,获取域名对应ip,如果找不到,说明访问域名不存在。 - 根据ip找到服务器,根据端口,找到服务器上要访问的资源所在,根据路由,找到指定的资源
- 服务器返回资源信息给浏览器
- 浏览器解析结果,进行渲染,展示页面
4.2 自定义访问
在实际的开发过程中,不可能用localhost作为应用的域名,所以,这里我不走默认情况,自定义一个访问域名和端口,实践一番。
(1)修改server.xml文件,将端口改为8088,域名改为www.yuhuofei.com
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<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" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="www.yuhuofei.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
(2)修改C:\Windows\System32\drivers\etc下的hosts文件,将127.0.0.1与www.yuhuofei.com进行映射绑定
(3)启动tomcat服务器,然后在浏览器输入www.yuhuofe.com:8088,接着回车,结果如下
如果,要发布自己的应用,则新建一个项目文件夹,放到webapps目录下。访问时在端口后面,加上自己的路径即可。例如,新建一个hello项目,则www.yuhuofe.com:8088/hello。
5. 总结
5.1 常见默认端口
- tomcat默认端口:8080
- redis默认端口:6379
- mysql默认端口:3306
- http协议默认端口:80
- https协议默认端口:443
5.2 tomcat默认信息
- 默认域名:localhost->127.0.0.1
- 默认网站应用存放位置:webapps
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
由以上的内容,可以知道,其实访问域名的本质还是在访问ip。所以无论访问哪个域名,最终都会被解析成与该域名绑定的ip,通过ip找到服务器。
说到将域名解析成ip,第一步就是先看本地的hosts文件中有没有与该域名进行映射绑定的ip,如果有,则直接使用;如果没有,则进行第二部,去DNS服务器获取,获取不断,说明域名没有与任何一个ip进行绑定,找不到资源。