二十六次课 2018-10-11

Tomcat介绍

Apache Tomcat是由Apache Software Foundation(ASF)开发的一个开源Java WEB应用服务器。属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。 类似功能的还有:Jetty、Resin、Websphere、weblogic、JBoss、Glassfish、GonAS等。

  • Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目- 中的一个核心项目

  • 由Apache、Sun和其他一些公司及个人共同开发而成。

  • java语言写的网站用tomcat+jdk来运行

  • jdk(java development kit)是整个java的核心,
    它包含了java运行环境和一堆java相关的工具以及java基础库。

  • 最主流的jdk为sun公司发布的jdk,除此之外,

  • 其实IBM公司也有发布JDK,CentOS上也可以用yum安装openjdk

Tomcat与Java

Tomcat与Java SE

Tomcat是用Java语言编写的,需要运行在Java虚拟机上,所以一般需要先安装JDK,以提供运行环境。
Tomcat与Java EE

Tomcat实现了几个Java EE规范,包括Java Servlet、Java Server Pages(JSP),Java Expression Language和Java WebSocket等,这些是都下载Tomcat安装包默认提供的,可以在源码中看到相关Java EE 规范API源码引用

Tomcat与Servlet/编程开发

Tomcat实现的几个Java EE规范最重的是Servlet,因为实现了Servlet规范,所以Tomcat也是一个Servlet容器,可以运行我们自己编写的Servlet应用程序处理动态请求。
平时用的Struts2、SpringMVC框架就是基于Servlet,所以我们可以在这些框架的基础上进行快速开发,然后部署到Tomcat中运行。 另外对于JSP规范实现:可以混合HTML与Java开发在一个文件中(.jsp),这种文件在第一次调用之后会被Tomcat的Jasper组件编译成一个servlet类,在后续的操作中则可以直接使用此类。这种开发方式不灵活,一般少用。

Tomcat与WEB/HTTP请求

tomcat的(HTTP类型)Connector组件实现了HTTP请求的解析,Tomcat通过Connector组件接收HTTP请求并解析,然后把解析后的信息交给Servlet处理:
对于静态资源(html/js/jpg等)请求,Tomcat提供默认的Servlet来处理并响应; 对于动态请求,可以映射到自己编写的Servlet应用程序来处理。

Tomcat与Nginx/Apache的应用架构

Nginx、Apache都是目前主流的Web服务器,也可以作为反向代理服务器;它们在处理大量并发的请求连接、连接会话管理和静态内容请求等方面相比Tomcat更具优势。所以一般在实际应用中,先是通过Nginx(或Apache)反向代理服务器接收请求,匹配分离动态/静态请求(动静分离);如果是静态请求,则转发到另外的Nginx WEB服务器上,返回静态内容;如果是动态请求,则转发到后面的Tomcatt应用服务器,处理动态请求的业务逻辑。

安装jdk

下载JDK

通过浏览器 http://r.aminglinux.com 下载,将JDK的包上传到LINUX机器上。上传完后,把它放到/usr/local/src目录下

解压

# cd /usr/local/src/
# ls -dlh jdk-8u171-linux-x64.tar.gz 
-rw-r--r--. 1 root root 183M Jul 16 22:47 jdk-8u171-linux-x64.tar.gz
// 这个是下载好的JDK二进制包,不需要编译安装,解压就可以使用了
// 解压
# tar zxf jdk-8u171-linux-x64.tar.gz
# ls -dlh jdk1.8.0_171/
drwxr-xr-x. 8 10 143 255 Mar 29 08:18 jdk1.8.0_171/

// 将解压出来的目录,放到/usr/local/ 目录下重命名为jdk8
# mv jdk1.8.0_171/ /usr/local/jdk8
# ls -dlh /usr/local/jdk8/
drwxr-xr-x. 8 10 143 255 Mar 29 08:18 /usr/local/jdk8/

配置JDK环境变量

// 编辑 /etc/profile 文件,在内容最后加上以下内容
JAVA_HOME=/usr/local/jdk8/
JAVA_BIN=/usr/local/jdk8/bin
JRE_HOME=/usr/local/jdk8/jre
PATH=$PATH:/usr/local/jdk8/bin:/usr/local/jdk8/jre/bin
CLASSPATH=/usr/local/jdk8/jre/lib:/usr/local/jdk8/lib:/usr/local/jdk8/jre/lib/charsets.jar

