五章——部署Tomcat及其负载均衡(应用——linux防护与群集)

三期总目录链接

目录

 一、部署Tomcat

(一)Tomcat简介

(二)应用场景

 (三)案例

 1、准备工作

2、安装JDK

3、安装及配置Tomcat 

 4、Tomcat相关说明

 5、Tomcat主配置文件说明

6、建立java的web站点

二、Nginx+Tomcat负载均衡群集

 1、Tomcat服务器1的配置和192.168.1.4的配置方法基本相同

2、Nginx服务器配置

3、在nginx配置文件中设置

5、测试负载均衡效果

练习题


 一、部署Tomcat

(一)Tomcat简介

   Tomcat最初是由Sun的软件架构师詹姆斯·邓肯·戴维森开发的。后来他帮助将其变为开源项目,并由Sun贡献给Apache软件基金会。

   Tomcat(公猫)是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

(二)应用场景

    Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选,实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的
     另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。

 (三)案例

 1、准备工作

1)关闭防火墙和selinux、禁用iptables(ip过滤包)
2)安装Tomcat前先安装JDK,JDK全称是Java Development Kit,是Sun公司免费
提供的Java语言的软件开发工具包,其中包含Java虚拟机(JVM)。编写好的Java源程序经过编译可形成Java字节码,只要安装了JDK,就可以利用JVM解释这些字节码文件,从而保证了Java的跨平台性。

 如果系统中有java环境,需要先卸载

[root@C7--04 ~]# yum -y remove java 
已加载插件:fastestmirror
参数 java 没有匹配
不删除任何软件包

2、安装JDK

[root@C7--04 ~]# tar xf jdk-8u91-linux-x64.tar.gz    #解压jdk
[root@C7--04 ~]# mv jdk1.8.0_91/ /usr/local/java     #移动到/usr/local/java文件下
[root@C7--04 ~]# vim /etc/profile.d/java.sh          #编辑java脚本

export JAVA_HOME=/usr/local/java                     #设置java根目录
export PATH=$PATH:$JAVA_HOME/bin                     #在path环境变量中添加java根目录下的bin子目录
保存退出

[root@C7--04 ~]# source /etc/profile.d/java.sh       #启动脚本
[root@C7--04 ~]# echo $PATH                          #输出变量内容
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/java/bin
[root@C7--04 ~]# java -version                       #查看java运行版本是否一致
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

3、安装及配置Tomcat 

 Tomcat的端口默认为8080端口

