简介

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地址
tomcat 192.168100.10

安装jdk

下载

  1. # 使用浏览器访问这个地址下载
  2. # 地址实际百度Java就会出来
  3. https://www.oracle.com/java/technologies/javase-downloads.html
  4. # 下载需要注册账号,注册一个即可。
  5. # 下载下来上传到服务器即可。

安装

[root@tomcat jdk1.8]# tar -zxvf jdk-8u301-linux-x64.tar.gz
[root@tomcat jdk1.8]# mv jdk1.8.0_301/ /usr/local/jdk1.8
[root@tomcat jdk1.8]# cd /usr/local/jdk1.8/
[root@tomcat jdk1.8]# 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
# 刷新环境变量
[root@tomcat jdk1.8]# source /etc/profile

[root@tomcat jdk1.8]# java -version
java version "1.8.0_301"
Java(TM) SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.301-b09, mixed mode)

安装tomcat

下载

# 上传解压
tar -zxvf apache-tomcat-8.5.53.tar.gz 
# 修改名字
mv apache-tomcat-8.5.53 /usr/local/tomcat
cd /usr/local/tomcat
# 启动服务
/usr/local/tomcat/bin/startup.sh 
ps aux |grep tomcat
# 查看服务
netstat -ntlp |grep java
tcp6       0      0 :::8080                   :::*                    LISTEN      7546/java           
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      7546/java

8080为提供Web服务的端口;
8005为管理端口;
默认有8080和8005端口即可。
8009端口为第三方服务调用的端口,比如httpd和Tomcat结合时会用到。
这时打开浏览器输入地址http://ip:8080即可查看tomcat默认页面。
image.png

修改默认端口

[root@tomcat webapps]# vim /usr/local/tomcat/conf/server.xml
<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

[root@tomcat 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
[root@tomcat 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
Tomcat started.

image.png

查看默认虚拟主机

Tomcat和Apache、Nginx一样,都支持虚拟主机配置。每个虚拟主机配置文件就是一台服务器,支持一个IP下可以访问多个域名,每个域名代表一个网站。所以一台服务器上可以配置多个网站。
查看配置文件 server.xml 搜索appBase

[root@tomcat webapps]# 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 -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             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应用。

# 自动解压war包
[root@tomcat webapps]# ls /usr/local/tomcat/webapps/
docs      host-manager  ROOT   zrlog-1.7.1-baaecb9-release
examples  manager       zrlog  zrlog-1.7.1-baaecb9-release.war

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

[root@tomcat webapps]# ls /usr/local/tomcat/webapps/ROOT/
asf-logo-wide.svg  favicon.ico        tomcat.png
bg-button.png      index.jsp          tomcat-power.gif
bg-middle.png      RELEASE-NOTES.txt  tomcat.svg
bg-nav.png         tomcat.css         WEB-INF
bg-upper.png       tomcat.gif

image.png

安装zrlog

这里安装一个zrlog演示一下目录的配置文件的作用

# 下载安装包 可以通过浏览器下载,也可以通过wget  wget下载需要时yum 安装 wget命令
http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war
# 上传文件拷贝至/usr/local/tomcat/webapps
# 查看文件
[root@tomcat webapps]# ls
docs          ROOT
examples      zrlog-1.7.1-baaecb9-release
host-manager  zrlog-1.7.1-baaecb9-release.war
manager
# 发现war包已经被自动解压。
# 改名
[root@tomcat webapps]# mv zrlog-1.7.1-baaecb9-release zrlog
[root@tomcat webapps]# ls
docs      host-manager  ROOT   zrlog-1.7.1-baaecb9-release
examples  manager       zrlog  zrlog-1.7.1-baaecb9-release.war
# 只要war包一直不删除就会一直解压

这里就可以使用浏览器访问我们的服务了,192.168.100.10/zrlog但是需要配置一下MySQL。
我们这里安装一个mariadb-server
image.png

[root@tomcat webapps]# yum install -y mariadb-server
[root@tomcat webapps]# systemctl start mariadb
[root@tomcat webapps]# mysql_secure_installation
# 配置密码 ynyy
[root@tomcat webapps]# mysql -uroot -p000000
create database zrlog;
grant all on zrlog.* to 'zrlog'@127.0.0.1 identified by '000000';
[root@tomcat webapps]# systemctl restart mariadb

image.png
点击查看即可看到web界面了。

配置虚拟主机

刚才我们经过操作可以访问zrlog,但是这样存在一个问题就是每次都要输入IP/zrlog这样的形势访问,我们可不可以给他配置为直接输入ip或者域名就可以访问。

[root@tomcat webapps]# mkdir -p /data/wwwroot/123.cn
[root@tomcat webapps]# mv /usr/local/tomcat/webapps/zrlog/* /data/wwwroot/123.cn/
[root@tomcat webapps]# vim /usr/local/tomcat/conf/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 里面。
测试

# 重启服务,然后等8005端口启动
[root@tomcat 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
[root@tomcat 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
Tomcat started.

[root@tomcat webapps]# netstat -ntlp |grep java
tcp6       0      0 :::80                   :::*                    LISTEN      7546/java           
tcp6       0      0 127.0.0.1:56629         :::*                    LISTEN      7598/java           
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      7546/java           
tcp6       0      0 127.0.0.1:46629         :::*                    LISTEN      7598/java           
tcp6       0      0 127.0.0.1:26629         :::*                    LISTEN      7598/java

image.png

Tomcat日志

查看日志

[root@tomcat webapps]# ls /usr/local/tomcat/logs/
catalina.2021-08-15.log      localhost.2021-08-16.log
catalina.2021-08-16.log      localhost_access_log.2021-08-15.txt
catalina.out                 localhost_access_log.2021-08-16.txt
host-manager.2021-08-15.log  manager.2021-08-15.log
host-manager.2021-08-16.log  manager.2021-08-16.log
localhost.2021-08-15.log

catalina开头的日志为Tomcat的综合日志,它记录Tomcat服务相关信息,也会记录错误日志。
catalina.2021-xx-xx.log和catalina.out内容相同,前者会每天生成一个新的日志。
host-manager和manager为管理相关的日志,其中host-manager为虚拟主机的管理日志。
localhost和localhost-access为虚拟主机相关日志,其中带access字样的日志为访问日志,不带access字样的为 默认虚拟主机的错误日志。

配置生成日志

日志默认是不会生成的,所以需要在server.xml中配置一下
配置方法就是在对应虚拟主机的里面加入下面的配置

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="www.123.cn_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

valve为日志文件配置;
prefix定义访问日志的前缀;
suffix定义日志的后缀;
pattern定义日志格式。

# 重启服务
[root@tomcat 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
[root@tomcat 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
Tomcat started.
# 查看是否有日志生成。
[root@tomcat webapps]# ls /usr/local/tomcat/logs/
catalina.2021-08-15.log      localhost.2021-08-15.log             manager.2021-08-16.log
catalina.2021-08-16.log      localhost.2021-08-16.log             www.123.cn_access_log.2021-08-16.txt
catalina.out                 localhost_access_log.2021-08-15.txt  www.123.cn_access_log.2021-08-17.txt
host-manager.2021-08-15.log  localhost_access_log.2021-08-16.txt
host-manager.2021-08-16.log  manager.2021-08-15.log

# 查看日志多出来我们这个虚拟主机的访问日志