【Linux基础服务教程】Tomcat的应用

一、Tomcat的应用

  • java应用程序的中间件, 部署运行java应用程序
  • 动态网站:
    • PHP语言*.php
  • lnmp平台
    • Java语言*.jsp
    • tomcat

1.java应用的中间件

  • tomcat
    • Apache组织
  • webLogical
    • Oracle公司、商业
  • websphere
    • IBM公司、商业

2.Tomcat的特性

二、安装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 &quot;%r&quot; %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

tom01

tom02

五、利用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;	#这里后面一定要加上访问路径!
        }

测试访问

tom03