Nginx Tomcat配置
Nginx Tomcat集群架設(shè)李根明2012-05-31機(jī)器部署:前段1臺Nginx 服務(wù)器做負(fù)載均衡,后臺N 臺tomcat 組成的集群處理服務(wù)器。一、需要安裝的程序檢查是否已經(jīng)安裝以下軟件,檢查
Nginx Tomcat集群架設(shè)
李根明
2012-05-31
機(jī)器部署:
前段1臺Nginx 服務(wù)器做負(fù)載均衡,后臺N 臺tomcat 組成的集群處理服務(wù)器。
一、需要安裝的程序
檢查是否已經(jīng)安裝以下軟件,檢查語句: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 文件夾。
設(shè)置系統(tǒng)環(huán)境變量
#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 的路徑,開發(fā)的程序一般都執(zhí)行這個路徑下的JDK. 如果不放在最前面,執(zhí)行的就有可能是系統(tǒng)自帶的JDK 了,有些時候會因為路徑錯誤而報錯。 修改export 這一行,添加:
export JAVA_HOME CLASSPATH PATH
注銷環(huán)境,使環(huán)境變量生效(或者執(zhí)行source /etc/profile命令 )
檢查JDK 是否安裝成功
#echo $JAVA_HOME (會顯示JDK 所在目錄)
#java -version (查看JDK 版本信息)
如果可以正確顯示出JDK 的版本信息,說明java 環(huán)境變量配置成功。
二、安裝Tomcat
1、安裝tomcat
,下載apache-tomcat-7.0.27.tar.gz
直接解壓即可:
tarzxvfapache-tomcat-7.0.27.tar.gz
啟動:
# ./bin/startup.sh
關(guān)閉:
# ./bin/shutdown.sh
測試Tomcat 是否安裝成功:
打開
如果Tomcat 啟動不成功,看一下日志:logs/catalina.out文件查看原因
如果 Tomcat 已啟動,但是網(wǎng)頁訪問不了,可能是linux 防火墻對端口進(jìn)行了屏蔽,兩種解決辦法,第一種關(guān)閉防火墻:
即時生效,重啟后失效
開啟: service iptables start
關(guān)閉: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 的防火墻服務(wù)。
然后再啟動tomcat 再試試。
2、修改配置文件
a 、配置端口
配置文件:conf/server.xml
默認(rèn)端口為8080,可以修
B 、優(yōu)化tomcat 最大并發(fā)數(shù) maxThreads="2048" minSpareThreads="100" maxSpareThreads="200" enableLookups="false" redirectPort="8443" acceptCount="500" connectionTimeout="20000" disableUploadTimeout="true" /> (注,主轉(zhuǎn)發(fā)的虛擬主機(jī)必須用localhost ,否則nginx 不能通過內(nèi)網(wǎng)ip 轉(zhuǎn)發(fā),而只有通過域名轉(zhuǎn)發(fā) 其他服務(wù)器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 默認(rèn)安裝的路徑是/usr/local/nginx 更多的安裝配置 ./configure --prefix=/usr/local/nginx --with-openssl=/usr/include (啟用ssl) --with-pcre=/usr/include/pcre/ (啟用正規(guī)表達(dá)式) --with-http_stub_status_module (安裝可以查看nginx 狀態(tài)的程序) --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 ,如果出現(xiàn)nginx 畫頁說明安裝成功。 b 、配置文件 配置文件為:nginx/conf/nginx.conf #運行用戶 user nobodynobody; #啟動進(jìn)程 worker_processes 5; #全局錯誤日志及PID 文件 error_log logs/error.log notice; pid logs/nginx.pid; #工作模式及連接數(shù)上限 events { #工作模式有:select(標(biāo)準(zhǔn)模式), poll (標(biāo)準(zhǔn)模式) , 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; } #設(shè)定http 服務(wù)器,利用它的反向代理功能提供負(fù)載均衡支持 #設(shè)定mime 類型 includeconf/mime.types; default_type application/octet-stream; #設(shè)定日志格式 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"'; #設(shè)定請求緩沖 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; #設(shè)定訪問日志 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; #設(shè)定負(fù)載均衡的服務(wù)器列表 upstreambackserver { #weigth參數(shù)表示權(quán)值,權(quán)值越高被分配到的幾率越大 #本例是指在同一臺服務(wù)器,多臺服務(wù)器改變ip 即可 server 127.0.0.1:8081 weight=5; server 127.0.0.1:8082; server 127.0.0.1:8083; } #設(shè)定虛擬主機(jī),默認(rèn)為監(jiān)聽80端口,改成其他端口會出現(xiàn)問題 server { listen 80; server_nametest.comwww.test.com;#如果是本機(jī)改為localhost charset utf8; #設(shè)定本虛擬主機(jī)的訪問日志 access_log logs/test.com.log main; #如果訪問 /images/*, /js/*, /css/* 資源,則直接取本地文件,不用轉(zhuǎn)發(fā)。但如果文件較多效果不是太好。 location ~ ^/(images|js|css)/ { root /usr/local/testweb; expires 30m; } #對 "/" 啟用負(fù)載均衡,所有請求直接轉(zhuǎn)發(fā)到 upstream backserver 中定義的服務(wù)組 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; } #設(shè)定查看Nginx 狀態(tài)的地址, 在運行./config 要指定,默認(rèn)是不安裝的。 location /NginxStatus { stub_status on; access_log on; auth_basic "NginxStatus"; #是否要通過用戶名和密碼訪問,測試時可以不加上。conf/htpasswd 文件的內(nèi)容用 apache 提供的 htpasswd 工具來產(chǎn)生即可 #auth_basic_user_fileconf/htpasswd; } } 測試: 以上完成后,在幾臺tomcat 的webApps/ROOT/ 中建立index1.jsp ,分別填寫不同的內(nèi)容,談后在輸入htpp://ip/index1.jsp ,多刷新幾次看看結(jié)果