博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学会Tomcat和Nginx动静分离一篇就够了!
阅读量:2026 次
发布时间:2019-04-28

本文共 5691 字,大约阅读时间需要 18 分钟。

文章目录

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

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

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

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

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

二、部署环境

名称 角色 地址
centos7-1 nginx 192.168.158.30
centos7-2 Tomcat01 192.168.158.10
centos7-3 Tomcat02 192.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_modulemake 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 -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: 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 ScriptPROG="/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 1esacexit 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 nginxtcp        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_91export JRE_HOME=${
JAVA_HOME}/jreexport PATH=$JAVA_HOME/bin:$PATHexport 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/binshutdown.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/tomcatUsing CATALINA_HOME: /usr/local/tomcatUsing CATALINA_TMPDIR: /usr/local/tomcat/tempUsing JRE_HOME: /usr/local/jdk1.8.0_91/jreUsing CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jarTomcat started.#查看端口[root@tomcat01 local]# netstat -ntap | grep 8080tcp6 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 -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
  • 创建静态页面
[root@nginx init.d]# vim /usr/local/nginx/html/index.html
Welcome to nginx!

静态页面!

这个是静态页面

---------------------------------------------------------------------------------------- #开启服务[root@nginx init.d]# service nginx stop[root@nginx init.d]# service nginx start
  • toamca节点服务器配置动态页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ page import="java.util.Date" %><%@ page import="java.text.SimpleDateFormat" %>
动态小页面
动态小页面
#启动服务[root@tomcat01 test]# startup.sh Using CATALINA_BASE: /usr/local/tomcatUsing CATALINA_HOME: /usr/local/tomcatUsing CATALINA_TMPDIR: /usr/local/tomcat/tempUsing JRE_HOME: /usr/local/jdk1.8.0_91/jreUsing CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jarTomcat started.

在这里插入图片描述

在这里插入图片描述

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

2.41:Tomcat服务操作

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

//在Tomcat服务器上声明图片的位置vim /usr/local/tomcat/webapps/test/index.jsp          #添加页面图片,这个图片在nginx中存放,但是在tomcat里声明//如果图片过大,可以通过设置参数改变图片大小,例子如下:

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 stopservice nginx start

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

2.7:客户机访问

http://192.168.158.30/test/index.jsp

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

转载地址:http://ffdaf.baihongyu.com/

你可能感兴趣的文章
02.规划过程组表格-项目管理计划
查看>>
02.规划过程组表格-WBS词典
查看>>
03.失败与成功哲学
查看>>
04.向太平意思宣战
查看>>
03.简化领导力摘录——卓越领导者
查看>>
02.HTML中使用JavaScript
查看>>
04.变量、作用域和内存问题--JavaScript高级程序设计(笔记)
查看>>
08.用户故事与敏捷方法——估算用户故事笔记
查看>>
12.敏捷估计与规划——Splitting User Stories笔记
查看>>
13.敏捷估计与规划——Release Planning Essentials笔记
查看>>
05精益敏捷项目管理——超越Scrum
查看>>
11.看板方法——建立服务水平协议笔记
查看>>
14.精益敏捷项目管理——认识精益笔记
查看>>
12.敏捷项目管理——治理敏捷项目笔记
查看>>
05.软件项目管理与敏捷方法——范围管理笔记
查看>>
00.敏捷回顾——引言笔记
查看>>
python学习手册笔记——20.迭代和解析
查看>>
python学习手册笔记——30.类的设计
查看>>
Big Analytice with Cassandra
查看>>
spring多个AOP执行先后顺序(面试问题:怎么控制多个aop的执行循序)
查看>>