Tomcat 与 Nginx 实现动静分离的详细部署

一、为什么要实现动静分离

  • 动静分离是将网站的静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用的访问
  • nginx 处理静态资源的能力超强。
    主要是nginx处理静态页面的效率远高于 tomcat 的处理能力,如果tomcat的请求量为1000次,则nginx的请求量为6000次,tomcat每秒的吞吐量为0.6M,nginx的每秒吞吐量为3.6M,可以说,nginx处理静态资源的能力是tomcat处理能力的6倍,优势可见一斑。
  • 动态资源和静态资源分开,使服务器结构更清晰。

二、动静分离的基本过程

  • 如下图所示,我们部署了 nginx 和 tomcat 服务器,把所有的静态资源都放置在nginx的webroot目录下面,把动态请求的程序都放在 tomcat 的webroot目录下面。
  • 当客户端访问服务端的时候,如果是静态资源的请求,就直接到nginx的webroot目录下面获取资源。
  • 如果是动态资源的请求,nginx利用反向代理的原理,把请求转发给tomcat进行处理,这样就实现了动静分离,提高了服务器处理请求的性能。
    在这里插入图片描述

三、环境说明

服务类型IP地址软件包
Nginx服务器10.0.0.10nginx-1.12.2.tar.gz
Tomcat服务器10.0.0.20jdk-8u91-linux-x64.tar.gz、apache-tomcat-8.5.16.tar.gz
win10客户端10.0.0.0网段

四、部署过程

4.1、nginx 服务器部署

#nginx安装包如果需要其他版本,可以到官网下载。
#安装依赖包
yum -y install gcc gcc-c++ make pcre-devel zlib-devel 

#挂载本地共享文件夹,解压nginx安装包
tar z xvf nginx-1.12.2.tar.gz -C /opt

#添加nginx用户
useradd -M -s /sbin/nologin nginx

#编译且安装nginx
cd /opt/nginx-1.12.2/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

make && make install

#创建软链接便于控制服务
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
 
#编辑脚本,使用service工具,控制服务
vim /etc/init.d/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

#添加执行权限,将脚本文件添加到服务列表中
cd /etc/init.d
chmod +x nginx
chkconfig --add nginx
chkconfig --level 35 nginx on

#关闭防火墙,开启nginx服务
systemctl stop firewalld
setenforce 0
service nginx start 
netstat -natp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      36517/nginx: master 

我们的服务搭建成功!

4.2、Tomcat 服务器部署

#解压软件包jdk
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            #java虚拟机
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib   #java函数库
export PATH=${JAVA_HOME}/bin:$PATH     

source /etc/profile    #使环境变量生效

#解压tomcat软件包
tar zxvf apache-tomcat-8.5.16.tar.gz -C /usr/local/

#修改文件名,便于操作
cd /usr/local
mv apache-tomcat-8.5.16 tomcat

#建立软链接,便于服务控制
ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin

#关闭防火墙,开启tomcat服务
systemctl stop firewalld
setenforce 0
startup.sh    #开启服务
netstat -natp | grep 8080   #查看服务是否启动

这时打开一台 win10虚拟机 作为 client 服务端,在浏览器输入nginx服务器的IP地址:10.0.0.10; tomcat 服务器的IP地址:10.0.0.20:8080
在这里插入图片描述

在这里插入图片描述

4.3、动静分离配置

#配置nginx.conf,开启反向代理功能。
vim /usr/local/nginx/conf/nginx.conf
server {
  . . .省略. . .      
        location ~.*.jsp$ {               #正则表达式,即任何以.jsp结尾的url
        proxy_pass http://192.168.100.131:8080;   #转到192.168.100.131:8080
        proxy_set_header Host $host;
        }

#创建nginx的站点内容
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>

#重启服务
service nginx stop
service nginx start

在这里插入图片描述

  • 在客户端上访问静态站点
    在这里插入图片描述
#创建tomcat的web目录和站点
mkdir /usr/local/tomcat/webapps/test

#站点内容
vim /usr/local/tomcat/webapps/test/index.jsp
<!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/ html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>动态页面</title>
</head>
<body>
<h1>动态页面</h1>
<p>这是个动态页面</p>
</body>
</html>

重启nginx服务和tomcat服务后,在客户端的浏览器输入http://10.0.0.10/test/index.jsp 访问动态站点,nginx 服务器发现是动态请求,反向代理给 Tomcat 服务器处理。
在这里插入图片描述

4.4、配置验证

#在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"/>

在这里插入图片描述

#在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

在这里插入图片描述

  • 在客户端浏览器中输入http://10.0.0.10/test/index.jsp 出现存放的图片
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值