第二十六节课预习

第二十六课预习任务

16.1 Tomcat介绍
16.2 安装jdk
16.3 安装Tomcat
16.4 配置Tomcat监听80端口
16.5/16.6/16.7 配置Tomcat虚拟主机
16.8 Tomcat日志
扩展
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

一、 Tomcat介绍

Tomcat 是什么

Tomcat 是由 Apache软件基金会Apache Software Foundation)开发的一个 Servlet 容器akarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。

由于 Tomcat 本身也内含了一个 HTTP 服务器,它也可以被视作一个单独的 Web 服务器。但是,不能将 Tomcat 和 Apache HTTP 服务器混淆,Apache HTTP 服务器是一个用 C 语言实现的 HTTP Web 服务器;这两个 HTTP web server 不是捆绑在一起的。Tomcat 包含了一个配置管理工具,也可以通过编辑XML格式的配置文件来进行配置。

 tomcat是一个中间件,真正起作用的,解析java脚本的是jdk

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

 最主流的jdk为sun公司发布的jdk,除此之外,其实IBM公司也有发布JDK,CentOS上也可以用yum安装openjdk

java程序写的网站用tomcat+jdk来运行

 

二、 安装jdk

 jdk版本1.61.71.8

 官网下载地址

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

 

下载jdk8,放到/usr/local/src/目录下

 

tar zxvf jdk-8u144-linux-x64.tar.gz

 

mv jdk1.8.0_144 /usr/local/jdk1.8

 

vi /etc/profile //最后面增加

 

JAVA_HOME=/usr/local/jdk1.8/

JAVA_BIN=/usr/local/jdk1.8/bin

JRE_HOME=/usr/local/jdk1.8/jre

PATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin

CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib/charsets.jar

 

source /etc/profile

 

java -version

 

1.从Orcale官网下载当前的jdk版本,然后上传到服务器上

当前下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

 

[root@mysql src]# wget http://111.1.50.20/files/4041000006F611C7/download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz

 

  1. 解压jdk包

 

[root@mysql src]# ls

jdk-8u181-linux-x64.tar.gz  mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz

//解压jdk

[root@mysql src]# tar -zxf jdk-8u181-linux-x64.tar.gz 

[root@mysql src]# ls

jdk1.8.0_181                mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz

jdk-8u181-linux-x64.tar.gz

3.移动jdk包到/usr/local/下

[root@mysql src]# mv jdk1.8.0_181 /usr/local/jdk1.8

4.新建jdk环境变量

[root@mysql src]# vim /etc/profile

//在文件末尾添加如下内容

export JAVA_HOME=/usr/local/jdk1.8/

export JAVA_BIN=$JAVA_HOME/bin

export JRE_HOME=$JAVA_HOME/jre

export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

export CLASSPATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/jre/lib/charsets.jar

 

//使环境变量立即生效

[root@mysql src]# source /etc/profile

5.测试jdk环境是否生效

[root@mysql src]# java -version

java version "1.8.0_181"

Java(TM) SE Runtime Environment (build 1.8.0_181-b13)

Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

 

三、 安装Tomcat

 cd /usr/local/src

 wget http://apache.fayea.com/tomcat/tomcat-8/v8.5.20/bin/apache-tomcat-8.5.20.tar.gz

 tar zxvf apache-tomcat-8.5.20.tar.gz

 mv apache-tomcat-8.5.20 /usr/local/tomcat

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

 ps aux|grep tomcat

 netstat -lntp |grep java

 三个端口8080为提供web服务的端口,8005为管理端口,8009端口为第三方服务调用的端口,比如httpdTomcat结合时会用

1.这里以tomcat-8.5.34为例

[root@mysql ~]# cd /usr/local/src/

或二进制

[root@mysql src]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.tar.gz

[root@mysql src]# ls

apache-tomcat-8.5.34             jdk-8u181-linux-x64.tar.gz

 mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz

apache-tomcat-8.5.34.tar.gz

2.解压tomcat并移动到/usr/local

[root@mysql src]# tar -zxf apache-tomcat-8.5.34.tar.gz 

[root@mysql src]# mv apache-tomcat-8.5.34-src /usr/local/tomcat

  1. 启动tomcat

