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 ,多刷新几次看看结果