文节选自某电子商务网站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_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_length 1k; 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_zone crawler $binary_remote_addr 10m; ###禁止通过ip访问站点 server{ server_name _; return 404; } server { listen 80; server_name www.51cto.com; index index.html index.htm index.jsp index.do;#设定访问的默认首页地址 root /data/htdocs/www/shop;#设定网站的资源存放路径 #limit_conn crawler 20; if (-d $request_filename) { rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent; } #所有jsp的页面均交由tomcat处理 location ~ \.(jsp|jspx|do)?$ { proxy_set_header Host $host; proxy_set_header X-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_format wwwlog '$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文件,文件内容如下所示:
<% Runtime lRuntime = Runtime.getRuntime(); out.println("*** BEGIN MEMORY STATISTICS ***<br/>"); out.println("Free Memory: "+lRuntime.freeMemory()+"<br/>"); out.println("Max Memory: "+lRuntime.maxMemory()+"<br/>"); out.println("Total Memory: "+lRuntime.totalMemory()+"<br/>"); out.println("Available Processors : "+lRuntime.availableProcessors()+"<br/>"); out.println("*** END MEMORY STATISTICS ***"); %>
我们可以输入http://www.51cto.com/mem.jsp来验证nginx+tomcat整合成功了。
相关推荐
### Linux下Nginx+Tomcat整合的安装与配置详解 在现代的Web服务器架构中,Nginx作为高性能的反向代理服务器和负载均衡器,常被用来与Tomcat等应用服务器配合使用,以提高网站的响应速度、稳定性和安全性。本文将...
Linux下Nginx+Tomcat整合的安装与配置是一项重要的知识点,涉及到Linux系统操作、Nginx服务器的部署、Tomcat应用服务器的安装以及二者整合配置方法。整合Nginx和Tomcat的目的是为了结合Nginx作为高性能的反向代理...
本教程将详细介绍如何在Linux系统上安装Nginx并配置与Tomcat的集成,以此替代Apache作为前端服务器。 首先,我们来了解Nginx。Nginx是一款高性能的HTTP和反向代理服务器,以其轻量级、低内存占用和高并发处理能力而...
### Linux 下 Nginx + Tomcat 的安装与配置详解 #### 一、环境准备与基础知识 在开始安装之前,我们先来了解一下相关的基础知识。 - **Linux 系统**:本教程适用于大多数 Linux 发行版,如 CentOS、Ubuntu、...
* 在企业生产环境中,通常会将 Nginx 和 Tomcat 整合来使用 四、Nginx 负载均衡 Tomcat 集群&动静分离&Rewrite 实战 * Nginx 负载均衡 Tomcat 集群的实现 * 动静分离的实现 * Rewrite 实战的实现 五、结语 本...
【Linux下Nginx+Tomcat整合的安装与配置】 在服务器环境中,为了实现高效的Web服务,常常会采用Nginx作为反向代理服务器,搭配Tomcat应用服务器进行部署。Nginx以其轻量级、高并发的特点处理静态资源请求,而Tomcat...
总结,构建Linux下Nginx+Memcached+Tomcat的负载均衡集群服务,需要深入了解每个组件的工作原理,正确配置和整合这些组件,以实现高效、稳定的Web服务。同时,不断优化和调整集群策略,以适应业务的增长和变化。
### Nginx与Tomcat整合的关键知识点 #### 一、Nginx与Tomcat整合概述 - **背景介绍**:Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行。其特点是占有内存少...
Linux 负载均衡 tomcat+nginx+memcached整合所有相关jar 步骤地址:http://blog.csdn.net/qierkang/article/details/52873541
在本篇文章中,我们将深入探讨如何使用Nginx、Tomcat和Memcached-Session-Manager(MSM)来构建一个集群环境,并实现Session共享。这涉及到集群搭建、分布式应用以及缓存管理等多个方面的IT知识。下面将详细展开这些...
本教程将详细介绍如何在CentOS上安装Nginx并将其与Tomcat整合。 **一、Nginx的安装** 1. **更新系统**: 首先确保系统是最新的,运行`sudo yum update`命令。 2. **添加EPEL仓库**: Nginx不在CentOS的默认仓库...
- 安装和配置apr和apr-util库,这对于优化Tomcat性能至关重要,特别是与本地服务器技术的集成。 - 安装`tomcat-native`,以利用APR库提升性能。 总结起来,这个配置方案通过Nginx和LVS提供高可用性,通过多台...
3.2 配置Nginx与Tomcat整合 - 创建Nginx配置文件(如`/etc/nginx/conf.d/tomcat.conf`),设置反向代理规则,将HTTP请求转发到Tomcat服务器。 - 启用HTTPS支持,配置SSL证书和密钥,确保通信安全。 - 配置Nginx...
【课程大纲】第1篇-Linux 01-Linux简介及安装 共11页第1篇-Linux 02-...Nginx工作原理 共15页第2.9篇-Nginx部分-与Tomcat整合配置 共14页第3篇-Memcached缓存篇 共30页第4篇-Redis 共74页第5篇-项目开发准备工作 共14页
本手册介绍了在Windows服务器环境下部署一个由Tomcat, Nginx, Redis, PostgreSQL组成的架构系统的详细步骤。以下将详细介绍手册中的关键知识点。 ### 系统运行环境 #### 硬件配置 部署该系统需要一定的硬件资源,...
1. **nginx的安装脚本**:这通常是一个自动化脚本,用于在Linux系统上下载、编译和安装`nginx`,包括设置必要的依赖和配置。 2. **tomcat配置**:`Tomcat`的配置文件,如`server.xml`,可能已经被修改以适应与`...