Tomcat介绍

Tomcat是Apache软件基金会( Apache Software Foundation )的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。受Java爱好者的喜爱,并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。
Tomcat服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。目前有很多网站是用Java编写的,所以解析Java程序就必须有相关的软件来完成,Tomcat就是其中之一。
Java程序写的网站用Tomcat+JDK来运行。
Tomcat是一个中间件,真正起作用的,解析Java脚本的是JDK。
JDK(Java Development Kit)是整个Java的核心,它包含了Java运行环境和一堆Java相关的工具以及Java基础库。最主流的JDK为Sun公司发布的JDK,除此之外,其实IBM公司也有发布JDK,CentOS上也可以用yum安装OpenJDK。

环境准备

IP:192.168.200.222,使用VMWare Workstation软件安装CentOS 7.2操作系统,镜像使用提供的CentOS-7-x86_64-DVD-1511.iso
关闭防火墙并设置开机不自启,配置SElinux规则。

systemctl stop firewalld.service 
systemctl disable firewalld.service 
 setenforce 0(暂时关闭,重启后要再敲一次)

JDK安装

使用jdk-linux-x64.tar.gz安装包(1.8),官网下载地址:
http://www.oracle. com/echnetwork/java/javase/downloads/jdk8-downloads-2133151.html
这个下载地址不能在Linux虚拟机里使用wget命令下载,只能先通过浏览器下载到本机上,然后再上传到Linux。本次下载的版本为jdk1.8,将虚拟机连接CRT,通过CRT上传JDK到/usr/local/src/目录下。

进到src目录下,解压JDK文件

cd /usr/local/src
tar zxf jdk-linux-x64.tar.gz
mv jdk1.8.0_131 /usr/local/jdk1.8
ls /usr/local/

修改环境变量

vim /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
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

which java
/usr/local/jdk1.8/bin/java(这里为你安装的jdk路径)

如果which的结果为/usr/bin/java则说明这是系统自带的OpenJDK。这时,我们为了实验的一致性,把原来的Java目录重命名为java_bak,并使用source命令再次使环境变量生效

mv /usr/bin/java /usr/bin/java_bak

安装Tomcat

官网下载地址:http://tomcat.apache.org/
使用apache-tomcat-9.0.39.tar.gz软件包,上传到/usr/local/src目录下
解压和移动文件

cd /usr/local/src/
tar zxf apache-tomcat-9.0.39.tar.gz 
mv apache-tomcat-9.0.39 /usr/local/tomcat

启动Tomcat
本次下载解压的包是二进制包,不用我们去编译,使用/usr/local/tomcat/bin/startup.sh这个命令启动Tomcat

