一.Tomcat的运行原理
Tomcat 中最顶层的容器是Server,一个Server包含多个Service,一个Service只能有一个Container ,但可以有多个Connector。
1、用户点击网页内容,请求被发送到本机端口8080,被在那里监听的coyote HTTP/1.1 Connector获得。
2、Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应。
3、 Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host
4、 Engine匹配到名为localhost的Host(即使匹配不到也把清求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为locathost的Host获得请求/test/indeX.jsp, 匹配它所拥有的所有的context。 Host匹配到路径为/test的context(如果匹配不到就把该请求交给路径名为*的context去处理)。
5、 path=“/test”的context获得请求/index.jsp, 在它的mapping table中寻找出对应的Servlet。 Context匹配到URL PATTERN为*jsp的servlet,对应于JspServlet类。
6、构造HtpServletRequest对象和HttpServletResponse对象,作为参数调用Jspservlet的doGet(或dopost()执行业务逻辑、数据存储等程序。
7、Context把执行完之后的HttpServletResponse对象返回给Host。
8、Host把HttpservletResponse对象返回给Engine。
9、 Engine把HttpServletResponse对象返回Connector。
10、 Connector把把HttpservletResponse对象返回给客户Browser。
二.部署Tomcat
1.安装JDK
[root@localhost ~]# tar zxvf jdk-8u341-linux-x64.tar.gz -C /usr/local/src/
2.添加JDK的环境变量
vim /etc/profile #在文件结尾添加如下几行:
JAVA_HOME=/usr/local/src/jdk1.8.0_341
JAVA_BIN=$JAVA_HOME/bin
JRE_HOME=$JAVA_HOME/jre
JRE_BIN=$JRE_HOME/bin
PATH=$JAVA_BIN:$JRE_BIN:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
[root@localhost ~]# source /etc/profile
[root@localhost ~]# java -version
java version "1.8.0_341"
Java(TM) SE Runtime Environment (build 1.8.0_341-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.341-b11, mixed mode)
注意:安装之前,如果系统中安装了openjdk,请提前将openjdk卸载
3.安装tomcat
[root@localhost ~]# tar zxvf apache-tomcat-8.5.72.tar.gz -C /usr/local/
[root@localhost local]# ln -s apache-tomcat-8.5.72 tomcat-8080
4.启动服务
[root@centos7 /usr/local/tomcat8-8080/bin]#ls
bootstrap.jar setclasspath.bat
catalina.bat setclasspath.sh
catalina.sh shutdown.bat
catalina-tasks.xml shutdown.sh
ciphers.bat startup.bat
ciphers.sh startup.sh
commons-daemon.jar tomcat-juli.jar
commons-daemon-native.tar.gz tomcat-native.tar.gz
configtest.bat tool-wrapper.bat
configtest.sh tool-wrapper.sh
daemon.sh version.bat
digest.bat version.sh
digest.sh
[root@centos7 /usr/local/tomcat8-8080/bin]#./startup.sh
Using CATALINA_BASE: /usr/local/tomcat8-8080
Using CATALINA_HOME: /usr/local/tomcat8-8080
Using CATALINA_TMPDIR: /usr/local/tomcat8-8080/temp
Using JRE_HOME: /usr/local/src/jdk1.8.0_341/jre
Using CLASSPATH: /usr/local/tomcat8-8080/bin/bootstrap.jar:/usr/local/tomcat8-8080/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
启动方式
第一种:
[root@localhost bin]-./catalina.sh start
第二种:
[root@localhost bin]#./startup.sh
停止方式
第一种:
[rootalocalhost bin]#./catalina.sh stop
第二种:
[root@localhost bin]#./shutdown.sh
访问测试 http://ip地址:8080
5.目录结构
[root@centos7 /usr/local/tomcat8-8080]#ls
bin CONTRIBUTING.md logs RELEASE-NOTES webapps
BUILDING.txt lib NOTICE RUNNING.txt work
conf LICENSE README.md temp
bin:存放启动和关闭tomcat脚本
conf:存放不同的配置文件(server.xml和web.xml,context.xml);
doc:存放Tomcat文档;
lib:存放Tomcat运行需要的库文件(JARS);
logs:存放Tomcat执行时的LOG文件;
src:存放Tomcat的源代码;
work:存放jsp编译后产生的class文件;
webapps:Tomcat的主要Web发布目录(包括应用程序示例);
6.指定启动脚本(建议二进制安装不要写)
#!/bin/bash
# description: Tomcat8 Start Stop Restart
# processname: tomcat8
# chkconfig: 2345 20 80
CATALINA_HOME=/usr/local/tomcat-8080
case $1 in
start)
sh $CATALINA_HOME/bin/startup.sh
;;
stop)
sh $CATALINA_HOME/bin/shutdown.sh
;;
restart)
sh $CATALINA_HOME/bin/shutdown.sh
sleep 2
sh $CATALINA_HOME/bin/startup.sh
;;
*)
echo 'please use : tomcat {start | stop | restart}'
;;
esac
exit 0
[root@localhost init.d]# chmod a+x tomcat ##授权
[root@localhost init.d]# chkconfig --add tomcat ##添加到自启动
[root@localhost init.d]# service tomcat stop ##停止
[root@localhost init.d]# service tomcat start ##启动
[root@localhost init.d]# service tomcat restart ##重启
7.启动配置文件管理
catalina.sh :主配置文件
configtest.sh:配置检查文件
shutdown.sh:服务关闭文件
startup.sh:服务启动文件
version.sh:版本查看文件
三.配置文件![](https://img-blog.csdnimg.cn/direct/ee08f1d1cfb845abb4b7ee82b10e66d6.png)
默认点击进去提示的是403报错,因此需要配置管理用户才能查看
[root@centos7 /usr/local/tomcat8-8080/conf]#vim tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="user1" password="123456" roles="manager-gui"/>
<user username="user2" password="123456" roles="manager-script"/>
注意:对于Tomcat8来说,只有127网段局域网的机器,能够有访问权限,如果是其他网段登陆,如172.10网段,仍会报403。所以修改文件夹manager和host-mananger两个项目下META-INF中的context.xml文件
[root@centos7 /usr/local/tomcat8-8080/webapps/host-manager/META-INF]#vim context.xml
[root@centos7 /usr/local/tomcat8-8080/webapps/manager/META-INF]#vim context.xml
![](https://img-blog.csdnimg.cn/direct/cba9439121964d1ea7cd55d7b15f27ad.png)
用户管理![](https://img-blog.csdnimg.cn/direct/d71999589ca94fd4832ebc8e4a5d46e3.png)
![](https://img-blog.csdnimg.cn/direct/fc868b3083e14c91b693cef634151502.png)
应用程序管理
![](https://img-blog.csdnimg.cn/direct/0687577dda9a490fb132344ecabdef32.png)
![](https://img-blog.csdnimg.cn/direct/2acf9e6a4d584d2fa71e609a68a4ac2d.png)
主机管理
四.虚拟之际
1.编辑主配置文件:server,xml
[root@centos7 /usr/local/tomcat8-8080/conf]#vim server.xml
<Engine name="Catalina" defaultHost="localhost">
<Host name="www.sina.com" appBase="/var/www/html">
<Context path="" docBase="/var/www/html/sina" />
</Host>
<Host name="www.sohu.com" appBase="/var/www/html">
<Context path="" docBase="/var/www/html/sohu" />
</Host>
2.新建对应的虚拟主机的网站根目录
[root@centos7 ~]# mkdir -p /var/www/html
[root@centos7 ~]# cd /var/www/html/
[root@centos7 /var/www/html]# mkdir sina
[root@centos7 /var/www/html]# mkdir sohu
[root@centos7 /var/www/html]# ls
sina sohu
[root@centos7 /var/www/html]# echo sina >./sina/index.html
[root@centos7 /var/www/html]# echo sohu >./sohu/index.html
3.重启tomcat
[root@centos7 /usr/local/tomcat8-8080/bin]#./shutdown.sh
[root@centos7 /usr/local/tomcat8-8080/bin]#./startup.sh