1. 简介
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
2. 环境准备
节点 IP 192.168.174.155
主机名 tomcat
节点 Tomcat
使用
VMWare Workstation
软件安装
CentOS 7.2
操作系统,镜像使用提供的
CentOS-7-x86_64-DVD-1511.iso
。
关闭防火墙并设置开机不自启,配置
SElinux
规则
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service
[root@localhost ~]# setenforce 0
3. 修改主机名
[root@localhost ~]# hostnamectl set-hostname tomcat
[root@localhost ~]# bash
任务 2 安装 JDK
部署
Tomcat
环境需要
JDK
软件环境,我们进入到
/usr/local/src/
目录下,解压
刚刚上传的
jdk-8u211-linux-x64.tar.gz
,并将解压后的文件移动到
/usr/local/
目录下
改名为
jdk1.8
。然后使用
ls
命令查看下
/usr/local/
目录下是否有
jdk1.8
目录。
命令如下:
[root@tomcat ~]# cd /usr/local/src/
[root@tomcat src]# tar -zxf jdk-8u144-linux-x64.tar.gz
[root@tomcat src]# mv jdk1.8.0_144/ /usr/local/jdk1.8
[root@tomcat src]# ls /usr/local/
bin etc games include jdk1.8 lib lib64 libexec sbin share src
3. 修改环境变量
设置环境变量,编辑
/etc/profile
文件,并使其立即生效。
[root@tomcat src]# 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/li
b/charsets.jar
[root@tomcat src]# source /etc/profile
4.检查 JDK 安装情况
配置完成环境变量后,使用
java -version
命令检查是否安装成功,如果显示
结果带有
java version "1.8.0_211"
字样和我们解压的
jdk-8u211-linux-x64.tar.gz
包
的版本相对应,则证明安装成功。命令如下:
[root@tomcat src]# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
任务 3 安装 Tomcat
1. 安装 Tomcat
我们去官网下载合适的
Tomcat
版本,本案例已经下载好了,使用
CRT
上传
到虚拟机
/usr/local/src/
目录下,然后解压,将解压后的文件移动到
/usr/local
目录
下,并命名为
tomcat
,命令如下:
[root@tomcat ~]# cd /usr/local/src/
[root@tomcat src]# tar -zxf apache-tomcat-9.0.41.tar.gz
[root@tomcat src]# mv apache-tomcat-9.0.41 /usr/local/tomcat
2. 启动 Tomcat
本 次 下 载 解 压 的 包 是 二 进 制 包 , 不 用 我 们 去 编 译 , 使 用
/ u s r/ lo c a l/ to m c a t/ bi n /s t a rt u p. sh
这个命令启动
To m c at
,命令如下:
root@tomcat 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
Using CLASSPATH:
/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
3. 测试
用
netstat
命令来监听
java
相关服务端口,查看是否有以下端口存在(
8009
、
8080
、
8005
),如果存在则证明
Tomcat
服务启动成功。命令如下:
注意:
8009
端口为第三方服务调用的端口,没有不影响正常使用
[root@tomcat src]# netstat -lnpt | grep java
tcp6 0 0 :::8009 :::*
LISTEN 49228/java
tcp6 0 0 :::8080 :::*
LISTEN 49228/java
tcp6 0 0 127.0.0.1:8005 :::*
LISTEN 49228/java
三个端口
8009
、
8005
和
8080
的意义:
⚫
8080
为提供
Web
服务的端口;
⚫
8005
为管理端口;
⚫
8009
端口为第三方服务调用的端口,比如
httpd
和
Tomcat
结合时会用到。
然后打开浏览器,在地址栏中输入
http://IP:8080/
(这里的
IP
为你虚拟机的
IP
地址,此处
IP
为
192.168.174.155
),可以看到
Tomcat
的默认页面。如图所示:
![](https://img-blog.csdnimg.cn/beda58d3c21f4239810108880d662dbd.png)
任务 4 配置 Tomcat 监听 80 端口
1. 修改配置文件
Tomcat
监听的是
8080
端口,如果想要直接访问,不加
8080
端口(默认输
入一个
IP
或者域名,访问
80
端口时是可以省略
IP
后端口号的)就需要配置
Tomcat
监听
80
端口,
Tomcat
是支持端口自定义的。
编辑
Tomcat
配置文件
server.xml
,命令如下:
[root@tomcat ~]# vi /usr/local/tomcat/conf/server.xml
//直接搜索 8080 找到如下内容
......
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
//将这里的 8080 直接改成 80
修改完配置文件,接下来就是重启
Tomcat
服务,
Tomcat
服务是不支持
restart
的方式重启服务的 ,所以要想重启服务必须先关闭服务 ,使用命令
/usr/local/tomcat/bin/shutdown.sh
, 然 后 再 启 动 服 务 , 使 用 命 令
/usr/local/tomcat/bin/startup.sh
。
[root@tomcat ~]# /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 ~]#
[root@tomcat ~]# /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.
2. 测试
重启服务之后,我们用 netstat 命令监听 Java 相关服务端口来查看是否启动
成功,命令如下:
[root@tomcat ~]# netstat -plnt | grep java
tcp6 0 0 :::8009 :::*
LISTEN 47709/java
tcp6 0 0 127.0.0.1:8005 :::*
LISTEN 47709/java
如果启动成功,则会出现三个端口(
8009
、
8005
、
80
)。
但是这里可以看到,并没有
80
端口出现,这是因为这台机器我们之前安装
过
LNMP
。
Nginx
的默认端口也是
80
,这就和我刚刚设置的
Tomcat
端口发生冲
突。这时,我们需要关闭
Nginx
服务,重新启动
Tomcat
服务。
[root@tomcat ~]# service nginx stop
Stopping nginx (via systemctl): [ OK ]
//出现 OK 字样,Nginx 服务关闭成功。
[root@tomcat ~]# /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 ~]# /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
这时,我们再次使用
netstat
命令监听
Java
相关服务端口,看这次三个端口
是否存在,命令结果如下:
[root@tomcat ~]# netstat -plnt | grep java
tcp6 0 0 :::8009 :::*
LISTEN 47873/java
tcp6 0 0 :::80 :::*
LISTEN 47873/java
tcp6 0 0 127.0.0.1:8005 :::*
LISTEN 47873/java
3. 浏览器访问
![](https://img-blog.csdnimg.cn/a3b96c248a884477982fc107de0b2c3f.png)
任务 5 配置 Tomcat 虚拟主机
Tomcat
和
Apache
、
Nginx
一样,都支持虚拟主机配置。每个虚拟主机配置
文件就是一台服务器,支持一个
IP
下可以访问多个域名,每个域名代表一个网
站。所以一台服务器上可以配置多个网站。
编辑
Tomcat
配置文件,直接在配置文件内搜索
Host
,找到如下内容:
[root@tomcat ~]# vi /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 "%r" %s %b" />
</Host>
其中
<Host>
和
</Host>
之间的配置为虚拟主机配置部分:
⚫
name
定义域名;
⚫
appBase
定义应用的目录;
⚫
unpackWARs
为是否自动解压
war
包;
⚫
autoDeploy
如果此项设置为
true
,表示
Tomcat
服务处于运行状态,能够
检测
appbase
下的文件,如果有新的
Web
应用加入进来,会自动发布这个
Web
应用。
Java
的应用通常是一个
JAR
的压缩包,你只需要将
JAR
的压缩包放到
appBase
目录下面即可。刚刚我访问的
Tomcat
默认页其实就是在
appBase
目录下
面,不过是在它子目录
ROOT
里
2. 新增虚拟主机
新增虚拟主机,编辑
server.xml
在
</Host>
下面增加以下内容:
[root@tomcat ~]# 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>
3. 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
目录下,命令如下:
[root@tomcat ~]# cd /usr/local/src/
[root@tomcat src]# wget
http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war
...
[root@tomcat src]# ls |grep zrlog
zrlog-1.7.1-baaecb9-release.war
appBase
支持自动解压,所以直接将
war
包拷贝到
/usr/local/tomcat/webapps/
目录下:
[root@tomcat src]# cp zrlog-1.7.1-baaecb9-release.war
/usr/local/tomcat/webapps/
[root@tomcat src]# ls /usr/local/tomcat/webapps/
docs host-manager ROOT
zrlog-1.7.1-baaecb9-release.war
examples manager zrlog-1.7.1-baaecb9-release
// 将 war 包拷贝到/usr/local/tomcat/webapps/目录下之后,包会自动解压。(前
提是 tomcat 正常启动。
重命名
war
包的文件名,命令如下:
[root@tomcat src]# cd /usr/local/tomcat/webapps/
[root@tomcat webapps]# mv zrlog-1.7.1-baaecb9-release zrlog
[root@tomcat webapps]# ls
docs examples host-manager manager ROOT zrlog
zrlog-1.7.1-baaecb9-release.war
// 一但重命名或删除 war 包解压后的包的文件时,war 包就会在解压出一个
文件夹
用浏览器访问
http://192. 168.174.155/zrlog
(注意你的
IP
),如图所示:
![](https://img-blog.csdnimg.cn/de3cd3aa987941c5b22be97a7f53588a.png)
安装数据库:
(1)下载
#cd /usr/local/src //
软件包都放在这里方便管理
下载源码包:
mysql-5.6.47-linux-glibc2.12-x86_64.tar
安装和配置
# [ -d /usr/local/mysql ] && mv /usr/local/mysql /usr/local/mysql_old
//&&相当于一个判断,意前面命令执行才会执行后面
# mv mysql-5.6.47-linux-glibc2.12-x86_64 /usr/local/mysql
// 挪动位置
# useradd -s /sbin/nologin mysql
//建立 MySQL 用户,因为启动 MySQL 需要该用户
# mkdir -p /data/mysql
//创建 datadir,数据库文件会放到这里面
# chown -R mysql:mysql /data/mysql
// 更改权限,不更改后续操作就会出问题
# yum install -y perl-Module-Install
# cd /usr/local/mysql
# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
//--user 表示定义数据库的以哪个用户的身份运
//--datadir 表示定义数据库的安装目录
#cp support-files/my-default.cnf /etc/my.cnf
#vi /etc/my.cnf //修改配置文件
#These are commonly set ,remove the # and set as required
basedir=/usr/local/mysql
//basedir 表示 MySQL 包所在路径
datadir=/data/mysql
//表示定义存放数据的位置
port=3306//port 表示定义 MySQL 服务监听的端口号
server_id=128
//表示该 MySQL 服务的 ID 号
#cp support-files/mysql.server /etc/init.d/mysqld
//复制启动脚本文件
#chmod 755 /etc/init.d/mysqld
//修改启动脚本文件的属性
#chkconfig --add mysqld
//把 mysql 服务加到系统服务列表中
#chkconfig mysqld on
//开机就启动
#service mysqld start
//启动服务
ps -aux | grep mysqld
netstat -ntpl | grep 3306
# ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
登入数据库,在数据库中创建一个 zrlog 数据库和 zrlog 用户。命令如下:
[root@tomcat webapps]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
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.
mysql> create database zrlog;
//创建 zrlog 数据库
Query OK, 1 row affected (0.00 sec)
mysql> grant all on zrlog.* to 'zrlog'@127.0.0.1 identified by '000000';
Query OK, 0 rows affected (0.05 sec)
//创建 zrlog 用户
mysql>exit
Byebye
//退出数据库
检查创建用户是否可以登陆数据库,使用
zrlog
用户登录,命令如下:
[root@tomcat webapps]# mysql -uzrlog -h127.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.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.
mysql> show databases;
//检查已有数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
| zrlog |
+--------------------+
3 rows in set (0.00 sec)
mysql> exit
Byebye
检查完成,
zrlog
用户登录成功。使用
zrlog
用户信息填写刚才在浏览器中打
开的网页,
Email
填写自己的邮箱,本次是实验,填写内容为自定义邮箱
(
tomcat@163.com
),单击“下一步”按钮。
重启
Tomcat
服务完成后,访问网站,查看
/usr/local/tomcat/logs
目录下是否
有日志生成,并且查看生成的日志信息,命令如下:
[root@tomcat ~]# ls /usr/local/tomcat/logs/
123_access_log.2020-03-29.txt localhost.2020-03-29.log
catalina.2020-03-29.log localhost_access_log.2020-03-29.txt
catalina.out manager.2020-03-29.log
host-manager.2020-03-29.log
[root@tomcat ~]# cat /usr/local/tomcat/logs/123_access_log.2020-03-29.txt
192.168.174.1 - - [29/Mar/2020:22:06:16 -0700] "GET / HTTP/1.1" 200 8645
192.168.174.1 - - [29/Mar/2020:22:06:16 -0700] "GET //favicon.ico HTTP/1.1"
200 9662
至此,
Tomcat
搭建配置完成。