测试

// 先使/etc/profile文件生效
# source /etc/profile

// 使用java -version命令查看JDK版本,验证JDK是否安装成功
# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

安装Tomcat

下载Tomcat

# cd /usr/local/src
# wget https://mirrors.cnnic.cn/apache/tomcat/tomcat-9/v9.0.10/bin/apache-tomcat-9.0.10.tar.gz

解压安装

// 下载的是二进制包,解压后放到 /usr/local 目录下重命名为tomcat就可以了
# tar zxvf apache-tomcat-9.0.10.tar.gz
# mv ./apache-tomcat-9.0.10 /usr/local/tomcat

脚本

tomcat的脚本在bin目录下,有:catalina、startup、shutdown、setenv、digest、version等。

其中catalina脚本用于启动和关闭tomcat服务器,是tomcat中最关键的脚本。

startup脚本和shutdown脚本等都是使用了不同的参数调用了catalina脚本:

最常用的两个
startup脚本以start参数调用了catalina脚本,用于启动Tomcat
shutdown脚本以stop参数调用了catalina脚本。用户关闭Tomcat

# ll /usr/local/tomcat/bin/*.sh 
-rwxr-x---. 1 root root 23463 Jun 21 01:32 /usr/local/tomcat/bin/catalina.sh
-rw-r-----. 1 root root  1997 Jun 21 01:32 /usr/local/tomcat/bin/ciphers.sh
-rwxr-x---. 1 root root  1922 Jun 21 01:32 /usr/local/tomcat/bin/configtest.sh
-rwxr-x---. 1 root root  8509 Jun 21 01:32 /usr/local/tomcat/bin/daemon.sh
-rwxr-x---. 1 root root  1965 Jun 21 01:32 /usr/local/tomcat/bin/digest.sh
-rwxr-x---. 1 root root  3680 Jun 21 01:32 /usr/local/tomcat/bin/setclasspath.sh
-rwxr-x---. 1 root root  1902 Jun 21 01:32 /usr/local/tomcat/bin/shutdown.sh
-rwxr-x---. 1 root root  1904 Jun 21 01:32 /usr/local/tomcat/bin/startup.sh
-rwxr-x---. 1 root root  5483 Jun 21 01:32 /usr/local/tomcat/bin/tool-wrapper.sh
-rwxr-x---. 1 root root  1908 Jun 21 01:32 /usr/local/tomcat/bin/version.sh

启动Tomcat

//执行startup.sh即可启动Tomcat服务
// 执行shutdown.sh 就能关闭Tomcat服务, 重启Tomcat只能先关闭再启动这样操作。
# /usr/local/tomcat/bin/startup.sh
//查看进程
# ps aux|grep java
root       1694  2.1  2.9 4615344 118436 pts/0  Sl   23:33   0:03 /usr/local/jdk8/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start

//查看端口
# netstat -lntp |grep java
tcp6       0      0 :::8080                 :::*                    LISTEN      1694/java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      1694/java
tcp6       0      0 :::8009                 :::*                    LISTEN      1694/java

// 三个端口:
// 8080为提供web服务的端口,
// 8005为管理端口,
// 8009端口为第三方服务调用的端口,比如httpd和Tomcat结合时会用到
// 只有当三个端口全部处于监听状态时,才能正常的请求访问tomcat服务器
// 三个端口都可以自定义


测试

// 测试访问前需要在防火墙将三个端口放行,或者关闭防火墙
# firewall-cmd --add-port=8080/tcp
success
# firewall-cmd --add-port=8005/tcp
success
# firewall-cmd --add-port=8009/tcp
success

// curl测试访问
# curl 10.1.1.28:8080 -I
HTTP/1.1 200 
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Mon, 16 Jul 2018 15:40:51 GMT

浏览器测试访问
出现如下的页面,就表示Tomcat的初步安装以及完成了
在这里插入图片描述

配置Tomcat监听80端口

配置方式

先查看80端口是否被占用

