Nginx Tomcat配置

Nginx Tomcat集群架设李根明2012-05-31机器部署:前段1台Nginx 服务器做负载均衡,后台N 台tomcat 组成的集群处理服务器。一、需要安装的程序检查是否已经安装以下软件,检查

Nginx Tomcat集群架设

李根明

2012-05-31

机器部署:

前段1台Nginx 服务器做负载均衡,后台N 台tomcat 组成的集群处理服务器。

一、需要安装的程序

检查是否已经安装以下软件,检查语句:rpm –qa |grepzlib

如果未安装先安装以下软件。

1. gzip module requires zlib library

2. rewrite module requires pcre library

3. ssl support requires openssl library

4、JDK

JDK 的安装配置:

安装完成后会在/usr/目录下生成一个java 文件夹。

设置系统环境变量

#vi /etc/profile

加入下面几行:

JAVA_HOME=/usr/java/jdk1.6.0_04 //配置jdk 的目录

CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar

PATH=$JAVA_HOME/bin:$PATH:$HOME/bin:$JAVA_HOME/jre/bin

注意:

$JAVA_HOME/bin:要放在最前面因为这个才是我们安装的jdk 的路径,开发的程序一般都执行这个路径下的JDK. 如果不放在最前面,执行的就有可能是系统自带的JDK 了,有些时候会因为路径错误而报错。 修改export 这一行,添加:

export JAVA_HOME CLASSPATH PATH

注销环境,使环境变量生效(或者执行source /etc/profile命令 )

检查JDK 是否安装成功

#echo $JAVA_HOME (会显示JDK 所在目录)

#java -version (查看JDK 版本信息)

如果可以正确显示出JDK 的版本信息,说明java 环境变量配置成功。

二、安装Tomcat

1、安装tomcat

,

下载apache-tomcat-7.0.27.tar.gz

直接解压即可:

tarzxvfapache-tomcat-7.0.27.tar.gz

启动:

# ./bin/startup.sh

关闭:

# ./bin/shutdown.sh

测试Tomcat 是否安装成功:

打开

如果Tomcat 启动不成功,看一下日志:logs/catalina.out文件查看原因

如果 Tomcat 已启动,但是网页访问不了,可能是linux 防火墙对端口进行了屏蔽,两种解决办法,第一种关闭防火墙:

即时生效,重启后失效

开启: service iptables start

关闭:serviceiptables stop

第二种方法,防火墙开启Tomcat 的端口

修改防火墙配置需要修改 /etc/sysconfig/iptables 这个文件,如果要开放哪个端口,在里面添加一条。

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

就可以了,其中 80 是要开放的端口号,然后重新启动linux 的防火墙服务。

然后再启动tomcat 再试试。

2、修改配置文件

a 、配置端口

配置文件:conf/server.xml

默认端口为8080,可以修

B 、优化tomcat 最大并发数

,

maxThreads="2048" minSpareThreads="100" maxSpareThreads="200"

enableLookups="false" redirectPort="8443" acceptCount="500"

connectionTimeout="20000" disableUploadTimeout="true" />

(注,主转发的虚拟主机必须用localhost ,否则nginx 不能通过内网ip 转发,而只有通过域名转发

其他服务器Tomcat 同样配置即可

三、安装nginx

a 、安装nginx

下载nginx-0.6.32.tar.gz

解压nginx-0.6.32.tar.gz

tarzxvfnginx-0.6.32.tar.gz

安装nginx :

./configure

make

make install

默认安装的路径是/usr/local/nginx

更多的安装配置

./configure --prefix=/usr/local/nginx

--with-openssl=/usr/include (启用ssl)

--with-pcre=/usr/include/pcre/ (启用正规表达式)

--with-http_stub_status_module (安装可以查看nginx 状态的程序)

--with-http_memcached_module (启用memcache 缓存)

--with-http_rewrite_module (启用支持url 重写)

启动及重启

启动:./nginx /sbin/nginx

重启:kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

测试配置文件:./nginx /sbin/nginx-t

打开http://ip:80 ,如果出现nginx 画页说明安装成功。

b 、配置文件

配置文件为:nginx/conf/nginx.conf

,

#运行用户

user nobodynobody;

#启动进程

worker_processes 5;

#全局错误日志及PID 文件

error_log logs/error.log notice;

pid logs/nginx.pid;

#工作模式及连接数上限

events {

#工作模式有:select(标准模式), poll (标准模式) , kqueue(高效模式,适用FreeBSD 4.1 , OpenBSD

2.9 , NetBSD 2.0 and MacOS X),

#epoll(高效模式,本例用的。适用Linux 2.6 ,SuSE 8.2,),/dev/poll(高效模式,适用Solaris 7 11/99 , HP/UX 11.22 (eventport), IRIX 6.5.15 和 Tru64 UNIX 5.1A )

useepoll;

worker_connections 1024;

}

