另一个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 条评论
登录 后参与评论

相关文章

来自专栏枕边书

用Lua定制Redis命令

前言 Redis作为一个非常成功的数据库,提供了非常丰富的数据类型和命令,使用这些,我们可以轻易而高效地完成很多缓存操作,可是总有一些比较特殊的问题或需求需要解...

52470
来自专栏Django Scrapy

conda的使用-管理不同版本的py

当需要管理多种版本的python pip 会比较麻烦 pip安装好的包升级换代也繁琐,anaconda就是来解决这一难题的工具 Anaconda Anacon...

39670
来自专栏机器学习实践二三事

Ipynb文件的打开

RT,ipynb文件用gedit直接打开的话,太多附加信息,此时需要在浏览器端打开 升级ipython 太低版本的ipython是不行的,出现的错误可能是这样的...

27280
来自专栏pythonlove

Linux防火墙iptables(三)

我们前面两篇已经把iptables介绍的比较充分了,今天来说一个iptables对layer 7的实践。我们说过iptables/netfilter工作在内核空...

20020
来自专栏飞雪无情的博客

Go语言实战笔记(十二)| Go goroutine

一般的程序,如果没有特别的要求的话,是顺序执行的,这样的程序也容易编写维护。但是随着科技的发展、业务的演进,我们不得不变写可以并行的程序,因为这样有很多好处。

13530
来自专栏python3

习题1:第一个程序

9230
来自专栏北京马哥教育

ssh代理

ssh隧道技术 1. 用ssh做正向连接 啥叫正向连接?就是client连上server,然后把server能访问的机器地址和端口(当然也包括server自己)...

64280
来自专栏中国白客联盟

PIMS三个漏洞+里程密最新版V2.3 SQL注入漏洞

pims在线订单管理系统V4.2.7重装漏洞 程序整天结构如下 ? 安装程序在install目录下,虽然index有验证,代码如下 <?php //检测重...

43160
来自专栏SDNLAB

从数据库分析OpenStack创建虚机流程

治大国若烹小鲜,学OpenStack亦是如此。每一个深入学习OpenStack的人都会从虚拟机创建流程开始自己的OpenStack代码分析之旅,因为它贯穿核心组...

16420
来自专栏HappenLee的技术杂谈

Linux下双网卡Firewalld的配置流程

实验室拟态存储的项目需要通过LVS-NAT模式通过LVS服务器来区隔内外网的服务,所以安全防护的重心则落在了LVS服务器之上。笔者最终选择通过firewalld...

28040

扫码关注云+社区

领取腾讯云代金券