前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >另一个Web应用服务器——Tomcat

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

原创
作者头像
魏豪
修改2017-06-19 19:05:08
1.4K0
修改2017-06-19 19:05:08
举报
文章被收录于专栏:魏豪的专栏

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,官网找软件资源。
代码语言:javascript
复制
[root@cc]# rpm -ivh jdk-8u77-linux-x64.rpm
  • 安装Tomcat,解包,然后将tomcat软件包部署到相关位置。由于Tomcat是原生软件,只需解压即可使用。
代码语言:javascript
复制
[root@cc]# tar -xf apache-tomcat-8.0.30.tar.gz
[root@cc]# mv apache-tomcat-8.0.30 /usr/local/tomcat
  • Tomcat包各目录解析:
代码语言:javascript
复制
[root@cc]# cd /usr/local/tomcat
[root@cc]# ls
bin/                       //主程序目录
lib/                       //库文件目录
logs/                      //日志目录
temp/                      //临时目录
work/                      //自动编译目录jsp代码转化为servlet
conf/                      //配置文件目录
webapps/                   //网页根目录
  • Tomcat服务控制
代码语言:javascript
复制
[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

代码语言:javascript
复制
[root@cc]# /usr/local/tomcat/bin/catalina.sh start
[root@cc]# firefox http://192.168.2.200:8080
  • 测试动态页面

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

代码语言:javascript
复制
[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

代码语言:javascript
复制
[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(网页根目录),操作如下:

代码语言:javascript
复制
[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服务

代码语言:javascript
复制
[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本地域名解析:

代码语言:javascript
复制
[root@cc]# firefox http://www.bb.com:8080
[root@cc]# firefox http://www.cc.com:8080
  • 更改Tomcat网页根目录

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

代码语言:javascript
复制
[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>

创建网页根目录

代码语言:javascript
复制
[root@cc]# mkdir  /usr/local/tomcat/webapps/base
[root@cc]# echo "bb" > /usr/local/tomcat/bb/ROOT/index.html

重启Tomcat服务

代码语言:javascript
复制
[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

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

代码语言:javascript
复制
[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服务

代码语言:javascript
复制
[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加密网站

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

代码语言:javascript
复制
[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"/>
...

生成证书和密钥:

代码语言:javascript
复制
[root@cc]# keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/conf/keystore   
//按照提示输入密码123456

重启Tomcat服务

代码语言:javascript
复制
[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不一致就可以。具体操作如下:

代码语言:javascript
复制
[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服务

代码语言:javascript
复制
[root@cc]# /usr/local/tomcat/bin/catalina.sh stop
[root@cc]# /usr/local/tomcat/bin/catalina.sh start

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

总结和答疑

可能原因:

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

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Tomcat简介
  • 安装软件
  • 配置文件解析
  • Tomcat应用
  • 总结和答疑
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档