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

文章目录

    • 一、为什么要实现动静分离
    • 二、动静分离的基本过程
    • 三、环境说明
    • 四、部署过程
      • 4.1、nginx 服务器部署
      • 4.2、Tomcat 服务器部署
      • 4.3、动静分离配置
      • 4.4、配置验证

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

  • 动静分离是将网站的静态资源(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进行处理,这样就实现了动静分离,提高了服务器处理请求的性能。
    Tomcat 与 Nginx 实现动静分离的详细部署_第1张图片

三、环境说明

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

仅供参考:(包版本有所不同)

  • 百度云盘下载链接:
  • nginx:https://pan.baidu.com/s/1gI6Q2qJHmQUIqJVqut_AXA
  • Tomcat:https://pan.baidu.com/s/1ibLOT9wBfVsALMqBOPUVEA 提取码:prry

四、部署过程

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地址:192.168.100.128和 tomcat 服务器的IP地址:192.168.100.131:8080
Tomcat 与 Nginx 实现动静分离的详细部署_第2张图片
Tomcat 与 Nginx 实现动静分离的详细部署_第3张图片

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 与 Nginx 实现动静分离的详细部署_第4张图片

  • 在客户端上访问静态站点
    Tomcat 与 Nginx 实现动静分离的详细部署_第5张图片
//创建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>
  • 在客户端的浏览器输入http://192.168.100.128/test/index.jsp 访问动态站点,nginx 服务器发现是动态请求,反向代理给 Tomcat 服务器处理。
    Tomcat 与 Nginx 实现动静分离的详细部署_第6张图片

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

Tomcat 与 Nginx 实现动静分离的详细部署_第7张图片

//在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://192.168.100.128/test/index.jsp 出现存放的图片
Tomcat 与 Nginx 实现动静分离的详细部署_第8张图片

你可能感兴趣的:(web服务群集)