1.Tomcat介绍
1.1 什么是Tomcat
Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。
由于 Tomcat 本身也内含了一个 HTTP 服务器,它也可以被视作一个单独的 Web 服务器。但是,不能将 Tomcat 和 Apache HTTP 服务器混淆,Apache HTTP 服务器是一个用 C 语言实现的 HTTP Web 服务器;这两个 HTTP web server 不是捆绑在一起的。Tomcat 包含了一个配置管理工具,也可以通过编辑XML格式的配置文件来进行配置。
1.2 Tomcat 重要目录
- /bin - Tomcat 脚本存放目录(如启动、关闭脚本)。
*.sh
文件用于 Unix 系统;*.bat
文件用于 Windows 系统。 - /conf - Tomcat 配置文件目录。
- /logs - Tomcat 默认日志目录。
- /webapps - webapp 运行的目录。
2.安装jdk
2.1 下载jdk,并安装
2.1.1这个不能直接用wget下载,需要先到官网上面下载源码包再传到自已的系统中安装。
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2.1.2 我们可以使用之前搭建的ftp来传送文件
2.1.2 安装jdk
a.首先我们将相关源码包放到指定目录,并解压
[root@knightlai]# mv jdk-8u181-linux-x64.tar.gz /usr/local/src/
[root@knightlai src]# tar xzvf jdk-8u181-linux-x64.tar.gz
jdk1.8.0_181/lib/visualvm/profiler/modules/org-netbeans-lib-profiler-common.jar
jdk1.8.0_181/lib/missioncontrol/
jdk1.8.0_181/lib/missioncontrol/plugins/
jdk1.8.0_181/lib/missioncontrol/plugins/org.eclipse.equinox.p2.operations.nl_zh_4.4.0.v20140623020002.jar
jdk1.8.0_181/lib/missioncontrol/plugins/org.eclipse.equinox.p2.repository.nl_zh_4.4.0.v20140623020002.jar
jdk1.8.0_181/lib/missioncontrol/plugins/org.eclipse.equinox.p2.touchpoint.eclipse_2.1.200.v20140512-1650.jar
jdk1.8.0_181/lib/missioncontrol/plugins/org.eclipse.e4.core.di.extensions_0.12.0.v20140417-2033.jar
jdk1.8.0_181/lib/missioncontrol/plugins/org.eclipse.core.databinding.property.nl_ja_4.4.0.v20140623020002.jar
jdk1.8.0_181/lib/missioncontrol/plugins/org.eclipse.jetty.security_8.1.14.v20131031.jar
.......................................................................
b.添加java的相关环境变量
[root@knightlai src]# mv jdk1.8.0_181/ /usr/local/jdk1.8
//编辑环境变量文件增加以下几行
[root@knightlai src]# vim /etc/profile
export PATH=/usr/local/mysql/bin:$PATH
export JAVA_HOME=/usr/local/jdk1.8/
export JAVA_BIN=/usr/local/jdk1.8/bin
export JRE_HOME=/usr/local/jdk1.8/jre
export PATH=$PATH:/usr/local/jdk1.8/bin:/usr/lcoal/jdk1.8/jre/bin
export CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib/charsets.jar
c.检查jdk是否安装成功如果出现以下版本号就说明成功了!
[root@knightlai 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)
3.安装Tomcat
3.1 下载tomcat并解压到相关目录
[root@knightlai src]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.tar.gz
--2018-10-07 20:24:57-- https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.tar.gz
Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.8.193, 2402:f000:1:408:8100::1
Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:443... connected.
............................................................
[root@knightlai src]# tar xzvf apache-tomcat-8.5.34.tar.gz
apache-tomcat-8.5.34/conf/
apache-tomcat-8.5.34/conf/catalina.policy
apache-tomcat-8.5.34/conf/catalina.properties
apache-tomcat-8.5.34/conf/context.xml
apache-tomcat-8.5.34/conf/jaspic-providers.xml
apache-tomcat-8.5.34/conf/jaspic-providers.xsd
apache-tomcat-8.5.34/conf/logging.properties
apache-tomcat-8.5.34/conf/server.xml
apache-tomcat-8.5.34/conf/tomcat-users.xml
apache-tomcat-8.5.34/conf/tomcat-users.xsd
apache-tomcat-8.5.34/conf/web.xml
apache-tomcat-8.5.34/bin/
apache-tomcat-8.5.34/lib/
apache-tomcat-8.5.34/logs/
apache-tomcat-8.5.34/temp/
...................................................
3.2 启动tomcat服务
[root@knightlai src]# mv apache-tomcat-8.5.34 /usr/local/tomcat
//启动tomcat
[root@knightlai 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进程是否启动
[root@knightlai src]# ps aux|grep tomcat
root 18102 2.5 8.7 2292036 87816 pts/1 Sl 20:29 0:04 /usr/local/jdk1.8/jre/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
root 18152 0.0 0.0 112704 960 pts/1 S+ 20:32 0:00 grep --color=auto tomcat
//查看监听端口
[root@knightlai src]# netstat -lnp |grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 833/nginx: master p
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 18102/java
tcp6 0 0 :::8009 :::* LISTEN 18102/java
tcp6 0 0 :::8080 :::* LISTEN 18102/java
udp 0 0 127.0.0.1:802 0.0.0.0:* 6137/rpc.statd
http访问端口(默认为8080端口)
Shutdown远程停服务端口(默认为8005端口)
AJP端口(默认为8009端口)
4.配置Tomcat监听80端口
4.1 编辑tomcat服务配置文件
[root@knightlai src]# vim /usr/local/tomcat/conf/server.xml
<Connector port="80" protocol="HTTP/1.1" //这里修改为80
connectionTimeout="20000"
redirectPort="8443" />
//tomcat服务没有重启只能先关闭再开始
[root@knightlai 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
[root@knightlai 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.
5.配置Tomcat虚拟主机
5.1 配置tomcat默认虚拟主机
//这一段就是虚拟主机配置文件
[root@knightlai src]# vim /usr/local/tomcat/conf/server.xml
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
其中<Host>和</Host>之间的配置为虚拟主机配置部分,name定义域名,
appBase定义应用的目录,Java的应用通常是一个war的压缩包,你只需要将war的压缩包放到appBase目录下面即可。
//默认我们之前80端口被nginx占用了
[root@knightlai src]# netstat -lnp |grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 833/nginx: master p
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 18102/java
tcp6 0 0 :::8009 :::* LISTEN 18102/java
tcp6 0 0 :::8080 :::* LISTEN 18102/java
udp 0 0 127.0.0.1:802 0.0.0.0:* 6137/rpc.statd
//停止nginx
[root@knightlai src]# systemctl stop nginx
[root@knightlai src]# /usr/local/tomcat/bin/shutdown.sh
[root@knightlai src]# /usr/local/tomcat/bin/startup.sh
//再关闭tomcat服务再开启就可以看到tomcat以80端口开启了
[root@knightlai src]# !net
netstat -lnp |grep 80
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 18288/java
tcp6 0 0 :::8009 :::* LISTEN 18288/java
tcp6 0 0 :::80 :::* LISTEN 18288/java
udp 0 0 127.0.0.1:802 0.0.0.0:* 6137/rpc.statd
5.2 增加一个虚拟主机,并部署一个博客网站
5.2.1 编辑配置文件增加虚拟主机配置
[root@knightlai src]# vim /usr/local/tomcat/conf/server.xml
<Host name="www.aaa.com" appBase="" autoDeploy="true" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
<Context path="" docBase="/data/wwwroot/aaa.com" reloadable="true" />
</Host>
5.2.2 下载zrlog并部署到虚拟主机
[root@knightlai src]# wget http://dl.zrlog.com/release/zrlog.war
--2018-10-07 21:10:54-- http://dl.zrlog.com/release/zrlog.war
Resolving dl.zrlog.com (dl.zrlog.com)... 183.131.24.61
Connecting to dl.zrlog.com (dl.zrlog.com)|183.131.24.61|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9964428 (9.5M) [application/zip]
Saving to: ‘zrlog.war’
100%[=========================================================================================================================================>] 9,964,428 2.17MB/s in 4.2s
2018-10-07 21:10:59 (2.27 MB/s) - ‘zrlog.war’ saved [9964428/9964428]
//将zrlog复制到我们的虚拟主机目录下面
[root@knightlai src]# mv zrlog.war /usr/local/tomcat/webapps/
[root@knightlai src]# ls /usr/local/tomcat/webapps/
docs examples host-manager manager ROOT zrlog zrlog.war
5.2.3 安装zrlog
看到这个页面我们需要新建一个数据库zrlog和一个操作用户test
[root@knightlai src]# mysql -uroot -p123456
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 20
Server version: 5.6.39 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, 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.
//创建一个zrlog库文件
mysql> create database zrlog
-> ;
Query OK, 1 row affected (0.10 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db1 |
| mysql |
| performance_schema |
| test |
| zrlog |
+--------------------+
6 rows in set (0.16 sec)
//新建一个test用户
mysql> grant all on *.* to 'test' identified by '123456';
Query OK, 0 rows affected (0.11 sec)
点击下一步直接安装完成。
5.2.4 利用自已设置的域名部署博客
[root@knightlai webapps]# cat /usr/local/tomcat/conf/server.xml
</Host>
<Host name="www.aaa.com" appBase="" autoDeploy="true" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
<Context path="" docBase="/data/wwwroot/aaa.com" reloadable="true" />
</Host>
//只要把zrlog网站文件复制到我们的域名目录下面
[root@knightlai webapps]# mv zrlog/* /data/wwwroot/aaa.com/
我们可以通过配置的虚拟主机登录了!
6.Tomcat日志
6.1 查看tomcat相关日志
[root@knightlai aaa.com]# cd /usr/local/tomcat/logs/
[root@knightlai logs]# ls
catalina.2018-10-07.log catalina.out host-manager.2018-10-07.log localhost.2018-10-07.log localhost_access_log.2018-10-07.txt manager.2018-10-07.log
07-Oct-2018 20:29:23.507 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version: Apache Tomcat/8.5.34
07-Oct-2018 20:29:23.676 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Sep 4 2018 22:28:22 UTC
07-Oct-2018 20:29:23.676 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number: 8.5.34.0
07-Oct-2018 20:29:23.677 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
07-Oct-2018 20:29:23.677 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 3.10.0-862.el7.x86_64
07-Oct-2018 20:29:23.677 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64
07-Oct-2018 20:29:23.677 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /usr/local/jdk1.8/jre
07-Oct-2018 20:29:23.677 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 1.8.0_181-b13
07-Oct-2018 20:29:23.677 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Oracle Corporation
07-Oct-2018 20:29:23.677 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/local/tomcat
07-Oct-2018 20:29:23.677 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/local/tomcat
07-Oct-2018 20:29:23.678 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.p
.....................................................
其中catalina开头的日志为Tomcat的综合日志,它记录Tomcat服务相关信息,也会记录错误日志。
其中catalina.2018-xx-xx.log和catalina.out内容相同,前者会每天生成一个新的日志。
host-manager和manager为管理相关的日志,其中host-manager为虚拟主机的管理日志。
localhost和localhost_access为虚拟主机相关日志,其中带access字样的日志为访问日志,不带access字样的为默认虚拟主机的错误日志。
6.2 tomcat日志说明
6.2.1 Tomcat 日志信息分为两类:
- 访问日志信息,记录访问的时间,IP,访问的资料等相关信息。
- 运行中的日志,主要记录运行的一些信息,尤其是一些异常错误日志信息。
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />123
参数详解:
className:官方说明必须按照默认配置不可更改。
directory:日志文件位置。
prefix:日志文件前缀。
suffix:日志文件后缀。
pattern:日志模式参数,设置参数很丰富,参数说明见下表。
resolveHosts:如果这个值是true的话,tomcat会将这个服务器IP地址通过DNS转换为主机名,如果是false,就直接写服务器IP地址。
pattern 参数:
%a - 远端IP地址
%A - 本地IP地址
%b - 发送的字节数,不包括HTTP头,如果为0,使用”-”
%B - 发送的字节数,不包括HTTP头
%h - 远端主机名(如果resolveHost=false,远端的IP地址)
%H - 请求协议
%l - 从identd返回的远端逻辑用户名(总是返回 ‘-‘)
%m - 请求的方法(GET,POST,等)
%p - 收到请求的本地端口号
%q - 查询字符串(如果存在,以 ‘?’开始)
%r - 请求的第一行,包含了请求的方法和URI
%s - 响应的状态码
%S - 用户的session ID
%t - 日志和时间,使用通常的Log格式
%u - 认证以后的远端用户(如果存在的话,否则为’-‘)
%U - 请求的URI路径
%v - 本地服务器的名称
%D - 处理请求的时间,以毫秒为单位
%T - 处理请求的时间,以秒为单位
6.2.2 日志类型与级别
Tomcat 日志分为下面5类:
catalina 、 localhost 、 manager 、 admin 、 host-manager
每类日志的级别分为如下 7 种:
SEVERE (highest value) > WARNING > INFO > CONFIG > FINE > FINER > FINEST (lowest value)