[root@mysql src]# /usr/local/tomcat/bin/startup.sh

Using CATALINA_BASE:   /usr/local/tomcat

Using CATALINA_HOME:   /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME:        /usr/local/jdk1.8//jre

Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

Tomcat started.

//检测是否正常启动

[root@mysql src]# netstat -nltup | grep java

tcp6       0      0 :::8080                 :::*                    LISTEN      1267/java           

tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      1267/java           

tcp6       0      0 :::8009                 :::*                    LISTEN      1267/java

本地测试

[root@mysql src]# curl -x:127.0.0.1:80 127.0.0.1:8080

<!DOCTYPE html>

<html lang="en">

    <head>

        <meta charset="UTF-8" />

        <title>Apache Tomcat/8.5.34</title>

        <link href="favicon.ico" rel="icon" type="image/x-icon" />

        <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />

        <link href="tomcat.css" rel="stylesheet" type="text/css" />

</head>

其他中间略

远程浏览器测试192.168.76.1358080

四、 配置Tomcat监听80端口

 vim /usr/local/tomcat/conf/server.xml

Connector port="8080" protocol="HTTP/1.1"修改为Connector port="80" protocol="HTTP/1.1"

 /usr/local/tomcat/bin/shutdown.sh

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

 

Tomcat默认侦听的是8080端口,不是很方便。可以通过修改配置文件的方式将默认侦听的端口改为80.

[root@mysql src]# vim /usr/local/tomcat/conf/server.xml //修改如下字段

Connector port="8080"---->Connector port="80"//停止tomcat

[root@mysql src]# /usr/local/tomcat/bin/shutdown.sh 

Using CATALINA_BASE:   /usr/local/tomcat

Using CATALINA_HOME:   /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME:        /usr/local/jdk1.8//jre

Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

//启动tomcat

[root@mysql src]# /usr/local/tomcat/bin/startup.sh 

Using CATALINA_BASE:   /usr/local/tomcat

Using CATALINA_HOME:   /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME:        /usr/local/jdk1.8//jre

Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

Tomcat started.//注意,tomcat没有restart参数,需要用shutdown.sh关闭,然后再用Startup启动。

本地测试

[root@mysql src]# curl -x127.0.0.1:80 127.0.0.1

<!DOCTYPE html>

<html lang="en">

    <head>

        <meta charset="UTF-8" />

        <title>Apache Tomcat/8.5.34</title>

        <link href="favicon.ico" rel="icon" type="image/x-icon" />

        <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />

        <link href="tomcat.css" rel="stylesheet" type="text/css" />

    </head>

 

...中间略其他

远程浏览器测试

 

192.168.76.135

 

五、 配置Tomcat虚拟主机

 

 vim /usr/local/tomcat/conf/server.xml

其中<Host></Host>之间的配置为虚拟主机配置部分,name定义域名,

appBase定义应用的目录,Java的应用通常是一个war的压缩包,你只需要将war的压缩包放到appBase目录下面即可。刚刚阿铭访问的Tomcat默认页其实就是在appBase目录下面,不过是在它子目录ROOT里。

 增加虚拟主机,编辑server.xml,</Host>下面增加如下内容

<Host name="www.123.cn" appBase=""

    unpackWARs= "true" autoDeploy="true"

    xmlValidation="false" xmlNamespaceAware="false">

    <Context path="" docBase="/data/wwwroot/123.cn/" debug="0" reloadable="true" crossContext="true"/>

