本文共 5691 字,大约阅读时间需要 18 分钟。
目前很多大型网站都应用 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处理
#关闭防火墙[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
[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
[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
基于动态分离
我们知道对于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.htmlWelcome to nginx! 静态页面!
这个是静态页面
---------------------------------------------------------------------------------------- #开启服务[root@nginx init.d]# service nginx stop[root@nginx init.d]# service nginx start
<%@ 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.
在Tomcat上的动态页面插入一张图片
//在Tomcat服务器上声明图片的位置vim /usr/local/tomcat/webapps/test/index.jsp #添加页面图片,这个图片在nginx中存放,但是在tomcat里声明//如果图片过大,可以通过设置参数改变图片大小,例子如下:
#access_log logs/host.access.log main;//下面插入内容 location ~.*\.(gif|jpg|jpeg|png|bmp|swf|scc)$ { //扩展名结尾 root html; //在自己站点找到相应资源 expires 30d; //客户浏览器缓存30天 }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项目名称相同
http://192.168.158.30/test/index.jsp
文字部分为tomcat提供资源 图片部分是为静态资源由nginx服务器提供
转载地址:http://ffdaf.baihongyu.com/