[root@localhost src]# cd ../tomcat/
[root@localhost 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
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

安装net-tools工具:yum install -y net-tools

用netstat命令来监听java相关服务端口,查看是否有以下端口存在(8009(没有,有也没问题)、8080、8005),如果存在则证明Tomcat服务启动成功。

[root@localhost tomcat]# netstat -ntlp |grep java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      11565/java          
tcp6       0      0 :::8080                 :::*                    LISTEN      11565/java  

三个端口8009、8005和8080的意义:
8080为提供Web服务的端口;
8005为管理端口;
8009端口为第三方服务调用的端口,比如httpd和Tomcat结合时会用到。

打开浏览器,在地址栏中输入http://IP:8080/(这里的IP为你虚拟机的IP地址,此处IP为192.168.200.222),可以看到Tomcat的默认页面。
tomcat默认页面
配置Tomcat监听80端口

Tomcat 监听的是8080端口,如果想要直接访问,不加8080端口(默认输入一个IP或者域名,访问80端口时是可以省略IP后端口号的)就需要配置Tomcat监听80端口,Tomcat是支持端口自定义的。

编辑Tomcat配置文件server.xml

vim /usr/local/tomcat/conf/server.xml
搜索8080
<Connector port="80(原为8080)" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

修改完配置文件,接下来就是重启Tomcat服务,Tomcat服务是不支持restart的方式重启服务的,所以要想重启服务必须先关闭服务,使用命令/usr/local/tomcat/bin/shutdown.sh,然后再启动服务,使用命令/usr/local/tomcat/bin/startup.sh。

[root@localhost 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
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
[root@localhost 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
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

重启服务之后,我们用netstat命令监听Java相关服务端口来查看是否启动成功

[root@localhost tomcat]# netstat -ntlp |grep java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      11695/java          
tcp6       0      0 :::80                   :::*                    LISTEN      11695/java    

端口变为80,成功。(8005有时候会没有,等待一会就有了)
如果没有80端口,可能和其他服务冲突了,关闭其他服务,再关闭后启动tomcat

浏览器访问
配置文件修改完成,并Tomcat服务启动成功后,打开浏览器在地址栏中输入http://192. 168.200.222/(注意你的IP),这时又会看见Tomcat默认页面。
80端口

配置Tomcat虚拟主机

Tomcat和Apache、Nginx一样,都支持虚拟主机配置。每个虚拟主机配置文件就是一台服务器,支持一个IP下可以访问多个域名,每个域名代表一个网站。所以一台服务器上可以配置多个网站。
编辑Tomcat配置文件,直接在配置文件内搜索Host,找到如下内容:

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

 				…………………………

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
      </Host>
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
      </Host>
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>

其中<Host></Host>之间的配置为虚拟主机配置部分

name定义域名;

appBase定义应用的目录;

unpackWARs为是否自动解压war包;

autoDeploy 如果此项设置为true,表示Tomcat服务处于运行状态,能够检测appbase下的文件,如果有新的Web应用加入进来,会自动发布这个Web应用。

Java的应用通常是一个JAR的压缩包,你只需要将JAR的压缩包放到appBase目录下面即可。

刚刚我访问的Tomcat默认页其实就是在appBase目录下面,不过是在它子目录ROOT里。

新增虚拟主机,编辑server.xml在下面增加以下内容:

<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为应用存放目录(实际上是一个相对路径,相对于 /usr/local/tomcat/ 路径),通常是需要把war包直接放到该目录下面,它会自动解压成一个程序目录。

搭建了一个Tomcat,想要使用Tomcat去跑一个网站。
首先应用不能是一个传统所谓的目录(Apache、Nginx访问网站,需要指定一个目录,目录里存放着PHP文件或者是Html的文件,然后去访问),

Tomcat需要提供一个war的包,就是一个压缩包,这个压缩包里面包含着运行这个网站的一些文件,包括配置,js代码,数据库相关的等等,都需要打包成war这种文件,而这个文件需要放置到 webapps 里面。

修改window宿主机的hosts文件:C:\Windows\System32\drivers\etc下的hosts文件添加192.168.200.222 www.123.cn保存即可。

浏览器测试:
测试

appBase部署Java应用

下面我们通过部署个Java的应用来体会appBase和docBase目录的区别。
为了方便测试,下载一个zrlog(Java写的blog站点应用,轻量),zrlog实际就是一个war包。
(下载地址:http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war)
先暂时将zrlog的war包下载到/usr/local/src目录下

cd /usr/local/src/
wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war
[root@localhost src]# ls |grep zrlog
zrlog-1.7.1-baaecb9-release.war

appBase支持自动解压,所以直接将war包拷贝到/usr/local/tomcat/webapps/目录下:

[root@localhost src]# cp zrlog-1.7.1-baaecb9-release.war  /usr/local/tomcat/webapps/
[root@localhost src]# ls /usr/local/tomcat/webapps/
docs          manager                      zrlog-1.7.1-baaecb9-release.war
examples      ROOT
host-manager  zrlog-1.7.1-baaecb9-release

将war包拷贝到/usr/local/tomcat/webapps/目录下之后,包会自动解压。(前提是tomcat正常启动。

[root@localhost src]# cd /usr/local/tomcat/webapps/
[root@localhost webapps]# ls
docs          manager                      zrlog-1.7.1-baaecb9-release.war
examples      ROOT
host-manager  zrlog-1.7.1-baaecb9-release
[root@localhost webapps]# mv zrlog-1.7.1-baaecb9-release zrlog
[root@localhost webapps]# ls
docs      host-manager  ROOT   zrlog-1.7.1-baaecb9-release.war
examples  manager       zrlog

一但重命名或删除war包解压后的包的文件时,war包就会再解压出一个文件夹。

浏览器访问测试:
zrlog
出现安装向导,这是一个配置数据库的过程。

数据库安装为LAMP的myql安装:https://blog.csdn.net/weixin_45642360/article/details/109080075这里不演示。
登入数据库,在数据库中创建一个zrlog数据库和zrlog用户。

[root@localhost webapps]# /usr/local/mysql/bin/mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.43 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, 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.04 sec)

mysql> grant all on zrlog.* to 'zrlog'@127.0.0.1 identified by '000000';//创建用户
Query OK, 0 rows affected (0.04 sec)

mysql> exit
Bye

检查创建用户是否可以登陆数据库,使用zrlog用户登录

[root@localhost webapps]# /usr/local/mysql/bin/mysql -u zrlog -h 127.0.0.1 -p000000
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 2
Server version: 5.6.43 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, 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> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
| zrlog              |
+--------------------+
3 rows in set (0.04 sec)

mysql> exit
Bye

检查完成,zrlog用户登录成功。使用 zrlog用户信息填写刚才在浏览器中打开的网页,Email填写自己的邮箱,本次是实验,填写内容为自定义邮箱(tomcat@163.com),单击“下一步”按钮
安装设置管理员账号(admin)和管理员密码(123456),网站标题和子标题按需填写,本次自定义内容(网站标题:“测试”,网站子标题:“linux”)

安装2单击“点击查看”按钮,我们就可以进入搭建好的zrlog页面了。
在这里插入图片描述

在这里插入图片描述我们也可以进入管理页面,写一些文章,单击上图主菜单栏中的“管理”按钮,输入安装向导里已经设置好的账户名和密码(admin:123456),单击“登录”按钮,登录成功页面。

在这里插入图片描述单击“文章撰写”栏目,写上自己想写的内容,然后保存,然后回到主页面,你就可以看到刚才你写的内容。

在这里插入图片描述

ocBase部署Java应用

我们在浏览器访问zrlog需要指定IP地址加目录,那么如何才能输入IP直接访问该目录呢?
查看虚拟主机docBase的路径

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

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

创建docBase目录,命令如下:

 mkdir -p /data/wwwroot/123.cn/

将/usr/local/tomcat/webapps/zrlog 中的所有文件移动到/data/wwwroot/123.cn/目录下,命令如下:

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

接下来就用域名去访问zrlog页面,由于之前配置完虚拟主机后,并没有重启服务,这里要重启一下服务。

[root@localhost webapps]# /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
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
[root@localhost webapps]# /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
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

重启Tomcat服务完成后,打开浏览器在地址栏输入www.123.cn,就可以看到zrlog的首页。
在这里插入图片描述这个页面跟之前用指定IP加目录访问的页面是一模一样的。

Tomcat日志

Tomcat在应用过程中,难免会出现错误,如何去查看这些错误,这就需要查看Tomcat的日志。Tomcat日志存放在/usr/local/tomcat/logs/目录下

[root@localhost tomcat]# ls logs/
catalina.2020-10-20.log      localhost.2020-10-20.log             zrlog
catalina.out                 localhost_access_log.2020-10-20.txt
host-manager.2020-10-20.log  manager.2020-10-20.log

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

catalina.2020-xx-xx.log和catalina.out内容相同,前者会每天生成一个新的日志。

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

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

配置生成日志
由于日志默认不会生成,需要在server.xml中配置一下。所以接下来配置新增虚拟主机的访问日志,具体方法是在对应虚拟主机的里面加入下面的配置(我们用www.123.cn来进行配置),编辑以下配置文件server.xml

<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"/>
<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"/>
      </Host>

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

配置完成后,重启Tomcat服务

[root@localhost logs]# /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
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
[root@localhost logs]# /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
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

重启Tomcat服务完成后,访问网站,查看/usr/local/tomcat/logs目录下是否有日志生成,并且查看生成的日志信息

[root@localhost logs]# pwd
/usr/local/tomcat/logs
[root@localhost logs]# ls 
123.cn_access.2020-10-20.log         log
catalina.2020-10-20.log              logs
catalina.out                         manager.2020-10-20.log
host-manager.2020-10-20.log          temp
localhost.2020-10-20.log             zrlog
localhost_access_log.2020-10-20.txt
[root@localhost logs]# cat 123.cn_access.2020-10-20.log 
192.168.200.1 - - [20/Oct/2020:11:38:43 +0800] "GET / HTTP/1.1" 200 8626
192.168.200.1 - - [20/Oct/2020:11:38:43 +0800] "GET /include/templates/default/js/lib/modernizr.custom.16617.js HTTP/1.1" 200 13745
						……………………

至此,Tomcat搭建配置完成。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