【Linux基础服务教程】Tomcat的应用
一、Tomcat的应用
java
应用程序的中间件
, 部署运行java
应用程序动态
网站:- PHP语言
*.php
- PHP语言
lnmp
平台- Java语言
*.jsp
- tomcat
- Java语言
1.java应用的中间件
- tomcat
Apache
组织
- webLogical
Oracle
公司、商业
- websphere
IBM
公司、商业
2.Tomcat的特性
- 开源的、跨平台
- 支持多实例的部署方式
- 支持https
- 官网:https://tomcat.apache.org
二、安装Tomcat
1.安装jdk
[root@node1 ~]# wget https://mirrors.huaweicloud.com/java/jdk/8u191-b12/jdk-8u191-linux-x64.tar.gz
如果提示找不到
wget
命令请使用yum install -y wget
安装!
[root@node1 ~]# tar xf jdk-8u191-linux-x64.tar.gz -C /usr/local
[root@node1 ~]# ls /usr/local
bin etc games include jdk1.8.0_191 lib lib64 libexec sbin share src
A.配置jdk
环境
[root@node1 ~]# vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_191
export PATH=$PATH:$JAVA_HOME/bin #文件后面加上2行内容
#配置文件并不完整,请勿删改其他!
B.让配置文件生效,测试jdk
环境
[root@node1 ~]# source /etc/profile
[root@node1 ~]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
2.安装Tomcat
A.下载Tomcat
[root@node1 ~]# wget --no-check-certificate https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.88/bin/apache-tomcat-8.5.88.tar.gz
B.安装Tomcat
并且改名
默认解压的名字并不有利于今后的维护
[root@node1 ~]# tar xf apache-tomcat-8.5.88.tar.gz -C /usr/local/
[root@node1 ~]# mv /usr/local/apache-tomcat-8.5.88 /usr/local/tomcat85
[root@node1 ~]# ls /usr/local/
bin etc games include jdk1.8.0_191 lib lib64 libexec sbin share src tomcat85
C.定义Tomcat
环境变量
[root@node1 ~]# vim /etc/profile
......
export CATALINA_HOME=/usr/local/tomcat85
#配置文件并不完整,请勿删改其他!
D.重新加载配置文件
[root@node1 ~]# source /etc/profile
E.Tomcat
相关目录
- tomcat安装目录/bin
- tomcat安装目录/conf/server.xml
- tomcat安装目录/logs
- tomcat安装目录/webapps
- tomcat安装目录/lib
- 库文件 .jar
F.启动Tomcat
[root@node1 ~]# /usr/local/tomcat85/bin/catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat85
Using CATALINA_HOME: /usr/local/tomcat85
Using CATALINA_TMPDIR: /usr/local/tomcat85/temp
Using JRE_HOME: /usr/local/jdk1.8.0_191
Using CLASSPATH: /usr/local/tomcat85/bin/bootstrap.jar:/usr/local/tomcat85/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
G.查看进程和端口
[root@node1 ~]# ps -aux | grep java #因为Tomcat基于java开发,所以进程名叫java
root 2012 4.4 4.2 2492680 78316 pts/2 Sl 19:56 0:01 /usr/local/jdk1.8.0_191/bin/java -Djava.util.logging.config.file=/usr/local/tomcat85/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/tomcat85/bin/bootstrap.jar:/usr/local/tomcat85/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat85 -Dcatalina.home=/usr/local/tomcat85 -Djava.io.tmpdir=/usr/local/tomcat85/temp org.apache.catalina.startup.Bootstrap start
如果提示没有
netstat
命令,请安装yum install -y net-tools
[root@node1 ~]# netstat -tunlp | grep java #因为Tomcat基于java开发,所以进程名叫java
tcp6 0 0 :::8080 :::* LISTEN 2012/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 2012/java
8005:
tomcat实例端口
8080
提供http服务的端口
8009
配置httpd做反向代理的端口(仅限老版本,新版本已废除)
H.设置Tomcat
开机自启动
关于为什么要重新定义一下
java
环境,因为Linux
在启动的时候优先
加载rc.local
配置文件,profile
还没加载,所以要在rc.local
里再定义一遍
[root@node1 ~]# vim /etc/rc.d/rc.local
export JAVA_HOME=/usr/local/jdk1.8.0_191
export PATH=$PATH:$JAVA_HOME/bin
/usr/local/tomcat85/bin/catalina.sh start
[root@node1 ~]# chmod a+x /etc/rc.d/rc.local #给权限
I.重启测试
如果提示没有
netstat
命令,请安装yum install -y net-tools
[root@node1 ~]# reboot
[root@node1 ~]# netstat -tunlp | grep java #重启后可以查到端口运行的程序
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 928/java
tcp6 0 0 :::8080 :::* LISTEN 928/java
三、Tomcat
配置文件
1.Tomcat
默认项目目录
tomcat
安装目录/webapps
- 注意:
- 一个项目目录可以部署
多个
项目 - 默认访问项目目录
/ROOT
子目录中的项目
2.主配置文件server.xml
主配置文件
默认
路径:/usr/local/tomcat85/conf/server.xml
A.Tomcat
默认实例端口
<Server port="8005" shutdown="SHUTDOWN">
B.提供http
服务的端口
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
C.配置虚拟主机
<Host name="localhost" appBase="/test"
unpackWARs="true" autoDeploy="true">
<Context path="/AA" docBase="hello" /> #项目访问别名
<Context path="/BB" docBase="linux" /> #项目访问别名
name
虚拟主机名称
appBase
项目目录
<Context path="/AA" docBase="hello" />
项目的访问别名
path=
别名,空表示通过主机名访问
docBase=
项目路径,相对于appBase
写
D.日志
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Valve ....
定义访问日志
directory=""
访问日志存放路径
prefix=""
访问日志的开头
suffix=""
定义访问日志的结尾
patter=""
访问日志格式
E.默认的虚拟主机
<Engine name="Catalina" defaultHost="localhost">
四、Tomcat
部署多实例
1.环境介绍
安装目录: /opt/tomcat01 实例端口: 8006 HTTP服务: 8888 项目目录: /opt/tomcat01/webapps
安装目录: /opt/tomcat02 实例端口: 8007 HTTP服务: 8899 项目目录: /opt/tomcat02/webapps
2.创建项目
目录
[root@node1 ~]# mkdir -p /opt/tomcat01/{webapps,logs,conf}
[root@node1 ~]# mkdir -p /opt/tomcat02/{webapps,logs,conf}
3.复制配置文件到项目目录
[root@node1 ~]# cp -r /usr/local/tomcat85/conf/* /opt/tomcat01/conf/
[root@node1 ~]# cp -r /usr/local/tomcat85/conf/* /opt/tomcat02/conf/
4.编辑项目配置文件
[root@node1 ~]# vim /opt/tomcat01/conf/server.xml
<Server port="8006" shutdown="SHUTDOWN"> #按照规划,修改实例1端口为8006
<Connector port="8888" protocol="HTTP/1.1" #按照规划,修改实例1端口为8888
<Host name="localhost" appBase="/opt/tomcat01/webapps" #按照规划,修改项目目录
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/opt/tomcat01/logs" #按照规划,更改日志存目录
[root@node1 ~]# vim /opt/tomcat02/conf/server.xml
<Server port="8007" shutdown="SHUTDOWN">
<Connector port="8899" protocol="HTTP/1.1"
<Host name="localhost" appBase="/opt/tomcat02/webapps"
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/opt/tomcat02/logs"
5.准备java项目(自行准备)
[root@node1 ~]# ls
phone_war.war project.war
复制项目到webapps
目录下
[root@node1 ~]# cp project.war /opt/tomcat01/webapps/
[root@node1 ~]# cp project.war /opt/tomcat02/webapps/
6.准备启动脚本
[root@node1 ~]# vim /opt/tomcat01/daemon.sh
#! /bin/bash
export CATALINA_HOME=/usr/local/tomcat85
export CATALINA_BASE=/opt/tomcat01 #指定启动时查找配置文件的路径
case $1 in
start)
$CATALINA_HOME/bin/startup.sh
;;
stop)
$CATALINA_HOME/bin/shutdown.sh
;;
restart)
$CATALINA_HOME/bin/shutdown.sh
sleep 1
$CATALINA_HOME/bin/startup.sh
;;
esac
[root@node1 ~]# vim /opt/tomcat02/daemon.sh
#! /bin/bash
export CATALINA_HOME=/usr/local/tomcat85
export CATALINA_BASE=/opt/tomcat02 #指定启动时查找配置文件的路径
case $1 in
start)
$CATALINA_HOME/bin/startup.sh
;;
stop)
$CATALINA_HOME/bin/shutdown.sh
;;
restart)
$CATALINA_HOME/bin/shutdown.sh
sleep 1
$CATALINA_HOME/bin/startup.sh
;;
esac
7.启动实例测试
[root@node1 ~]# bash /opt/tomcat01/daemon.sh start
Using CATALINA_BASE: /opt/tomcat01
Using CATALINA_HOME: /usr/local/tomcat85
Using CATALINA_TMPDIR: /opt/tomcat01/temp
Using JRE_HOME: /usr/local/jdk1.8.0_191
Using CLASSPATH: /usr/local/tomcat85/bin/bootstrap.jar:/usr/local/tomcat85/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@node1 ~]# bash /opt/tomcat02/daemon.sh start
Using CATALINA_BASE: /opt/tomcat02
Using CATALINA_HOME: /usr/local/tomcat85
Using CATALINA_TMPDIR: /opt/tomcat02/temp
Using JRE_HOME: /usr/local/jdk1.8.0_191
Using CLASSPATH: /usr/local/tomcat85/bin/bootstrap.jar:/usr/local/tomcat85/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@node1 ~]# netstat -tunlp | grep java
tcp6 0 0 :::8888 :::* LISTEN 4400/java
tcp6 0 0 :::8899 :::* LISTEN 4436/java
tcp6 0 0 127.0.0.1:8006 :::* LISTEN 4400/java
tcp6 0 0 127.0.0.1:8007 :::* LISTEN 4436/java
五、利用Nginx
反向代理实现Tomcat
负载均衡
自行准备第二台虚拟机
上一期教程Nginx反向代理和负载均衡
[root@master ~]# vim /usr/local/nginx/conf/nginx.conf
upstream tomcat{
server 10.10.10.129:8888;
server 10.10.10.129:8899;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location /rc {
proxy_pass http://tomcat/project; #这里后面一定要加上访问路径!
}