Nginx+Tomcat动静分离的部署

2023-05-16

文章目录

  • 一、动静分离的原理
  • 二、动静分离的优势
  • 三、项目部署
    • 3.1 项目环境
    • 3.2 nginx 服务器部署
    • 3.3 Tomcat 服务器部署
    • 3.4 客户端验证服务器状态
    • 3.5 动静分离配置
    • 3.6 验证动态配置

一、动静分离的原理

  • 服务端接收来自客户端的请求中,有一部分是静态资源的请求,例如html,css,js和图片资源等等,有一部分是动态数据的请求。因为tomcat处理静态资源的速度比较慢,所以我们可以考虑把所有静态资源独立开来,交给处理静态资源更快的服务器例如nginx处理,而把动态请求交给tomcat处理。
  • 在机器上同时安装了nginx和tomcat,把所有的静态资源都放置在nginx的webroot目录下面,把动态请求的程序都放在tomcat的webroot目录下面,当客户端访问服务端的时候,如果是静态资源的请求,就直接到nginx的webroot目录下面获取资源
  • 如果是动态资源的请求,nginx利用反向代理的原理,把请求转发给tomcat进行处理,这样就实现了动静分离,提高了服务器处理请求的性能。
    在这里插入图片描述

二、动静分离的优势

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

三、项目部署

3.1 项目环境

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

3.2 nginx 服务器部署

  • 上传nginx-1.12.2.tar.gz到nginx节点
#关闭防火墙,开启nginx服务
systemctl stop firewalld
setenforce 0

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

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

#添加nginx用户,-M(不创建主目录) -s(不允许登录)
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

#查看nginx版本
[root@nginx nginx-1.12.2]# nginx -v
nginx version: nginx/1.12.2
 
#编辑脚本,使用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
[root@nginx ~]# chmod +x /etc/init.d/nginx 
[root@nginx ~]# chkconfig --add nginx
[root@nginx ~]# chkconfig --level 35 nginx on

[root@nginx init.d]# systemctl start nginx
[root@nginx init.d]# netstat -anpt | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      18627/nginx: master

3.3 Tomcat 服务器部署

  • 上传jdk-8u91-linux-x64.tar.gz、apache-tomcat-8.5.16.tar.gz到Tomcat节点
    在这里插入图片描述
#关闭防火墙,开启tomcat服务
systemctl stop firewalld
setenforce 0

#解压软件包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

#开启服务
startup.sh
#查看服务是否启动
netstat -natp | grep 8080

3.4 客户端验证服务器状态

  • 浏览器中访问nginx服务器地址20.0.0.10
    在这里插入图片描述
  • 浏览器中访问tomcat服务器地址20.0.0.20:8080
    在这里插入图片描述

3.5 动静分离配置

