日期:2014-05-16  浏览次数:20746 次

Linux下Nginx+Tomcat整合的安装与配置(二)

文节选自某电子商务网站JSP应用服务器的环境搭建实施文档,文中的IP和域名进行了修改。JSP应用服务器由Nginx+Tomcat整合而成,而新的Tomcat 7.0相对于以前的版本来说,它的新特征如下:

◆使用随机数防止跨站脚本攻击;

◆改变了安全认证中的jessionid的机制,防止Session攻击;

◆可进行内存泄露的侦测和防范;

◆在war文件外使用别名去存储静态内容;

◆支持Servlet 3.0、JSP 2.2和JSP-EL 2.2;

◆更容易将Tomcat内嵌到应用中去,比如JBoss;

◆异步日志。

其中第三点是我最为关注的,在以前的版本中Tomcat均存在着内存泄露的情况,我希望能在新版本中有所改善。

Nginx与Tomcat整合的好处如下所示:

◆静态分离,加快用户访问网站的速度。

◆整个负载均衡层和Web层的工作流程为LVS/DR+Keeaplived→Nginx反向代理(动静分离)→Tomcat集群,可以保证整个网站不会因为某一台LVS或Nginx+tomcat机器挂掉而影响网站的运营。

◆Nginx稳定,宕机的可能性微乎其乎。

下面是项目实施的具体步骤——

由于服务器均采用的是最小化安装,所以先安装一些基础的编译库,命令如下:

yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel

(1)首先分别在xxx.xxx.xxx.146和xxx.xxx.xxx.147上安装Nginx 0.8.56和Tomcat 7.0,然后整合它们。

在安装Tomcat 7.0之前,必须先安装JDK,其下载地址为

https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewFilteredProducts-SingleVariationTypeFilter

由于我的服务器都是CentOS x86_64,所以选择了jdk-6u18-linux-x64.bin软件包,记得还是要将其放在/usr/local/src目录下,方便以后的工作规划。

下载完成后,修改jdk-6u18-linux-x64.bin为可执行,并运行它:

cd /usr/local/src
chmod +x jdk-6u18-linux-x64.bin
./jdk-6u18-linux-x64
mv jdk1.6.0_18 /usr/local/jdk

接着配置系统的Java运行环境,我是通过修改/etc/profile文件来实现,修改内容如下所示:

JAVA_HOME="/usr/local/jdk"
CLASS_PATH="$JAVA_HOME/lib:$JAVA_HOME/jre/lib"
PATH=".:$PATH:$JAVA_HOME/bin"
CATALINA_HOME="/usr/local/tomcat"
export JAVA_HOME CATALINA_HOME

保存退出后,执行以下命令让环境立即生效:

source /etc/profile 

然后下载并安装apache-tomat7.0.12,如下所示。

cd /usr/local/src/
wget http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-7/v7.0.12/bin/apache-tomcat-7.0.12.tar.gz
tar zxvf apache-tomcat-7.0.12.tar.gz
mv apache-tomcat-7.0.12 /usr/local/tomcat/
cp –rf /usr/local/tomcat/webapps /data/htdocs/www
vim /usr/local/tomcat/conf/server.xml

修改tomcat的根路径位置,我的网站地址为/data/htdocs/www/shop,这个虚拟主机需要在/usr/local/tomcat/conf/server.xml里指定,改动后的内容如下所示:

<Host name="www.51cto.com"  appBase="webapps"
? ? ? ? ? ? unpackWARs="true" autoDeploy="true">
? ? ? ? <Context path="" docBase="/data/htdocs/www/shop/" />

如果我们要继续增加虚拟主机,按照如上格式继续添加内容即可,Host name后面接虚拟主机名称,docBase后面接虚拟主机对应的路径位置。

安装完成后,启动tomcat,默认即监听了8080端口,启动命令如下:

/usr/local/tomcat/bin/startup.sh

成功运行后,用lsof-i:80来进行验证,如下所示:

lsof -i:8080
COMMAND ? PID USER ? FD ? TYPE ?DEVICE SIZE NODE NAME
java ? ?23731 root ? 40u ?IPv6 3347645 ? ? ? TCP *:webcache (LISTEN)

最后安装pcre8.1.0及Nginx0.8.56,整合Nginx0.8.56与Tomcat7.0.12, Nginx0.8.56的安装过程可参考前面的内容,为了节约篇幅就不再详细说明了。静态HTML页面、图片、CSS等由Nginx来处理,jsp、do 内容由后端的Tomcat处理,nginx.conf配置文件的内容如下所示(这里为了调试方便,我们首先将域名www.51cto.com指向了 xxx.xxx.xxx.146,另一台Web配置跟xxx.xxx.xxx.146一样的,我这里以xxx.xxx.xxx.146举例说明,等此架构 中的Web环境均顺利后,再将域名www.51cto.com指向我们的VIP地址):

user  www www;   
worker_processes 8; 
error_log  /usr/local/webserver/nginx/logs/nginx_error.log  crit; 
pid        /usr/local/webserver/nginx/nginx.pid; 
 #Specifies the value for maximum file descriptors that can be opened by this process. 
worker_rlimit_nofile 65535; 
#工作模式及连接数上限 
events 
{  
 use epoll;  
 worker_connections 65535; 
} 
#设定http服务器,利用它的反向代理功能提供负载均衡支持 
http 
{   
  #设定mime类型   
  include       mime.types;   
  default_type  application/octet-stream;     
  #charset  gb2312;  
  #设定请求缓冲      
  server_names_hash_bucket_size 128;   
  client_header_buffer_size 32k;  
  large_client_header_buffers 4 32k;  
  client_max_body_size 300m; 
  sendfile on;  
  tcp_nopush     on;   
  keepalive_timeout 60; 
  tcp_nodelay on; 
  server_tokens off;
   client_body_buffer_size 512k; 
  proxy_connect_ti