另一个Web应用服务器——Tomcat

Tomcat简介

Tomcat与Apache,Nginx一样,都属于Web应用服务器。与Nginx一样,属于轻量级的Web服务器。Tomcat是 Apache 软件基金会(Apache Software Foundation)的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。

Tomcat 由于其比较突出的优势,譬如 技术先进、性能稳定,而且免费,所以深受 Java 语言爱好者的喜爱,并且得到了部分软件开发商的认可,目前已经成为比较流行的 Web 应用服务器。Tomcat 在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。

Tomcat部分是 Apache 服务器的扩展,但它与 Apache 服务器是独立运行的,互不影响。Apache服务器默认监听80 端口,Tomcat服务器默认监听8080 端口。所以当你运行 Tomcat 时,它是以与 Apache 服务器独立的进程进行的。

安装软件

  • 安装java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64,官网找软件资源。
[root@cc]# rpm -ivh jdk-8u77-linux-x64.rpm
  • 安装Tomcat,解包,然后将tomcat软件包部署到相关位置。由于Tomcat是原生软件,只需解压即可使用。
[root@cc]# tar -xf apache-tomcat-8.0.30.tar.gz
[root@cc]# mv apache-tomcat-8.0.30 /usr/local/tomcat
  • Tomcat包各目录解析:
[root@cc]# cd /usr/local/tomcat
[root@cc]# ls
bin/                       //主程序目录
lib/                       //库文件目录
logs/                      //日志目录
temp/                      //临时目录
work/                      //自动编译目录jsp代码转化为servlet
conf/                      //配置文件目录
webapps/                   //网页根目录
  • Tomcat服务控制
[root@cc]# /usr/local/tomcat/bin/catalina.sh start  //开启
[root@cc]# /usr/local/tomcat/bin/catalina.sh stop   //关闭

配置文件解析

  1. 主配置文件:/usr/local/tomcat/conf/server.xml,

主要内容如图1:

  1. 主配置文件解析:

Server是 Tomcat 实例的顶层元素。一个 tomcat 实例中包括如下内容:

Service 是一个集合,它由一个或者多个 Connection 以及一个Engine组成。 Conneciton 负责接受用户请求和向客户端返回响应的结果。Engine负责处理所有的Connector所获得的客户请求,它处理在同一个 Service 中所有的 Connector 源色接收到的客户请求。它匹配请求和自己的虚拟主机,并将请求结果发给相对应的<Host>处理,默认的主机是 localhost 。一个<Engine>元素可以包含多个<Host>元素,每个<Host>的元素定义一个虚拟主机,它包含一个或者多个 web 应用。

Tomcat应用

  • 测试静态页面

安装好所有的软件包之后,启动Tomcat服务,测试Tomcat服务,登陆其首页。如图2

[root@cc]# /usr/local/tomcat/bin/catalina.sh start
[root@cc]# firefox http://192.168.2.200:8080
  • 测试动态页面

编写 jsp 代码,测试 Tomcat 处理 jsp 代码。

[root@cc]# vim /usr/local/tomcat/webapps/ROOT/testjsp.jsp
<html>
<body>
Now time is: <%=new java.util.Date()%>
</body>
</html>

客户端测试结果如图3:

  • 部署基于域名的虚拟主机

配置www.bb.com和www.cc.com

[root@cc]# vim /usr/local/tomcat/conf/server.xml
...           
           <Host name="www.bb.com"  appBase="bb"            
                unpackWARs="true" autoDeploy="true">        
           </Host>

           <Host name="www.cc.com"  appBase="cc"
                 unpackWARs="true" autoDeploy="true">
           </Host>
...

创建 www.bb.com 和 www.cc.com 的appBase(网页根目录),操作如下:

[root@cc]# mkdir -p /usr/local/tomcat/{bb,cc}/ROOT
[root@cc]# echo "bb" > /usr/local/tomcat/bb/ROOT/index.html
[root@cc]# echo "cc" > /usr/local/tomcat/cc/ROOT/index.html

重启Tomcat服务

[root@cc]# /usr/local/tomcat/bin/catalina.sh stop
[root@cc]# /usr/local/tomcat/bin/catalina.sh start

客户端访问,结果如图4。修改客户端的/etc/hosts 文件,加上www.bb.comwww.cc.com本地域名解析:

[root@cc]# firefox http://www.bb.com:8080
[root@cc]# firefox http://www.cc.com:8080
  • 更改Tomcat网页根目录

更改主配置文件操作如下:

[root@cc]# vim /usr/local/tomcat/conf/server.xml
        <Host name="www.bb.com"  appBase="bb"
              unpackWARs="true" autoDeploy="true">
              <Context path="" docBase="base" reloadable="true"/>
        </Host>

创建网页根目录

[root@cc]# mkdir  /usr/local/tomcat/webapps/base
[root@cc]# echo "bb" > /usr/local/tomcat/bb/ROOT/index.html

