zoukankan      html  css  js  c++  java
  • Tomcat+Nginx实现动静分离

    前言

    1. 什么是网站动静分离架构模式?
    • 网站中的动静分离其实就是将动态资源和静态资源分离处理。
    • 传统网站架构模式:jsp、html、img、css、js全部存放在一个服务器上,把静态资源和动态资源共同放到一台服务器上。
    • 大型互联网公司中前端与后端开发是分离,静态资源和动态资源不会部署到同一台服务器上,静态资源部署在一个服务器上(html、css、img、js …),动态资源部署在一个服务器上(后端代码)
    2. 动态资源和静态资源的区别?
    • 静态资源:用户多次访问后,html源代码不会发生改变,例如html、jpg 、css、js 等不需要后台处理的资源。
    • 动态资源:用户多次访问后,html源代码可能会发生改变,例如我们访问的JSP页面 (本质是一个Servlet)或*.do请求等。
    • 区别:判断标准是,刷新多次,html源代码是否发生改变 。
    • 误区:并不是页面是动态的,就一定是动态页面,一般动态页面为了提高被搜索引擎搜到的机率,会使用伪静态;也就是说使用动态页面静态化技术将页面静态化,静态化技术有Freemarker、Beetl、Velociity、Thymeleaf 等。
    3. 为什么要使用动静分离?
    • 其实就是减轻服务器的压力、提高服务器的响应速度和效率、保证高并发。就像数据库的读写分离一样,也是保证高并发。
    • 静态服务器我们同时也可以使用CDN做内容分发,访问不同的资源转发到不同的服务器。
    • 静态服务器我们一般使用Nginx,Nginx实现静态服务器要比Tomcat 快得多。
    4. 动静分离与前后端分离的区别?
    • 动静分离:指的是动态资源和静态资源分离,分别部署在不同的服务器上。
    • 前后端分离:网站架构模式中,微服务开发基于SOA面向服务开发,后台和前端都采用调用接口方式。

    一、tomcat与nginx的区别

    从应用方面 tomcat一般是做'动态解析'才会用得到,支持jsp(Java Server Pages包括html和java,可以写java代码也可以写html和js代码,就像.asp页面一样可以写c#和html还有js)的解析,需要配置JDK支持 nginx,则一般是做'静态'(html和js),本身不具备动态解析功能,需要配置其他插件或通过其他软件协同才具备动态功能,比如php,tomcat,或者proxypass到win2008的iis服务器做ASP的动态链接等, 但nginx在静态上的功能非常强大,也可做访问控制,而且可以做成各种协议负载服务器,包括流媒体的也可以做,具体得去官方网站去看; 在性能方面 如果再不做系统调优的情况下 'tomcat一般支持并发(并发是一秒钟的访问量)并不高100个差不多了' 'nginx在静态方面支持并发轻松达几万' 如果这是个面试的人给你出的这道题目上你回答,你可以简单的告诉他,两者应用领域不一样,tomcat是做java语言的动态解析,而nginx则是一款功能强大的负载软件,配合各种插件可以实现

    二、动态和静态的区别

    静态请求:不需要访问数据库
    动态请求:需要访问数据库,登录

    静态页:打开一个网页,不需要访问数据库
    动态页:打开一个网页,需要访问数据库

    企业中无论是静态资源还是动态资源,都需要做共享存储

    三、配置Java环境

    Tomcat处理Java代码,是Java的容器,可以直接解析Java代码(.jsp结尾),不需要代理
    resin处理Java代码,是Java的容器,可以直接解析Java代码,不需要代理

    [root@server1 ~]# tar zxf jdk-8u91-linux-x64.tar.gz 
    [root@server1 ~]# mv jdk
    jdk1.8.0_91/               jdk-8u91-linux-x64.tar.gz
    [root@server1 ~]# mv jdk1.8.0_91/ /usr/local/java
    [root@server1 ~]# cd /etc/profile.d/
    [root@server1 profile.d]# vi java.sh
    export JAVA_HOME=/usr/local/java #设置Java根目录
    export PATH=$PATH:$JAVA_HOME/bin #在PATH环境变量中添加JAVA根目录下的斌>子目录
    ~       
    [root@server1 profile.d]# java -version#查看Java版本
    openjdk version "1.8.0_131"
    OpenJDK Runtime Environment (build 1.8.0_131-b12)
    OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)  

    四、安装并启动tomcat

    [root@server1 profile.d]# tar zxf apache-tomcat-8.5.16.tar.gz 
    [root@server1 profile.d]# mv apache-tomcat-8.5.16 /usr/local/tomcat8
    [root@server1 profile.d]# /usr/local/tomcat8/bin/startup.sh #启动
    Using CATALINA_BASE:   /usr/local/tomcat8
    Using CATALINA_HOME:   /usr/local/tomcat8
    Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
    Using JRE_HOME:        /usr/local/java
    Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
    Tomcat started.
    [root@server1 profile.d]# /usr/local/tomcat8/bin/shutdown.sh #关闭tomcat
    Using CATALINA_BASE:   /usr/local/tomcat8
    Using CATALINA_HOME:   /usr/local/tomcat8
    Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
    Using JRE_HOME:        /usr/local/java
    Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
    [root@server1 ~]# ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup
    [root@server1 ~]#  ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown
    [root@server1 ~]# tomcatup
    Using CATALINA_BASE:   /usr/local/tomcat8
    Using CATALINA_HOME:   /usr/local/tomcat8
    Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
    Using JRE_HOME:        /usr/local/java
    Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
    Tomcat started.
    [root@server1 ~]# netstat -anpt | grep 8080
    tcp6       0      0 :::8080                 :::*                    LISTEN      16829/java 
    systemctl stop firewalld
    setenforce 0  

    mkdir -p /web/webapp2
    vi /web/webapp2/index.jsp
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <html>
    <head>
    <title>JSP test2 page</title></head>
    <body><% out.println("welcome to test site");%>
    <div>动态页面</div>
    <img src="b.jpg" />
    </body>
    </html>
    #这个jsp中引入的page标签
    #language表示语言是Java
    #import类似于Java类中的import就是把包导入进来,这样在jsp才可以调用包中的类
    #pageEncoding表示页面的编码格式
    tomcatdown
    vi /usr/local/tomcat8/conf/server.xml
    <Host name="localhost" appBase="webapps"
    unpackWARs="true" autoDeploy="true">
    <Context docBase="/web/webapp2" path="" reloadable="false"></Context> #添加
    tomcatup
    netstat -anpt | grep 8080

    第二台pc与其做相同的配置

    五、pc3上安装启动nginx

    1 yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ 
     2 tar zxf nginx-1.6.0.tar.gz -C /opt
     3 cd /opt/nginx-1.6.0/
     4 ./configure 
     5 --prefix=/usr/local/nginx 
     6 --user=nginx 
     7 --group=nginx 
     8 --with-file-aio                                   #同时提交多个io请求给内核
     9 --with-http_stub_status_module         #状态统计
    10 --with-http_gzip_static_module        
    11 --with-http_flv_module                   #支持对FLV(flash)文件的拖动播放
    12 --with-http_ssl_module                    #支持安全证书
    13 
    14  make && make install
    15 
    16 useradd -M -s /sbin/nologin nginx
    17 vim /usr/local/nginx/conf/nginx.conf
    18  upstream tomcat_server {
    19                server 20.0.0.10:8080 weight=1;
    20                server 20.0.0.20:8080 weight=1;
    21              }                   #添加
    22     server {
    23         listen       80;
    24         server_name  localhost;
    25 
    26         #charset koi8-r;
    27 
    28         #access_log  logs/host.access.log  main;
    29 
    30         location / {
    31             root   html;
    32             index  index.html index.htm;
    33         }
    34         location ~ .jsp$ {                         #添加
    35                   proxy_pass http://tomcat_server;
    36          }37 nginx -t
    38 killall -3 nginx
    39 nginx
    40 netstat -anpt | grep nginx
    

     测试

     

     

      

     

      

      

     

     

      

  • 相关阅读:
    成佛、远不止渡沧海
    导航栏中各按钮在点击当前按钮变色其他按钮恢复为原有色的实现方法(vue、jq、原生js)
    vue动态绑定src加字符串拼接
    对象中那些不注意的用法
    vue实现实时监听文本框内容的变化(最后一种为原生js)
    table
    toFixed()精度丢失;复选框全选、取消
    vue.js
    vue项目知识点总结
    JVM基础知识总结
  • 原文地址:https://www.cnblogs.com/tianzhendengni/p/13943547.html
Copyright © 2011-2022 走看看