学会Tomcat和Nginx动静分离一篇就够了!

一、为什么用nginx和tomcat搭建群集?

  • 传统模型下,一个项目部署在一台tomcat上,这个时候,假如 tomcat
    因为服务器资源不够,突然挂机了,出现单点故障,那么整个项目就无法使用,给客户造成的损失可想而知!!
  • Tomcat 不能单独应用于生产环境下,我们需要一套更可靠的解决方案来完善web站点架构。
    在这里插入图片描述
    Nginx 能够支持高达50000个并发连接数的响应,拥有强大的静态资源处理能力,运行稳定,并且内存、CPU等系统资源消耗非常低。

目前很多大型网站都应用 Nginx 服务器作为后端网站程序的反向代理以及负载均衡器,来提升整个站点的负载并发能力。

我们可以部署 Nginx + tomcat 服务群集,就可以避免单台服务如果挂机,依然能保证服务正常使用。

当我们把项目 war 包部署到三台服务器上时,即使服务器A、服务器B都挂了,依然能够通过服务器C访问项目资源!

二、部署环境

名称角色地址
centos7-1nginx192.168.158.30
centos7-2Tomcat01192.168.158.10
centos7-3Tomcat02192.168.158.20
win10客户端不重要

目的:

当访问服务器时,静态页面由nginx服务器处理,动态页面由tomcat处理

2.1:配置nginx

#关闭防火墙
[root@naginx ~]# systemctl stop firewalld.service 
[root@naginx ~]# setenforce 0


#安装依赖环境包
yum -y install \
gcc \
gcc-c++ \
pcre-devel \
zlib-devel

#解压
[root@localhost ~]# tar zxvf nginx-1.12.2.tar.gz 

#编译及安装
cd nginx-1.12.2/

./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

make 
make install

#创建管理用户
useradd -M -s /sbin/nologin nginx

#路径优化便于优化
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
#开启服务
[root@nginx nginx-1.12.2]# nginx

#语法检查
nginx -t
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
  • 使用service控制管理
[root@nginx nginx-1.12.2]# cd /etc/init.d/
[root@nginx init.d]# vim nginx
//编写以下内容

#!/bin/bash

# chkconfig: - 99 20

# description: Nginx Service Control Script

PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
  start)
   $PROG
   ;;
  stop)
   kill -s QUIT $(cat $PIDF)
   ;;
  restart)
   $0 stop
   $0 start
   ;;
  reload)
   kill -s HUP $(cat $PIDF)
   ;;
  *)
                echo "Usage: $0 {start|stop|restart|reload}"
                exit 1
esac
exit 0

#增加执行权限
[root@localhost init.d]# chmod +x nginx
[root@localhost init.d]# chkconfig --add nginx 
[root@localhost init.d]# chkconfig --level 35 nginx on
[root@localhost init.d]# netstat -anpt | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      22379/nginx: master 

2.2:节点服务器部署Tomcat

[root@tomcat01 ~]# iptables -F
[root@tomcat01 ~]# setenforce 0

#解压
[root@tomcat01 ~]# tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/

#修改全局配置文件 设置环境变量
vim /etc/profile
#末行添加
//
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib


使环境变量生效
[root@tomcat01 ~]# source /etc/profile

#安装Tomcat软件本体
[root@tomcat01 ~]# tar zxvf apache-tomcat-8.5.16.tar.gz -C /usr/local/

#重命名为tomcat
[root@tomcat01 ~]# cd /usr/local/
[root@tomcat01 local]# mv apache-tomcat-8.5.16/ tomcat

启动tomcat
/usr/local/tomcat/bin

shutdown.s:控制服务关闭
startup.sh:控制服务开启

#设置服务开启关闭的超链接 便于管理
[root@tomcat01 local]# ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
[root@tomcat01 local]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/

#启动程序
[root@tomcat01 local]# 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.0_91/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

#查看端口
[root@tomcat01 local]# netstat -ntap | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      19537/java          

2.3:配置动静分离

基于动态分离

我们知道对于Nginx而言,其对静态资源的支持是非常友好的,而Tomcat对于Java的动态web页面的支持非常好。所以需要实现动态分离就是将静态请求给予nginx服务器运行,Tomcat负责处理类似jsp文件的动态请求。

本次案例使用nginx服务器和一台Tomcat服务器做动态分离。最终将结合静态图片让nginx负责处理,而使用Tomcat处理动态页面。

[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf


#access_log  logs/host.access.log  main;
//添加
        location ~.*.jsp$ {                 #匹配的jsp页面跳转代理服务器
            proxy_pass http://192.168.158.30:8080;
            proxy_set_header Host $host;
        }
        
#检查语法
[root@nginx init.d]# nginx -t
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@nginx init.d]# vim /usr/local/nginx/html/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>静态页面!</h1>
<p>这个是静态页面</p>
</body>
</html>


 
 
 ----------------------------------------------------------------------------------------
 #开启服务
[root@nginx init.d]# service nginx stop
[root@nginx init.d]# service nginx start
  • toamca节点服务器配置动态页面
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/ htm14/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content"text/thml; charaset=YTF-8">
<title>动态小页面</title>
</head>
<body>
<div>动态小页面</div>
</body>
</html>

#启动服务
[root@tomcat01 test]# 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.0_91/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

在这里插入图片描述

在这里插入图片描述

2.4:Nginx处理静态图片,Tomcat处理动态页面

2.41:Tomcat服务操作

在Tomcat上的动态页面插入一张图片

//在Tomcat服务器上声明图片的位置
vim /usr/local/tomcat/webapps/test/index.jsp
<body>
    <img src="game.jpg"/>  
    #添加页面图片,这个图片在nginx中存放,但是在tomcat里声明
</body>

//如果图片过大,可以通过设置参数改变图片大小,例子如下:
<img src="game.jpg" height="150px" width="230px"/>

2.5:编辑Nginx配置文件

#access_log  logs/host.access.log  main;
//下面插入内容
        location ~.*\.(gif|jpg|jpeg|png|bmp|swf|scc)$ {      //扩展名结尾
            root html;           //在自己站点找到相应资源
            expires 30d;         //客户浏览器缓存30天
        }Nginx创建站点目录并并上传图片

2.6:Nginx创建站点目录

//在nginx服务器上,存放图片,而且图片的目录名称要和tomcat中的java项目名称相同
vim /usr/local/nginx/conf/nginx.conf
在server{}段里添加
    location ~.*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
             root html;
             expires 30d;
}

(Tomcat指路径,nginx放图片)
注意:目录名称需要和 java项目(webapps)名称相同
mkdir /usr/local/nginx/html/test//usr/local/nginx/html/test/目录下放一张图片

service nginx stop
service nginx start

注意:目录名称需要和java项目名称相同

2.7:客户机访问

http://192.168.158.30/test/index.jsp

文字部分为tomcat提供资源 图片部分是为静态资源由nginx服务器提供在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值