Linux深入篇之四:配置Nginx+Tomcat动静分离架构

Linux深入篇之四:配置Nginx+Tomcat动静分离架构

Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是:动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat、Resin处理动态页面

       动静分离从目前实现角度来讲大致分为两种:

一种方法是:纯粹的把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案

另一种方法:就是动态跟静态文件混合在一起发布,通过nginx来分开。

       通过expires参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体Expires定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。

       此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用Expires来缓存),我这里设置3d,表示在这3天之内访问这个URL,发送一 个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304,如果有修改,则直接从服务器重新下载,返回状态码200。

安装tomcat之前需要安装jdk (Java Development Kit) 是 Java 语言的软件开发工具包(SDK))。

一:安装JDK

1、解压jdk文件并移动到指定的目录

wKiom1XgkPDhcLVrAAFfYlsaz6k772.jpg

2、配置java环境变量,在vim /etc/profile 文件(开机检查文件)添加如下语句:

export  JAVA_HOME=/usr/java/jdk1.7.0_25/

export  CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export  PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin

3、使环境变量立刻生效:source   /etc/profile

     查看java版本:java   -version

wKioL1Xgk5jDThaDAAClxeOEr8E985.jpg

显示版本为1.7.0_25,证明安装成功!

 

Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,Tomcat本身也是一个HTTP服务器,可以单独使用,apache是一个以C语言编写的HTTP服务器。Tomcat主要用来解析JSP语言。目前最新版本为8.0。

 

二、配置tomcat

1、下载并解压到指定的目录:tar xzf apache-tomcat-7.0.63.tar.gz

2、重命名文件名:mv apache-tomcat-7.0.63  tomcat

3、并将该文件移动到:mv /soft/tomcat  /usr/local/

4、启动tomcat,命令为:/usr/local/tomcat/bin/startup.sh

查看ps  -ef |grep tomcat 进程及端口是否存在:

wKioL1XglAyD94J7AAH24YTo6Ao439.jpg

5、通过页面访问可以看到tomcat默认测试页面:

wKioL1XOzXTgLAybAAR1rLeT4YY927.jpg

6、tomcat常用目录

tomcat默认的发布目录:/usr/local/tomcat/webapps/ROOT/

主配置文件:/usr/local/tomcat/conf/server.xml

tomcat默认http端口:8080

 

三、测试单台tomcat的访问页面

1、移除默认发布目录的所有内容到另一个目录中,

wKiom1XglYzikrmgAAFXmvJzyGw446.jpg

wKiom1XgoPOzcJ_LAAJej4tDy58112.jpg

2、自定义一个发布目录的jsp测试页面:

wKioL1XhQzyAZv_1AABTwxv7IF0858.jpg

<html>
<body>
<h1> tomcat_1 JSP page</h1>
<%=new java.util.Date()
%>
%</body>
%</html>

3、打开这个测试页面:

wKioL1XgmNSg2I3IAAGcNXyuIHw717.jpg

这个画面是默认网站,怎么来创建一个自己的网站页面呢,定义自己的发布目录,方法如下:在server.xml配置文件末尾加入如下行:

<Context path="/login" docBase="/data/webapps/html"  reloadable="true" crossContext="true" unpackWAR="true"/>

wKioL1XhZrSgAm-OAAHSRkgVDsA590.jpg

在/data/webapps/www目录下,创建自己的jsp代码,重启tomcat即可访问。

wKiom1XhZMmgjweQAAITIUpX2PE829.jpg

wKiom1XhZcXTpKaaAAGmc9oB8GE587.jpg


四、tomcat默认端口

tomcat默认端口有3个:

http:8080

shutdown:8005

AJP:8009

wKioL1XO1snzVdzHAAKCHFB2f0o775.jpg

wKiom1XO1MLxghZzAAJyHkuPNcA435.jpg

wKioL1XO1sqR1prQAANW25t8kls674.jpg

2、分别编辑以下配置文件,并修改默认的端口

vi /usr/local/tomcat1/conf/server.xml

vi /usr/local/tomcat2/conf/server.xml

3、分别启动3个tomat,

wKiom1XO1aWSbrtIAARO6e6yq1k596.jpg

4、查看端口

wKioL1XO3TyyU5BlAALvkJ-mwek595.jpg

 

 

 

五、配置Nginx-tomcat动静分离架构

在2台tomcat上配置发布目录,用于测试多个tomcat效果

1、查看两台tomcat的本地测试页面:

wKioL1Xs_AfDLm9oAAHFVO5B0lQ281.jpg

wKioL1Xs_AixlrDuAAHfkezhgPY237.jpg