# netstat -lntp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1036/nginx: master  
tcp6       0      0 :::8080                 :::*                    LISTEN      1694/java           
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      1694/java           
tcp6       0      0 :::8009                 :::*                    LISTEN      1694/java 
// 这里显示80端口被nginx占用了
//所以需要先关闭nginx
# /usr/local/nginx/sbin/nginx -s stop
# netstat -lntp | grep 80
tcp6       0      0 :::8080                 :::*                    LISTEN      1694/java           
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      1694/java           
tcp6       0      0 :::8009                 :::*                    LISTEN      1694/java  

修改Tomcat配置文件

// Tomcat主配置文件路径是 /usr/local/tomcat/conf/server.xml
// 编辑配置文件,
# cd /usr/local/tomcat/conf/
# vi server.xml 

// 找到下面这段内容,将8080,修改为80,然后重启Tomcat服务即可
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

测试

测试访问Tocmat的80端口

//先重启Tomcat服务
# /usr/local/tomcat/bin/shutdown.sh 

# /usr/local/tomcat/bin/startup.sh 

// curl测试访问
# curl -I 127.0.0.1:80
HTTP/1.1 200 
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Mon, 16 Jul 2018 16:12:17 GMT

浏览器测试访问,注意地址栏没有加端口号,默认就是访问80端口
在这里插入图片描述

配置Tomcat虚拟主机

添加虚拟主机

// 编辑/usr/local/tomcat/conf/server.xml
//在</Host>下面增加如下内容
<Host name="tomcat.test.cn" appBase=""
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="/data/wwwroot/test.cn/" debug="0" reloadable="true" crossContext="true"/>
</Host>

# Tomcat主配置文件server.xml中:
# <Host>和</Host>之间的配置为虚拟主机配置部分,
# name定义域名,
# appBase定义应用的目录,默认位置在/usr/local/tomcat/webapps
# Java的应用通常是一个war的压缩包,只需要将war的压缩包放到appBase目录下面即可。
# unpackWARs="true" 表示会自动解压war包,改为false就不会自动解压了
# autoDeploy="true" 表示会自动部署,
# docBase=  就是定义网站的根目录,相当于httpd的 DocumentRoot

增加后的文件内容如下图
在这里插入图片描述

测试

// 先重启Tomcat服务
# /usr/local/tomcat/bin/shutdown.sh 

# /usr/local/tomcat/bin/startup.sh 

// 创建配置里定义的docBase目录和测试文件
# mkdir /data/wwwroot/test.cn
# echo '<h1>Tomcat Test</h1>' > /data/wwwroot/test.cn/index.html

// 查看端口
# netstat -lntp| grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      2057/java           
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      2057/java           
tcp6       0      0 :::8009                 :::*                    LISTEN      2057/java    

// curl 测试访问
# curl -x127.0.0.1:80 tomcat.test.cn
<h1>Tomcat Test</h1>

浏览器访问测试
需要先在Windows的hosts文件里定义: 10.1.1.28 tomcat.test.cn
访问效果如下图
在这里插入图片描述

用WAR包部署Zrlog博客

下载安装

// 下载最新的Zrlog的WAR包到 /usr/local/tomcat/webapps/ 目录下
# /usr/local/tomcat/webapps/
# wget http://dl.zrlog.com/release/zrlog-2.0.1-71c552b-release.war

// 添加虚拟主机配置
//在server.xml文件最下面的 </Host> 标签下面添加下面的内容
<Host name="zrlog.test.cn" appBase="webapps"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="" debug="0" reloadable="true" crossContext="true"/>
</Host>

// 重启Tomcat服务
# /usr/local/tomcat/bin/shutdown.sh
# /usr/local/tomcat/bin/startup.sh

