第二十六课预习任务
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.6,1.7,1.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
- 解压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端口为第三方服务调用的端口,比如httpd和Tomcat结合时会用
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
- 启动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.135:8080
四、 配置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就以该目录为主了,其中appBase和docBase可以一样。在这一步操作过程中很多同学遇到过访问404的问题,其实就是docBase没有定义对。
appBase为应用存放目录,通常是需要把war包直接放到该目录下面,它会自动解压成一个程序目录
下面我们通过部署一个java的应用来体会appBase和docBase目录的作用
下载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 10月 11 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 tomcattest]# curl -x127.0.0.1:80 www.tomcattest.com/1.html
I am www.tomcattest.com!
[root@mysql tomcattest]# curl -x127.0.0.1:80 www.tomcattest.com/index.jsp -I
HTTP/1.1 200 Content-Type: text/html;charset=UTF-8Transfer-Encoding: chunkedDate: Mon, 16 Jul 2018 08:33:23 GMT
远程浏览器测试
www.tomcattest.com/1.html
www.tomcattest.com/index.jsp
Zrblog的安装
1.从官网下载zrblog的安装包并上传到服务器
2.将程序复制到webapp目录
//因为与默认网站的目录重名,ROOT.war解压后将默认网站的内容覆盖了
//如果不想覆盖默认网站,请在拷入ROOT目录前改名
[root@mysql ~]# cd /usr/local/src/
[root@mysql src]# mv ROOT.war /usr/local/tomcat/webapps/
[root@mysql src]# cd !$
cd /usr/local/tomcat/webapps/
[root@mysql webapps]# pwd
/usr/local/tomcat/webapps
[root@mysql webapps]# ls
docs examples host-manager manager ROOT ROOT.war
3.新建zrlog数据库用户
[root@mysql init.d]# mysql -uroot
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.36 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database zrlog;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on zrlog.* to 'zrlogadmin'@127.0.0.1 identified by '123456';
Query OK, 0 rows affected (0.01 sec)
- 进入安装向导
192.168.76.135 /install
192.168.76.135
192.168.76.135 /admin/index#/dashboard
如果不想利用默认的网站,可将应用程序放入相应定义的目录即可。.war包在appbase定义的目录下
会自动解压。已经解压好的网站程序,也可以放到docbase定义的目录下。
六、 Tomcat日志
tomcat日志在/usr/local/tomcat/logs/下
其中catalina开头的日志为Tomcat的综合日志,它记录Tomcat服务相关信息,也会记录错误日志。
其中catalina.2017-xx-xx.log和catalina.out内容相同,前者会每天生成一个新的日志。
host-manager和manager为管理相关的日志,其中host-manager为虚拟主机的管理日志。
localhost和localhost_access为虚拟主机相关日志,其中带access字样的日志为访问日志,不带access字样的为默认虚拟主机的错误日志。
访问日志默认不会生成,需要在server.xml中配置一下。
[root@mysql tomcattest]# cd /usr/local/tomcat/logs/
[root@mysql logs]# ls -l
//catalina日志示例
-rw-r----- 1 root root 0 Jul 16 03:51 manager.2018-07-16.log
[root@mysql logs]# head -n 5 catalina.2018-10-10.log16-Jul-2018 03:51:21.812 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version: Apache Tomcat/8.5.3116-Jul-2018 03:51:21.816 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Apr 27 2018 20:24:25 UTC16-Jul-2018 03:51:21.816 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number: 8.5.31.016-Jul-2018 03:51:21.816 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux16-Jul-2018 03:51:21.816 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 3.10.0-693.el7.x86_64
//catalina.out日志示例[root@mysql logs]# head -n 5 catalina.out16-Jul-2018 03:51:21.812 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version: Apache Tomcat/8.5.3116-Jul-2018 03:51:21.816 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Apr 27 2018 20:24:25 UTC16-Jul-2018 03:51:21.816 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number: 8.5.31.016-Jul-2018 03:51:21.816 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux16-Jul-2018 03:51:21.816 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 3.10.0-693.el7.x86_64
//localhost_access日志示例[root@mysql logs]# head -n 5 localhost_access_log.2018-07-16.txt 10.0.1.229 - - [16/Jul/2018:03:53:06 -0400] "GET / HTTP/1.1" 200 1125010.0.1.229 - - [16/Jul/2018:03:53:06 -0400] "GET /tomcat.png HTTP/1.1" 200 510310.0.1.229 - - [16/Jul/2018:03:53:06 -0400] "GET /tomcat.css HTTP/1.1" 200 558110.0.1.229 - - [16/Jul/2018:03:53:07 -0400] "GET /bg-upper.png HTTP/1.1" 200 310310.0.1.229 - - [16/Jul/2018:03:53:07 -0400] "GET /asf-logo-wide.svg HTTP/1.1" 200 27235
//localhost日志示例[root@mysql logs]# head -n 5 localhost.2018-07-16.log 16-Jul-2018 03:51:23.554 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()16-Jul-2018 03:51:23.554 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()16-Jul-2018 03:51:23.556 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log ContextListener: attributeAdded('StockTicker', 'async.Stockticker@371e34e1')16-Jul-2018 04:00:44.831 INFO [localhost-startStop-2] org.apache.catalina.core.ApplicationContext.log SessionListener: contextDestroyed()16-Jul-2018 04:00:44.831 INFO [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 tomcattest]# ls
localhost_access.2018-07-16.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-07-16.log127.0.0.1 - - [16/Jul/2018:04:52:41 -0400] "GET /1.html HTTP/1.1" 200 25