重启Tomcat服务

[root@cc]# /usr/local/tomcat/bin/catalina.sh stop
[root@cc]# /usr/local/tomcat/bin/catalina.sh start

客户端访问结果如图5,http://www.bb.com:8080

  • path识别用户的URI

更改主配置文件操作如下:

[root@cc]# vim /usr/local/tomcat/conf/server.xml
        <Host name="www.bb.com"  appBase="bb"
              unpackWARs="true" autoDeploy="true">
              <Context path="/test" docBase="/var/www/html" reloadable="true"/>
        </Host>
[root@cc]# echo "www.bb.com" > /var/www/html/index.html

重启Tomcat服务

[root@cc]# /usr/local/tomcat/bin/catalina.sh stop
[root@cc]# /usr/local/tomcat/bin/catalina.sh start

客户端访问,结果如图6,http://www.bb.com/test

  • 配置Tomcat加密网站

更改配置文件,操作如下:

[root@cc]# vim /usr/local/tomcat/conf/server.xml
    ...
    <Connector port="8443"   
            protocol="org.apache.coyote.http11.Http11NioProtocol"
            maxThreads="150" SSLEnabled="true" scheme="https"
            secure="true" clientAuth="false" sslProtocol="TLS" 
            keystoreFile="/usr/local/tomcat/conf/keystore" 
            keystorePass="123456"/>
...

生成证书和密钥:

[root@cc]# keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/conf/keystore   
//按照提示输入密码123456

重启Tomcat服务

[root@cc]# /usr/local/tomcat/bin/catalina.sh stop
[root@cc]# /usr/local/tomcat/bin/catalina.sh start

客户端访问:https://www.bb.com:8443

结果如图7。点击我以充分了解可能的风险,然后添加例外。最后出现结果,如图8。

  • 为每个虚拟主机设置不同的日志文件

更改配置文件,更改日志文件名,与localhost不一致就可以。具体操作如下:

[root@cc]# vim /usr/local/tomcat/conf/server.xml
    <Host name="www.bb.com"  appBase="webapps"
          unpackWARs="true" autoDeploy="true">
          <Valve className="org.apache.catalina.valves.AccessLogValve"
          directory="logs" prefix="bb_access_log" suffix=".txt"
          pattern="%h %l %u %t "%r" %s %b"/>
    </Host>

重启Tomcat服务

[root@cc]# /usr/local/tomcat/bin/catalina.sh stop
[root@cc]# /usr/local/tomcat/bin/catalina.sh start

客户端访问下www.bb.com,即可出现相应的日志文件。

总结和答疑

可能原因:

未安装JDK,或者JDK安装后为指定正确的环境变量。

  • Tomcat主配置文件语法严格,区分大小写,容易出错。关键词不匹配,位置错误,默认站点名称被修改,均会报错。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

Hadoop,zookeeper,HBase,Spack集群环境搭建【面试+工作】

Hadoop,zookeeper,HBase,Spark集群环境搭建【面试+工作】

982
来自专栏编程坑太多

『高级篇』docker之开发课程服务(15)

925
来自专栏云计算教程系列

如何通过Yum在CentOS 7上安装Apache Tomcat 7

Apache Tomcat是一个Web服务器和servlet容器,用于为Java应用程序提供服务。Tomcat是Apache Software Foundati...

1020
来自专栏云计算教程系列

在腾讯云CVM上安装熟悉Node.js

Node.js是一个开源JavaScript运行环境,用于轻松构建服务器端和网络应用程序。该应用程序可在Linux,OS X,FreeBSD和Windows上运...

1805
来自专栏黑白安全

渗透测试之端口转发与代理 常用端口转发方法

如果Client要对Server的多个端口进行扫描(或是多个Server的多个端口),逐个配置转发规则很不现实。

1333
来自专栏编程坑太多

『高级篇』docker之开发课程服务(15)

763
来自专栏云计算教程系列

如何在Ubuntu 16.04上安装Node.js

Node.js是一个用于通用编程的JavaScript平台,允许用户快速构建网络应用程序。通过在前端和后端利用JavaScript,开发可以更加一致并在同一系统...

1525
来自专栏云计算教程系列

如何在Debian 8上将ngx_pagespeed添加到Nginx中

ngx_pagespeed简称pagespeed,是一个Nginx模块,旨在通过减少资源的大小以及客户端浏览器加载它所需的时间来自动优化您的网站。如果您还不熟悉...

972
来自专栏从零开始学自动化测试

Appium+python自动化11-adb必知必会

前言 学android测试,adb是必学的,有几个常用的指令需要熟练掌握 一、检查设备 1.如何检查手机(或模拟器)是连上电脑的,在cmd输入: >adb de...

3506
来自专栏Java后端生活

JavaWeb(二)Tomcat

1964

扫码关注云+社区