[root@C7--04 ~]# tar xf apache-tomcat-8.5.16.tar.gz           #解压tomcat
[root@C7--04 ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat    #移动到/usr/local/tomcat文件夹中

[root@C7--04 ~]# /usr/local/tomcat/bin/startup.sh             #启动Tomcat
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

[root@C7--04 ~]# netstat -anpt | grep 8080                   #查看监听端口信息
tcp6       0      0 :::8080                 :::*                    LISTEN      1531/java        


[root@C7--04 ~]# /usr/local/tomcat/bin/shutdown.sh            #关闭Tomcat
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

 方法一:访问

[root@C7--04 ~]# yum -y install elinks     #安装文本浏览器
........
...


[root@C7--04 ~]# elinks --dump http://192.168.1.4:8080    #访问成功
   [1]Home [2]Documentation [3]Configuration [4]Examples [5]Wiki [6]Mailing
   Lists [7]Find Help

                              Apache Tomcat/8.5.16

If you're seeing this, you've successfully installed Tomcat. Congratulations!

   [8][tomcat logo]

方法二:使用自己的电脑访问    http://地址:8080

 4、Tomcat相关说明

安装tree:以树形结构列出指定目录下的所有内容,包括所有文件、子目录及子目录里的目录和文件 

[root@C7--04 ~]# yum -y install tree         

[root@C7--04 ~]# cd /usr/local/tomcat     #主目录位置
[root@C7--04 tomcat]# tree
.
├── bin
│   ├── bootstrap.jar
│   ├── catalina.bat
│   ├── catalina.sh
│   ├── catalina-tasks.xml
│   ├── commons-daemon.jar
│   ├── commons-daemon-native.tar.gz
│   ├── configtest.bat
│   ├── configtest.sh
│   ├── daemon.sh
..........
.....
主目录
bin管理脚本文件
conf配置文件
lib运行需要的库文件(JARS)
logs日志文件
webappsWeb发布目录
work存放jsp编译后产生的class文件
配置文件
catalina.policy权限控制
catalina.properies属性配置文件
context.xml上下文配置文件
logging.properies日志log相关配置文件
server.xml主配置文件
tomcat-users.xmlmanager-gui管理用户配置文件(后台管理界面)
web.xmlTomcat的servlate、servlet-mapping、filter、MIME等配置

 5、Tomcat主配置文件说明

server.xml:Tomcat的主要配置文件、管理Tomcat的启动端口、网站目录、虚拟主机、开启https等 

 整个server.xml由以下结构构成为:<Server>、<Service>、<Connector> <Engine> Host>
<Context></Context> </Host>、 </Engine>、</Service>和</Server>

[root@C7--04 tomcat]# vim /usr/local/tomcat/conf/server.xml

<?xml version="1.0" encoding="UTF-8"?>
.......
...
<Server port="8005" shutdown="SHUTDOWN">   #关闭端口,默认只对本机地址开放可以通过
......
...
<Connector port="8080" protocol="HTTP/1.1" #启动默认端口:8080,可以根据需要进行更改
            connectionTimeout="20000"
            redirectPort="8443" />
......
...
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />  #启动AJP 1.3连接器时默认的端口号,通过8009端口接收由其它服务器转发过来的请求
......
...
<Host name="localhost"  appBase="webapps"    #定义虚拟主机的配置
            unpackWARs="true" autoDeploy="true">
......
...
 <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" />

Tomcat Server的组成部分说明

Server是整个Catalina的servlel容器
Service是一个集合:它由一个或者多个Connector组成,以及一个Engine(负责处理所有Connector所获得的客户)请求
Connector  一个Connector将在某个指定端口上侦听客户请求,并将获得的请求交给Engine来处理,从Engine处获得回应并返回客户
  TOMCAT有两个典型的Connector,一个直接侦听来自browser的http请求,一个侦听来自其它WebServer的请求
  Coyote Http/1.1 Connector 在端口8080处侦听来自客户browser的http请求
  Coyote JK2 Connector 在端口8009处侦听来自其它WebServer(Apache)的servlet/jsp代理请求
EngineEngine下可以配置多个虚拟主机Virtual Host,每个虚拟主机都有一个域名
当Engine获得一个请求时,它把该请求匹配到某个Host上,然后把该请求交给该Host来处理
Engine有一个默认虚拟主机,当请求无法匹配到任何一个Host上的时候,将交给该默认Host来处理
Host

   代表一个Virtual Host,虚拟主机,每个虚拟主机和某个网络域名Domain Name相匹配

  每个虚拟主机下都可以部署(deploy)一个或者多个Web App,每个Web App对应于一个Context,有一个Context path
   当Host获得一个请求时,将把该请求匹配到某个Context上,然后把该请求交给该Context来处理匹配的方法是“最长匹配”

   所以一个path==""的Context将成为该Host的默认Context所有无法和其它Context的路径名匹配的请求都将最终和该默认Context匹配

Context一个Context对应于一个Web Application,一个Web Application由一个或者多个Servlet组成

6、建立java的web站点

[root@C7--04 ~]# mkdir -pv /web/webapp   #新建web文档目录
mkdir: 已创建目录 "/web"
mkdir: 已创建目录 "/web/webapp"

[root@C7--04 ~]# vim /web/webapp/index.jsp   #编写首页

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <head>
     <title> JSP test1 page </title>
  </head>
  <body>
     <% out.println("欢迎访问java网站;http://192.168.1.4");%>
  </body>
</html>

保存退出

 进入tomcat的server.xml文件

  <Context>代表了运行在<Host>上的单个Web应用,一个<Host>可以有多个<Context>元素,每个Web应用必须有唯一的URL路径,这个URL路径在<Context>中的属性path中设定

<Context>元素的属性
docBaseWeb应用的文件路径,可以给定绝对路径,也可以给定相对于<Host>的appBase属性的相对路径,如果Web应用采用开放目录结构,则指定Web应用的根目录,如果Web应用是个war文件,则指定war文件的路径
path访问该Web应用的URL入口
reloadable这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用
[root@C7--04 ~]# vim /usr/local/tomcat/conf/server.xml
.......
....

      <Host name="localhost"  appBase="/web"                        # 第148行,修改appbase路径
            unpackWARs="true" autoDeploy="true">
<Context docBase="/web/webapp" path="" reloadable="false"></Context>    # 第150行,添加context字段
        <!-- 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>
.....

保存退出

重启tomcat服务

[root@C7--04 ~]# /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/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

[root@C7--04 ~]# /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/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

访问测试

二、Nginx+Tomcat负载均衡群集

Nginx是一款非常优秀的http服务器软件,它能够支持高达50000个并发连接数的响应,拥有强
大的静态资源处理能力,运行稳定,并且内存、CPU 等系统资源消耗非常低。目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,来提升整个站点的负载并发能力

准备3台虚拟机两台虚拟机安装tomcat一台安装nginx

 1、Tomcat服务器 的配置和上面的配置方法基本相同准备两台

2、Nginx服务器配置

安装相关软件包

[root@C7--01 ~]# yum -y install pcre-devel zlib-devel openssl-devel

.......
...
[root@C7--01 ~]# groupadd nginx                       #创建组
[root@C7--01 ~]# useradd -g nginx -s /bin/false nginx  #创建用户nginx进入nginx组中
/bin/false和/sbin/nologin的区别
/bin/false是最严格的禁止login选项,一切服务都不能用
/sbin/nologin只是不允许login系统
[root@C7--01 ~]# tar xf nginx-1.12.0.tar.gz -C /usr/src/  #解压nginx安装包到/usr/src/下
[root@C7--01 ~]# cd /usr/src/nginx-1.12.0/             #进入目录


[root@C7--01 nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module && make && make install                      
--user=www --group=www指定运行的用户、组
--with-file-aio启用文件修改支持
--with-http_stub_status_module启用状态统计
--with-http_gzip_static_module启用gzip静态压缩
--with-http_flv_module启用flv模块,提供寻求内存使用基于时间的偏移量文件
--with-http_ssl_module启用ssl模块

3、在nginx配置文件中设置

[root@C7--01 ~]# vim /usr/local/nginx/conf/nginx.conf
.............
.....
    #gzip  on;
    upstream tomcat_server {                    #第34行;设置负载均衡服务器列表
          server 192.168.1.4:8080 weight=1;      #第35行;weight表示权重:权重越高被分配的概率就越大
          server 192.168.1.4:8080 weight=1;     #第36行;为了测试比较明显,我们把权重设置成一样
}
......
..
      location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://tomcat_server;   #第49行把nginx的默认站点通过proxy_pass方法代理到设定好的tomcat_server负载均衡服务器组上
......

保存退出

 4、检查nginx 的配置文件

 启动时发现启动失败的原因:是因为我们设置了/bin/false禁止一切服务

[root@C7--01 nginx-1.12.0]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: [emerg] getgrnam("nginx") failed
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed



[root@C7--01 nginx-1.12.0]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf    #启动Nginx
nginx: [emerg] getgrnam("nginx") failed

[root@C7--01 ~]# tail -1 /etc/passwd    #查看用户
nginx:x:1001:1001::/home/nginx:/usr/bin/false

 解决方法修改成nologin

[root@C7--01 ~]# usermod -s /usr/sbin/nologin nginx
[root@C7--01 ~]# tail -1 /etc/passwd
nginx:x:1001:1001::/home/nginx:/usr/sbin/nologin
[root@C7--01 nginx-1.12.0]# /usr/local/nginx/sbin/nginx -t      #检查nginx 的配置文件
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful



[root@C7--01 nginx-1.12.0]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf     #启动Nginx  

[root@C7--01 nginx-1.12.0]# ps aux | grep nginx    #查看nginx服务进程
root       4166  0.0  0.1  45896  1132 ?        Ss   20:21   0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nginx      4167  0.0  0.1  48420  1988 ?        S    20:21   0:00 nginx: worker process
root       4169  0.0  0.0 112676   984 pts/0    R+   20:21   0:00 grep --color=auto nginx

[root@C7--01 nginx-1.12.0]# netstat -anpt | grep nginx   #查看端口号和PID进程号
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4166/nginx: master  

5、测试负载均衡效果

访问: http://192.168.1.1

不断刷新测试发现页面会反复在以下页面切换,负载均衡群集搭建成功,可以在两个Tomcat server网站上进行切换了

练习题

1. 简述Tomcat的特点与应用场景

 应用场景:通常作为一个servlet 和 JSP 容器,单独运行在后端

 Tomcat的特点:占用系统资源小;扩展性好

2. 在Linux系统中执行什么命令可以查看JDK的版本?

执行:java -version 可以查看JDK的版本

3. Tomcat默认运行的端口是多少?执行什么命令可以查看其端口监听的信息?

 Tomcat默认运行的端口是:8080                                                                                                  

查看所有端口信息:netstat -anpt | grep 8080

4. 分别描述Tomcat编译安装后所生成的对应bin、conf、lib、webapps目录的作用

bin管理脚本文件
conf配置文件
lib运行需要的库文件(JARS)
webappsWeb发布目录

5. server.xml为Tomcat的主要配置文件,它的结构构成是怎样的?

server.xml的结构构成:<Server>、<Service>、<Connector> <Engine> Host>
<Context></Context> </Host>、 </Engine>、</Service>和</Server>

6. 简述Tomcat Server的组成部分

组成部分为:Server、Service、Connector、Engine、Host、Context

7. 编译安装Nginx时通过什么配置项启用SSL模块?

配置  --with-http_ssl_module  启用SSL模块

8. 在Nginx主配置文件中添加 upstream tomcat_server {...}配置段的作用是什么?

作用设置负载均衡服务器列表,权重越高被分配的概率就越大

9. 在Nginx主配置文件中添加proxy_pass http://tomcat_server; 配置的作用是什么?

作用:把nginx的默认站点通过proxy_pass方法代理到设定好的tomcat_server负载均衡服务器组上

10. 在Linux系统中执行什么命令可以查看Nginx服务进程?

执行:ps aux | grep nginx

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乘浪初心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值