hyzqb 发表于 2018-12-7 14:18:36

JSP应用服务器搭建实施文档(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后面接虚拟主机名称,docBase后面接虚拟主机对应的路径位置。
  安装完成后,启动tomcat,默认即监听了8080端口,启动命令如下:
  

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

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

  
lsof -i:8080

  
COMMAND   PID USER   FD   TYPEDEVICE>  
java    23731 root   40uIPv6 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.运维网.com指向了xxx.xxx.xxx.146,另一台Web配置跟xxx.xxx.xxx.146一样的,我这里以xxx.xxx.xxx.146举例说明,等此架构中的Web环境均顺利后,再将域名www.运维网.com指向我们的VIP地址):
  

  
userwww www;
  
worker_processes 8;
  
error_log/usr/local/webserver/nginx/logs/nginx_error.logcrit;
  
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_typeapplication/octet-stream;
  
#charsetgb2312;
  
#设定请求缓冲
  
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_timeout   5;
  
proxy_send_timeout      60;
  
proxy_read_timeout      5;
  
proxy_buffer_size       16k;
  
proxy_buffers         4 64k;
  
proxy_busy_buffers_size 128k;
  
proxy_temp_file_write_size 128k;
  
#fastcgi_connect_timeout 300;
  
#fastcgi_send_timeout 300;
  
#fastcgi_read_timeout 300;
  
#fastcgi_buffer_size 64k;
  
#fastcgi_buffers 4 64k;
  
#fastcgi_busy_buffers_size 128k;
  
#fastcgi_temp_file_write_size 128k;
  
gzip on;
  
gzip_min_length1k;
  
gzip_buffers   4 16k;
  
gzip_http_version 1.1;
  
gzip_comp_level 2;
  
gzip_types       text/plain application/x-javascript text/css application/xml;
  
gzip_vary on;
  

  
#limit_zonecrawler$binary_remote_addr10m;
  

  
###禁止通过ip访问站点
  
server{
  
server_name _;
  
return 404;
  
}
  
server
  
{
  
listen       80;
  
server_namewww.运维网.com;
  
index index.html index.htm index.jsp index.do;#设定访问的默认首页地址
  
root/data/htdocs/www/shop;#设定网站的资源存放路径
  
#limit_conn   crawler20;
  
if (-d $request_filename)
  
{
  
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
  
}
  
#所有jsp的页面均交由tomcat处理
  
location ~ \.(jsp|jspx|do)?$ {
  
proxy_set_headerHost $host;
  
proxy_set_headerX-Real-IP$remote_addr;
  
proxy_pass http://127.0.0.1:8080;#转向tomcat处理
  
}
  
location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ #设定访问静态文件直接读取不经过tomcat
  
{
  
expires      30d;
  
}
  
location ~ .*\.(js|css)?$
  
{
  
expires      1h;
  
}
  

  
#定义访问日志的写入格式
  
log_formatwwwlog'$remote_addr - $remote_user [$time_local] "$request" '
  
'$status $body_bytes_sent "$http_referer" '
  
'"$http_user_agent" $http_x_forwarded_for';
  
access_log/data/logs/www_nginx.log wwwlog;#设定访问日志的存放路径
  
}
  
}
  

  配置完成后,我们用如下命令启动Nginx进程,让其监听80端口,如下所示:
  

  
/usr/local/webserver/nginx/sbin/nginx
  

  然后我们在/data/htdocs/www/shop/下面写一段Java代码,验证以上的配置是否成功,写完后我们可以用cat 命令来查看/data/htdocs/www/shop/mem.jsp文件,文件内容如下所示:
  

  

  

  我们可以输入http://www.运维网.com/mem.jsp来验证nginx+tomcat整合成功了。


页: [1]
查看完整版本: JSP应用服务器搭建实施文档(Nginx+Tomcat)