2、配置nginx来负载均衡2台tomcat

nginx.conf的配置文件:

wKiom1Xs-2axNXR2AAOEQ7mUNWI675.jpg

调用vhosts.conf文件,

wKioL1Xs_avTuXXCAARSsfRk3xg577.jpg

打开ngixn测试页面,测试效果:轮训后端的jsp测试页面!

wKioL1Xs_b6Qg4c1AAHFUORgqfw914.jpg

wKiom1Xs-5awQo_wAAHYxIf0e04367.jpg

如果要访问前端Nginx的静态页面,

wKioL1XtChaSbgjTAAGCtlH8u8o946.jpg

测试结果:

1、apache、nginx都用来处理html、css、js等静态页面请求的内容!

2、php处理php语言!

3、tomcat、java处理jsp!

实时动静分离、静态页面走前段、动态页面走后端、提升页面的处理效率!

 

六、Tomcat优化

      线上环境使用默认tomcat配置文件,性能很一般,为了满足大量用户的访问,需要对tomcat进行参数性能优化,具体优化的地方如下:

Linux内核的优化

服务器资源配置的优化

Tomcat参数优化

配置负载集群优化

这里着重讲解tomcat参数的优化:server.xml文件,关闭DNS查询、配置最大并发等参数。

maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200

acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100

当然这些值都不是越大越好,需要根据实际情况来设定。可以基于测试的基础上来不断的调优分析。

<Connector port="8080"  

       protocol="org.apache.coyote.http11.Http11NioProtocol" 

          connectionTimeout="20000" 

          redirectPort="8443"  

          maxThreads="5000"  

         minSpareThreads="20" 

         acceptCount="1000"

         disableUploadTimeout="true"

         enableLookups="false"  

         URIEncoding="UTF-8" />

Catalina.sh JVM参数优化,添加如下内容:

CATALINA_OPTS="$CATALINA_OPTS �CXms4000M �CXmx4000M �CXmn1000M -XX:SurvivorRatio=4-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=82-DLOCALE=UTF-16LE  -DRAMDISK=/-DUSE_RAM_DISK=ture -DRAM_DISK=true"

把以上参数添加进来:vim /usr/local/tomcat1/bin/catalina.sh

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin; then
  [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
  [ -n "$JRE_HOME" ] && JRE_HOME=`cygpath --unix "$JRE_HOME"`
  [ -n "$CATALINA_HOME" ] && CATALINA_HOME=`cygpath --unix "$CATALINA_HOME"`
  [ -n "$CATALINA_BASE" ] && CATALINA_BASE=`cygpath --unix "$CATALINA_BASE"`
  [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi

CATALINA_OPTS="$CATALINA_OPTS �CXs500M �CXx1000M �CXmn100M -XX:SurvivorRatio=4-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=82-DLOCALE=UTF-16LE  -DRAMDISK=/-DUSE_RAM_DISK=ture -DRAM_DISK=true"

为了提升整个网站性能,还需要在tomcat前面架设nginx web反向代理服务器,用以提高用户高速访问。

wKioL1ZhXDORbOyRAAFwWP7dFJU815.png

wKioL1ZhXZSDhjIiAAEp8scnlA0746.png

 

[root@Cacti ~]# ab -c 1000 -n 1000 http://www.jfedu.net/index.php
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.jfedu.net (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:       
Server Hostname:        www.jfedu.net
Server Port:            80

Document Path:          /index.php
Document Length:        235 bytes

 

Concurrency Level:      1000
Time taken for tests:   1.579 seconds
Complete requests:      1000
Failed requests:        995
   (Connect: 0, Receive: 0, Length: 995, Exceptions: 0)
Write errors:           0
Non-2xx responses:      1025
Total transferred:      585599 bytes
HTML transferred:       415993 bytes
Requests per second:    633.25 [#/sec] (mean)
Time per request:       1579.156 [ms] (mean)
Time per request:       1.579 [ms] (mean, across all concurrent requests)
Transfer rate:          362.14 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        6   33  19.4     44      59
Processing:    38  514 342.6    338    1328
Waiting:       38  379 313.2    294    1328
Total:         79  547 347.7    394    1380

Percentage of the requests served within a certain time (ms)
  50%    394
  66%    686
  75%    874
  80%    878
  90%   1039
  95%   1189
  98%   1197
  99%   1341
 100%   1380 (longest request)

本文出自 “柏书兵-系统运维” 博客,转载请与作者联系!

你可能感兴趣的:(Linux深入篇之四:配置Nginx+Tomcat动静分离架构)