</Host>

 

 docBase,这个参数用来定义网站的文件存放路径,如果不定义,默认是在appBase/ROOT下面,定义了docBase就以该目录为主了,其中appBasedocBase可以一样。在这一步操作过程中很多同学遇到过访问404的问题,其实就是docBase没有定义对。

 appBase为应用存放目录,通常是需要把war包直接放到该目录下面,它会自动解压成一个程序目录

 下面我们通过部署一个java的应用来体会appBasedocBase目录的作用

 下载zrlog wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war

 mv zrlog-1.7.1-baaecb9-release.war /usr/local/tomcat/webapps/

 mv /usr/local/tomcat/webapps/zrlog-1.7.1-baaecb9-release /usr/local/tomcat/webapps/zrlog

 浏览器访问 ip:8080/zrlog/install/

 mv /usr/local/tomcat/webapps/zrlog/* /data/wwwroot/123.cn/

 

这里以增加虚拟主机www.tomcattest.com为例

[root@mysql src]# vim /usr/local/tomcat/conf/server.xml

......

//默认虚拟主机的配置<Host...> </Host>表示一个虚拟主机

      <Host name="localhost"  

appBase="webapps"

            unpackWARs="true" 

autoDeploy="true">

         </Host>

//增加www.tomcattest.com虚拟主机配置

<Host name="www.tomcattest.com" 

appBase=""

 unpackWARs= "true"

 autoDeploy="true"

xmlValidation="false" 

xmlNamespaceAware="false">

<Context path="" docBase="/data/wwwroot/tomcattest.com/" debug="0" reloadable="true" crossContext="true"/>

</Host>

 

[root@mysql tomcattest]# /usr/local/tomcat/bin/shutdown.sh      

Using CATALINA_BASE:   /usr/local/tomcat

Using CATALINA_HOME:   /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME:        /usr/local/jdk1.8//jre

Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

[root@mysql tomcattest]# /usr/local/tomcat/bin/startup.sh  

Using CATALINA_BASE:   /usr/local/tomcat

Using CATALINA_HOME:   /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME:        /usr/local/jdk1.8//jre

Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

Tomcat started.

 

[root@mysql tomcattest]# mkdir -p /data/wwwroot/tomcattest.com

[root@mysql src]# ls -ld  /data/wwwroot/tomcattest.com

drwxr-xr-x. 2 root root 6 1011 11:38 /data/wwwroot/tomcattest.com

//新建测试文件

[root@mysql src]# cd /data/wwwroot/tomcattest.com

[root@mysql tomcattest.com]# vim 1.html  

[root@mysql tomcattest.com]# cat 1.html

I am www.tomcattest.com!

[root@mysql tomcattest.com]# mv /usr/local/tomcat/webapps/ROOT/index.jsp /data/wwwroot/tomcattest.com/index.jsp

本地测试

[root@mysql wwwroot]# curl -x127.0.0.1:80 www.tomcattest.com/1.html

I am www.tomcattest.com!

 

[root@mysql wwwroot]#  curl -x127.0.0.1:80 www.tomcattest.com/index.jsp -I

HTTP/1.1 200

Content-Type: text/html;charset=UTF-8

Transfer-Encoding: chunked

Date: Thu, 11 Oct 2018 06:01:26 GMT

远程浏览器测试

 www.tomcattest.com/1.html

www.tomcattest.com/index.jsp

 

一、 Tomcat日志

 

 ls /usr/local/tomcat/logs

 

 其中catalina开头的日志为Tomcat的综合日志,它记录Tomcat服务相关信息,也会记录错误日志。

 

 其中catalina.2017-xx-xx.logcatalina.out内容相同,前者会每天生成一个新的日志。

 

 host-managermanager为管理相关的日志,其中host-manager为虚拟主机的管理日志。

 

 localhostlocalhost_access为虚拟主机相关日志,其中带access字样的日志为访问日志,不带access字样的为默认虚拟主机的错误日志。

 

 访问日志默认不会生成,需要在server.xml中配置一下。

 

 

 

具体方法是在对应虚拟主机的<Host></Host>里面加入下面的配置(假如域名为123.cn):

 

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

 

         prefix="123.cn_access" suffix=".log"

 

         pattern="%h %l %u %t "%r" %s %b" />

 

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

 

 

 

访问日志默认不会生成,需要在server.xml中配置一下。

 

 

 

[root@mysql wwwroot]# cd /usr/local/tomcat/logs/

 

[root@mysql logs]# ls

 

catalina.2018-10-11.log      localhost.2018-10-11.log

 

catalina.out                 localhost_access_log.2018-10-11.txt

 

host-manager.2018-10-11.log  manager.2018-10-11.log

 

 

 

[root@mysql logs]# head -n 5 catalina.2018-10-11.log

 

11-Oct-2018 10:58:33.104 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.5.34

 

11-Oct-2018 10:58:33.227 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Sep 4 2018 22:28:22 UTC

 

11-Oct-2018 10:58:33.227 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.5.34.0

 

11-Oct-2018 10:58:33.228 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux

 

11-Oct-2018 10:58:33.228 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            3.10.0-693.el7.x86_64

 

 

 

 

 

[root@mysql logs]# head -n 5 catalina.out

 

11-Oct-2018 10:58:33.104 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.5.34

 

11-Oct-2018 10:58:33.227 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Sep 4 2018 22:28:22 UTC

 

11-Oct-2018 10:58:33.227 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.5.34.0

 

11-Oct-2018 10:58:33.228 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux

 

11-Oct-2018 10:58:33.228 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            3.10.0-693.el7.x86_64

 

 

 

[root@mysql logs]# head -n 5 localhost_access_log.2018-10-11.txt

 

127.0.0.1 - - [11/Oct/2018:11:00:11 +0800] "GET / HTTP/1.1" 200 11286

 

127.0.0.1 - - [11/Oct/2018:11:18:40 +0800] "GET / HTTP/1.1" 200 11286

 

127.0.0.1 - - [11/Oct/2018:11:31:15 +0800] "GET / HTTP/1.1" 200 11286

 

127.0.0.1 - - [11/Oct/2018:11:32:13 +0800] "GET / HTTP/1.1" 200 11286

 

 

 

 

 

[root@mysql logs]# head -n 5 localhost.2018-10-11.log

 

11-Oct-2018 10:58:37.117 信息 [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()

 

11-Oct-2018 10:58:37.117 信息 [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()

 

11-Oct-2018 10:58:37.119 信息 [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log ContextListener: attributeAdded('StockTicker', 'async.Stockticker@48a46425')

 

11-Oct-2018 11:18:02.373 信息 [localhost-startStop-2] org.apache.catalina.core.ApplicationContext.log SessionListener: contextDestroyed()

 

11-Oct-2018 11:18:02.374 信息 [localhost-startStop-2] org.apache.catalina.core.ApplicationContext.log ContextListener: contextDestroyed()

 

 

 

//配置www.tomcattest.com的访问日志

 

[root@mysql logs]# vim /usr/local/tomcat/conf/server.xml

 

 

 

      </Host>

 

      <Host name="www.tomcattest.com" appBase=""

 

      unpackWARs= "true" autoDeploy="true"

 

      xmlValidation="false" xmlNamespaceAware="false">

 

      <Context path="" docBase="/data/wwwroot/tomcattest.com/" debug="0" reloadable="true" crossContext="true"/>

 

      //增加日志配置

 

      <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs/tomcattest"

 

      prefix="localhost_access" suffix=".log"

 

      pattern="%h %l %u %t "%r" %s %b" />

 

</Host>

 

[root@mysql tomcattest]# /usr/local/tomcat/bin/shutdown.sh

 

Using CATALINA_BASE:   /usr/local/tomcat

 

Using CATALINA_HOME:   /usr/local/tomcat

 

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

 

Using JRE_HOME:        /usr/local/jdk1.8//jre

 

Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

 

[root@mysql tomcattest]# /usr/local/tomcat/bin/startup.sh

 

Using CATALINA_BASE:   /usr/local/tomcat

 

Using CATALINA_HOME:   /usr/local/tomcat

 

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

 

Using JRE_HOME:        /usr/local/jdk1.8//jre

 

Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

 

Tomcat started.

 

 

 

[root@mysql tomcat]# cd logs

 

[root@mysql logs]# ls

 

catalina.2018-10-11.log      localhost.2018-10-11.log             tomcattest

 

catalina.out                 localhost_access_log.2018-10-11.txt

 

host-manager.2018-10-11.log  manager.2018-10-11.log

 

[root@mysql logs]# cd tomcattest

 

[root@mysql tomcattest]# ls

 

localhost_access.2018-10-11.log

 

[root@mysql tomcattest]# curl -x127.0.0.1:80 www.tomcattest.com/1.html

 

I am www.tomcattest.com!

 

[root@mysql tomcattest]# cat localhost_access.2018-10-11.log

 

127.0.0.1 - - [11/Oct/2018:14:31:44 +0800] "GET /1.html HTTP/1.1" 200 25

 

 

 

posted @ 2018-10-11 11:48  Linux操作系统爱好者  阅读(199)  评论(0)    收藏  举报