#设定http 服务器,利用它的反向代理功能提供负载均衡支持

#设定mime 类型

includeconf/mime.types;

default_type application/octet-stream;

#设定日志格式

log_format main '$remote_addr - $remote_user [$time_local] '

,

'"$request" $status $bytes_sent '

'"$http_referer" "$http_user_agent" '

'"$gzip_ratio"';

log_format download '$remote_addr - $remote_user [$time_local] '

'"$request" $status $bytes_sent '

'"$http_referer" "$http_user_agent" '

'"$http_range" "$sent_http_content_range"';

#设定请求缓冲

client_header_buffer_size 10k;

large_client_header_buffers 4 4k;

#开启gzip 模块,要求安装gzip 在运行./config时要指定

gzip on;

gzip_min_length 1100;

gzip_buffers 4 8k;

gzip_types text/plain;

output_buffers 1 32k;

postpone_output 1460;

#设定访问日志

access_log logs/access.log main;

client_header_timeout 3m;

,

client_body_timeout 3m;

send_timeout 3m;

sendfile on;

tcp_nopush on;

tcp_nodelay on;

keepalive_timeout 65;

#设定负载均衡的服务器列表

upstreambackserver {

#weigth参数表示权值,权值越高被分配到的几率越大

#本例是指在同一台服务器,多台服务器改变ip 即可

server 127.0.0.1:8081 weight=5;

server 127.0.0.1:8082;

server 127.0.0.1:8083;

}

#设定虚拟主机,默认为监听80端口,改成其他端口会出现问题

server {

listen 80;

server_nametest.comwww.test.com;#如果是本机改为localhost

charset utf8;

#设定本虚拟主机的访问日志

access_log logs/test.com.log main;

,

#如果访问 /images/*, /js/*, /css/* 资源,则直接取本地文件,不用转发。但如果文件较多效果不是太好。

location ~ ^/(images|js|css)/ {

root /usr/local/testweb;

expires 30m;

}

#对 "/" 启用负载均衡,所有请求直接转发到 upstream backserver 中定义的服务组

location / {

proxy_passhttp://backserver;

proxy_redirect off;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

client_max_body_size 10m;

client_body_buffer_size 128k;

proxy_connect_timeout 90;

proxy_send_timeout 90;

proxy_read_timeout 90;

proxy_buffer_size 4k;

proxy_buffers 4 32k;

proxy_busy_buffers_size 64k;

,

proxy_temp_file_write_size 64k;

}

#设定查看Nginx 状态的地址, 在运行./config 要指定,默认是不安装的。

location /NginxStatus {

stub_status on;

access_log on;

auth_basic "NginxStatus";

#是否要通过用户名和密码访问,测试时可以不加上。conf/htpasswd 文件的内容用 apache 提供的 htpasswd 工具来产生即可

#auth_basic_user_fileconf/htpasswd;

}

}

测试:

以上完成后,在几台tomcat 的webApps/ROOT/ 中建立index1.jsp ,分别填写不同的内容,谈后在输入htpp://ip/index1.jsp ,多刷新几次看看结果

标签: