JAVA web容器之Tomcat

一.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:版本查看文件

三.配置文件


默认点击进去提示的是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


用户管理


应用程序管理


主机管理

四.虚拟之际

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 

4.修改本地hosts目录,添加DNS解析

5.测试访问

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值