// 查看 /usr/local/tomcat/webapps/ 目录下 WAR包 自动解压后的目录
# ll
total 9680
drwxr-x---. 14 root root    4096 Jul 16 23:21 docs
drwxr-x---.  6 root root      83 Jul 16 23:21 examples
drwxr-x---.  5 root root      87 Jul 16 23:21 host-manager
drwxr-x---.  5 root root     103 Jul 16 23:21 manager
drwxr-x---.  3 root root     283 Jul 16 23:21 ROOT
drwxr-x---.  8 root root     111 Jul 17 01:10 zrlog-2.0.1-71c552b-release
-rw-r--r--.  1 root root 9906045 Jun 30 18:12 zrlog-2.0.1-71c552b-release.war
// zrlog-2.0.1-71c552b-release这个目录就是自动解压出来的了
// 接下来将刚才添加的虚拟主机配置中  docBase 改为这个目录的绝对路径
<Host name="zrlog.test.cn" appBase="webapps"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="/usr/local/tomcat/webapps/zrlog-2.0.1-71c552b-release" debug="0" reloadable="true" crossContext="true"/>
</Host>

// 再次重启Tomcat服务
# /usr/local/tomcat/bin/shutdown.sh
# /usr/local/tomcat/bin/startup.sh

浏览器中进行数据库的配置
需要定义hosts:10.1.1.28 zrlog.test.cn
浏览器访问效果如下

在这里插入图片描述
需要创建一个专用的数据库和数据库用户

# mysql -uroot -p123456

mysql> create database zrlog;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on zrlog.* to 'zrlog'@'127.0.0.1' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

然后再浏览器中填入刚才创建的数据库的相应信息,再点击下一步
设置管理员账号密码,以及网站的基本信息
在这里插入图片描述
点击下一步后即可完成配置
在这里插入图片描述

再点击“点击查看”,就可以访问博客的首页了
在这里插入图片描述

Tomcat日志

配置方式

Tomcat配置访问日志的方法是在对应虚拟主机的里面加入下面的配置:

// 这里将日志的配置添加到先前配置的tomcat.test.cn这个虚拟主机里
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
         prefix="123.cn_access" suffix=".log"
         pattern="%h %l %u %t &quot;%r&quot; %s %b" />

# prefix定义访问日志的前缀,
# suffix定义日志的后缀,
# pattern定义日志格式。
# 新增加的虚拟主机默认并不会生成类似默认虚拟主机的那个localhost.日期.log日志,
# 错误日志会统一记录到catalina.out中。
# 关于Tomcat日志,你最需要关注catalina.out,当出现问题时,我们应该第一想到去查看它。

测试

// 添加完配置后,先重启Tomcat
# /usr/local/tomcat/bin/shutdown.sh
# /usr/local/tomcat/bin/startup.sh 

// curl测试访问 tomcat.test.cn
# curl -x10.1.1.28:80 tomcat.test.cn
<h1>Tomcat Test</h1>

// 查看访问日志
# cat /usr/local/tomcat/logs/tomcat.test.cn_access.2018-07-17.log 
10.1.1.28 - - [17/Jul/2018:20:06:14 +0800] "GET / HTTP/1.1" 200 21

扩展

java容器比较 http://my.oschina.net/diedai/blog/271367

http://www.360doc.com/content/11/0618/21/16915_127901371.shtml

j2ee、j2se、ejb、javabean、serverlet、jsp之间关系 http://bbs.csdn.net/topics/50015576

tomcat server.xml配置详解 http://blog.csdn.net/yuanxuegui2008/article/details/6056754

tomcat常用数据库连接的方法 http://wjw7702.blog.51cto.com/5210820/1109263

JAR、WAR包区别 http://blog.csdn.net/lishehe/article/details/41607725

tomcat常见配置汇总 http://blog.sina.com.cn/s/blog_4ab26bdd0100gwpk.html

resin安装 http://fangniuwa.blog.51cto.com/10209030/1763488/

1 tomcat 单机多实例
http://www.ttlsa.com/tomcat/config-multi-tomcat-instance/

2 tomcat的jvm设置和连接数设置
http://www.cnblogs.com/bluestorm/archive/2013/04/23/3037392.html

3 jmx监控tomcat
http://blog.csdn.net/l1028386804/article/details/51547408

4 jvm性能调优监控工具jps/jstack/jmap/jhat/jstat
http://blog.csdn.net/wisgood/article/details/25343845

http://guafei.iteye.com/blog/1815222

5 gvm gc 相关
http://www.cnblogs.com/Mandylover/p/5208055.html

http://blog.csdn.net/yohoph/article/details/42041729

tomcat内存溢出
https://blog.csdn.net/ye1992/article/details/9344807

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值