目录

Life in Flow

Embrace your dreams and unlock your full potential at every stage of life.

X

Tomcat

架构图

主机ip
nginx212
mysql210
tomcat1213
tomcat2211

安装JDK8

mkdir -p /usr/local/software
cp jdk-8u201-linux-x64.tar.gz /usr/local/software/
cd /usr/local/software/
tar -zxvf jdk-8u201-linux-x64.tar.gz
mv jdk1.8.0_201 jdk8
vim /etc/profile
export JAVA_HOME=/usr/local/software/jdk8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH
source /etc/profile

[root@localhost software]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

安装tomcat9

[root@localhost software]# tar xvf apache-tomcat-9.0.11.tar.gz
[root@localhost software]# mv apache-tomcat-9.0.11 /usr/local/tomcat

[root@localhost software]# /usr/local/tomcat/bin/startup.sh
[root@localhost software]# ps aux |grep tomcat
[root@localhost software]# netstat -lntp |grep 8080

# 启动成功之后访问
http://192.168.31.213:8080/

目录结构

**bin** 存放启动和关闭Tomcat的脚本文件

**conf** 存放Tomcat服务器的各种全局配置⽂文件,其中最重要的是server.xml和web.xml

lib 存放Tomcat服务器所需的各种JAR文件

**logs** 存放Tomcat执行时的日志文件

temp 此目录是tomcat存放的临时文件

**webapps** tomcat默认存放应用程序的目录,好比apache的默认网页存放路径是/var/www/html一样

work 用于存放JSP应用程序在部署时编译后产生的class文件

应用目录webapps

docs tomcat文档

examples tomcat自带的一个独立的web应用程序例子

host-manager tomcat的主机管理应用程序

manager tomcat的管理应用程序

**ROOT** 指tomcat的应用程序的根,如果应用程序部署在ROOT中,则可直接通过http://ip:port 访问到

常用命令

经常使用的命令:

catalina.sh  主命令脚本

**configtest.sh   检测配置文件**

**shutdown.sh   关闭**

**startup.sh    启动**

配置文件

catalina.policy 配置tomcat对文件系统中目录或文件的读、写执行等权限,及对一些内存,session等的管理权限

catalina.properties 配置tomcat的classpath等

context.xml tomcat的默认context容器

logging.properties 配置tomcat的日志输出方式

**server.xml** tomcat的主配置文件  host配置

tomcat-users.xml tomcat的角色(授权用户)配置文件

**web.xml** tomcat的应用程序的部署描述符文件

配置服务和开机启动脚本

# 服务脚本
[root@localhost init.d]# cat tomcatd
#!/bin/bash
#chkconfig: 35 86 89
export JAVA_HOME=/usr/local/software/jdk8
TOMCATBIN=/usr/local/tomcat/bin/catalina.sh
start(){
  $TOMCATBIN start
}

stop(){
  $TOMCATBIN stop
}

restart(){
 stop
 start
}

status(){
  if [ -f '/var/run/tomcat.pid' ];then
     echo 'tomcat is running'
  else
     echo 'tomcat is not run'
  fi
}

configtest(){
  $TOMCATBIN configtest
}

case "$1" in
   start)
      start;;
   stop)
      stop;;
   restart)
      restart;;
   status)
      status;;
   configtest)
      configtest;;
   *)
      echo '{start|stop|restart|configtest|status}'
esac


[root@localhost init.d]# pwd
/etc/init.d
[root@localhost init.d]# chmod +x tomcatd


# 开机自启动
[root@localhost init.d]# chkconfig --add tomcatd
[root@localhost init.d]# chkconfig  | grep tomcatd

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

tomcatd         0:off   1:off   2:off   3:on    4:off   5:on    6:off

# 关闭服务
[root@localhost init.d]# service tomcatd start
[root@localhost init.d]# service tomcatd stop


基于域名访问host配置

# 建立应用目录
[root@localhost init.d]# cd /usr/local/tomcat/webapps/
[root@localhost webapps]# mkdir devops
[root@localhost webapps]# cd devops/
[root@localhost devops]# mkdir ROOT
[root@localhost devops]# cd ROOT/
[root@localhost ROOT]# cat test.jsp
<html>
<head><title>Hello World</title>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
</head>
<body>
Hello World!<br/>
<%
out.println("Your IP address is " + request.getRemoteAddr());
%>
</body>
</html>


# 修改server.xml配置文件,添加Host
[root@localhost ROOT]# vim /usr/local/tomcat/conf/server.xml
      <Host name="tomcat.devops.com" appBase="webapps/devops">
      </Host>

# 访问
http://tomcat.devops.com:8080/test.jsp

# 测试配置文件是否存在错误
[root@localhost ROOT]# service tomcatd configtest

服务器状态查看和应用管理

# 最后添加 | 192.168.1.110 运行访问的主机
[root@localhost ROOT]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192.168.31.110" />

# 用户和密码
[root@localhost ROOT]# vim /usr/local/tomcat/conf/tomcat-users.xml
<role rolename="manager-gui"/>
<user username="tomcat" password="123" roles="manager-gui"/>


nginx和tomcat动静分离反向代理

# nginx 端创建应用家目录
[root@localhost nginx]# mkdir /application/nginx/html/devops
[root@localhost nginx]# vim /application/nginx/conf/nginx.conf
worker_processes  1;
error_log logs/error.log error;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    upstream backend {
        server 192.168.31.210:80 weight=1;
        server 192.168.31.211:80 weight=1;
    }

 server{
          listen       80;
          server_name  tomcat.devops.com;
          root /application/nginx/html/devops;
          #静态不需要进行转发
          location ~ \.(html|css|js|png|jpg|jpeg)$ {
              #default_type text/plain;
              #echo 'html';
              #alias /;
              #root /usr/local/tomcat/webapps/devops/ROOT;
          }
          #其他识别不是静态资源的,统统发送到后端tomcat
          location / {
               proxy_pass http://192.168.31.213:8080;
               proxy_set_header Host      $host;
               proxy_set_header X-Real-IP $remote_addr;
               #default_type text/plain;
               #echo $host;
               #echo $remote_addr;
               #echo $proxy_add_x_forwarded_for;
          }
    }
}


# 用本地浏览器访问nginx
http://tomcat.devops.com/test.jsp
Hello World!
Your IP address is 192.168.31.212

负载均衡

upstream tomcat {
        #ip_hash;
        server 192.168.17.102:8080;
        server 192.168.17.101:8080;
    }
    server {
        listen 80;
        server_name tomcat.devops.com;
        location / {
           proxy_pass http://tomcat;
           proxy_set_header Host      $host;
           proxy_set_header X-Real-IP $remote_addr;
        }
    }

部署Java项目

# 域名和目录绑定
[root@localhost ROOT]# mkdir /usr/local/tomcat/webapps/blog
# 上传ROOT.war  博客软件包
[root@localhost blog]# ls
ROOT.war
[root@localhost blog]# vim /usr/local/tomcat/conf/server.xml
      <Host name="blog.tomcat.com" appBase="webapps/blog">
      </Host>


# 创建数据库和用户授权
mysql> grant all on zrblog.* to 'zrblog'@'%' identified by '123';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> create database zrblog;
Query OK, 1 row affected (0.01 sec)

# 安装应用
http://blog.tomcat.com:8080/


作者:Soulboy