#配置nginx.conf,开启反向代理功能。
vim /usr/local/nginx/conf/nginx.conf
server {
  . . .省略. . .      
        location ~.*.jsp$ {   #正则表达式,即任何以.jsp结尾的url
        proxy_pass http://20.0.0.20:8080;   #转到tomcat服务器地址
        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>

#重启服务
systemctl restart nginx

在这里插入图片描述

  • 浏览器中访问静态网页地址20.0.0.10
    在这里插入图片描述
#创建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>
  • 浏览器中访问动态网页地址20.0.0.10/test/index.jsp
    在这里插入图片描述

3.6 验证动态配置

  • vim /usr/local/tomcat/webapps/test/index.jsp
    在< body >标签中加上 < img src=“kick.gif”/ >
  • 添加页面图片,这个图片在nginx中存放,但是在tomcat里声明
    在这里插入图片描述
#在nginx服务器上,存放图片,而且图片的目录名称要和tomcat中的java项目名称相同
vim /usr/local/nginx/conf/nginx.conf

#在server{}段里添加
    location ~.*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
             root html;
             expires 30d;
    }
    
#目录名称需要和 java项目(webapps)名称相同
mkdir /usr/local/nginx/html/test/

在这里插入图片描述

  • 在/usr/local/nginx/html/test/目录下放一张图片
  • 重启nginx
systemctl restart nginx
  • 浏览器中访问动态网页地址20.0.0.10/test/index.jsp,查看更新效果
    在这里插入图片描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx+Tomcat动静分离的部署 的相关文章

  • 3.5 使用属性文件

    可以采用默认为我们配置的application properties xff0c 也可以使用自定义的配置文件 引入属性文件依赖 span class token tag span class token tag span class tok
  • 3.6 条件装配Bean

    Bean初始化前 xff0c 对某些属性进行校验 xff0c 满足校验才去装配数据源 为了处理这样的场景 xff0c 需要用到 64 Conditional注解 xff0c 同时需要配合另外一个接口Condition xff08 org s
  • 3.7 Bean的作用域

    isSingleton方法如果返回true xff0c 则Bean在IoC容器中以单例存在 xff0c 这也是Spring IoC容器的默认值 xff1b 如果isPrototype方法返回true xff0c 则当我们每次获取Bean的时
  • 3.8 使用@Profile

    在企业开发的过程中 xff0c 项目往往要面临开发环境 测试环境 准生产环境和生产环境的切换 xff0c 每一套的上下文是不一样的 xff0c 它们有各自的数据库资源 Profile机制 xff1a 实现各个环境之间的切换 假设存在dev
  • 3.9 引入XML配置Bean

    注解 64 ImportResource xff1a 可以引入对应的XML文件 xff0c 用以加载Bean 有时候有些框架 xff08 如Dubbo xff0c Cat xff09 是基于Spring的XML方式进行开发的 xff0c 这
  • 第2章概述

    示例代码 xff1a span class token doctype span class token punctuation lt span span class token doctype tag DOCTYPE span span
  • 【无标题】

    简单接口HelloService span class token keyword public span span class token keyword interface span span class token class nam
  • 穷举法解华为bl锁

    穷举法解华为bl锁 python3代码测试截图 灵感来自于 xff1a https blog csdn net qq 40169767 article details 90481748 但是我不懂shell脚本 xff0c 那个脚本又运行不
  • 4.1.2 ProxyBean的实现

    代理 xff0c 可控制或增加对目标对象的访问 ProxyBean代码 xff1a span class token keyword package span span class token namespace com span clas
  • IDEA中打开.properties文件乱码

    问题 xff1a IDEA中打开 properties文件乱码 解决方法 xff1a 一 代开settings设置 二 搜索File Encodings 三 在Properties Files中选择编码格式为UTF 8 xff0c 注意一定
  • 怎么避免下载流氓软件,误下载后怎么处理

    经历复盘 xff1a 2022 1 20时 xff0c 为了下载SPSS时不小心下载了流氓软件 回过头来复盘一下 xff0c 一个是因为当时不小心点击了电信高速下载 xff0c 下载了一个P2P软件 点击安装的时候就感觉不太对劲 xff0c
  • eclipse查看不了源码怎么办

    问题 使用eclipse的过程中 xff0c 发现ctrl 43 鼠标左键 查看不了源码 解决方案 可以在弹出的提示框中添加源码的压缩包 xff0c 压缩包在你安装的jdk的根目录下 xff0c 如我的是C Application java
  • 关于if循环语句的四种写法

    if语句在java中起到判断语句的作用写法有四种 xff0c 如下 xff1a if if else if else if if else if else 例如 xff1a 一 xff1a if语句第一种写法 if 好处 xff1a 简单便
  • ROS学习——2编写简单的发布者和订阅者

    ros官网教程 xff1a 编写简单的发布者和订阅者 目录 c 43 43 版python版注意 c 43 43 版 在新建好的catkin ws工作空间下建立 cd catkin ws src 在该目录下创建自己的功能包 xff1a ca
  • ubuntu文件系统结构与磁盘管理

    一 根目录 xff1a Linux下 就是根目录 所有的目录都是由根目录衍生出来的 二 ubuntu 文件系统结构 xff1a 三 绝对路径和相对路径 xff1a 绝对路径 xff1a 从根目录 算起的路径 相对路径 xff1a 相对于目前
  • Framebuffer应用编程

    一 Framebuffer介绍 在Linux系统中通过Framebuffer xff08 帧缓冲 xff09 驱动程序来控制LCD Framebuffer就是一块内存 xff0c 里面保存着一帧图像 Framebuffer中保存着一帧图像的
  • Java编辑提示错误: 编码 GBK 的不可映射字符 (0x80)

    在DOS界面运行编译Java文件时提示错误 xff1a 编码 GBK 的不可映射字符 0x80 理解 xff1a java程序在编译的时候 xff0c 需要使用JDK开发工具包中的JAVAC EXE命令 xff0c 而JDK开发工具包是国际
  • makefile教程

    Makefile是一种用于构建软件项目的自动化工具 xff0c 通过定义一系列规则和依赖关系 xff0c 可以自动化构建 编译 测试和安装软件项目 在本篇教程中 xff0c 我将介绍如何编写一个简单的Makefile xff0c 并解释Ma
  • 原来制作数据可视化大屏这么简单,这三步就能完成

    不知道大家在对数据进行可视化处理的时候 xff0c 有没有碰到过以上问题 xff1f 身为一位经常需要整理数据 可视化处理的数据人 xff0c 我真的心有体会 随着越来越多的头部企业启动数据大屏展示公司的年度 战绩 xff0c 以数据大屏为
  • VirtualBox主机ping不通虚拟机

    问题 xff1a 虚拟机可以ping通主机 xff0c 主机无法ping通虚拟机 1 检查虚拟机是否配置好NAT网络连接 xff0c 从而能够ping通外网 2 配置主机ping虚拟机 xff0c 创建桥接网卡 3 检查虚拟机是否出现新建桥

随机推荐