公司添加項目,需要架設環境,當時考慮用的nginx轉發tomcat,可是分公司那邊不會用nignx,只有用apache
反向代理 tomcat 虛擬主機,由於是頭一次用 apache 做反向,tomcat集群,特留下過程,方便他人 在網上找了好多文章,其中為經典的我都摘抄了 Apache HTTP server
和 Tomcat server 整合,一般是希望對於用戶只公布 Apache HTTP server 的網址,而 Tomcat 的網址則不公布,扮演一個幕後英雄的角色.訪問 Tomcat 的 HTTP
請求,通過 Apache 轉發給 Tomcat,Tomcat 處理完后,將 HTTP 回應返回給 Apache,然後 Apache HTTP
回應發回給用戶端瀏覽器. Apache HTTP server 和 Tomcat server 直接的 HTTP 數據傳輸,有很多種方法. 方法一,使用 mod_jk
.很多網站上介紹到 Apache HTTP server 和 Tomcat server 整合的時候,都是在介紹 mod_jk.so 的使用,這是一種比較老的方法,並且需要額外下載 mod_jk.Apache 和
Tomcat 的默認配置文件都需要改動. 方法二, URL rewrite,也就是對於指定格式的 URL,轉發給某個 Tomcat 的網址.這裡所說的指定格式,是指 Apache 所使用的正則表達式,通俗地將,是一種類似
* 的一種比較高級通配符.這種方法不需要下在額外的文件,只需要配置 Apache. 方法三,mod_proxy_ajp,僅在 Apache 2.1 及以後的版本中可用,Apache
自帶的一個新功能模塊.這時 Apache 使用 Apache JServ Protocol 與 Tomcat 通訊.不需要下在額外的文件,需要改動Apache 和 Tomcat 的默認配置文件都需要改動.
方法四,mod_proxy.其實 mod_proxy 既可以做類似於 Wingate 一樣的公司區域網共享上網代理,也可以做反向代理(Reverse proxy).這裡使用的是反向代理功能,用戶端瀏覽器不需要把代理伺服器改成這裡的 Apache 地址.
mod_proxy 是 Apache 自帶功能,並且配置比較簡單. yum install gcc –y
wget http://mirror.bjtu.edu.cn/apache//httpd/httpd-2.2.17.tar.gz
wget http://www.oracle.com/technetwork/indexes/downloads/index.html
wget http://labs.renren.com/apache-mirror/tomcat/tomcat-7/v7.0.8/bin/apache-tomcat-7.0.8.tar.gz
我是用一台伺服器 做的 環境如下
Centos 5.5 64
位 16核cpu 32G 內存 Apache tomcat (開啟四個埠)
#ar zxvf http-2.2.17.tar.gz #d httpd-2.2.17
#/configure --prefix=/usr/local/apache --enable-modules=so --enable-mods-shared=all --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer --enable-rewrite #make ; make install #cp support/apachectl /etc/init.d/httpd #chmod 755 /etc/init.d/httpd #vim /etc/init.d/httpd #chconfig –add httpd #chkconfig –level 345 httpd on cd .. chmod x jdk-x64.bin #
添加執行許可權 ./jdk-x64.bin #安裝jdk mv jdk1.6.0_23/ /usr/java vim /etc/profile # 添加java環境變數
#Java Environment JAVA_HOME=/usr/java JAVA_BIN=/usr/java/bin PATH=$PATH:$JAVA_HOME/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME JAVA_BIN PATH CLASSPATH source /etc/profile #java –version java version "1.6.0_23" Java(TM) SE Runtime Environment (build 1.6.0_23-b05) Java HotSpot(TM) 64-Bit Server VM (build 19.0-b09, mixed mode)
#tar zxvf apache-tomcat-7.0.8.tar.gz #mv apache-tomcat-7.0.8 /usr/local/tomcat73 #vim /etc/profile # 添加tomcat 環境變數 TOMCAT_HOME=/usr/local/tomcat73 CATALINA_HOME=/usr/local/tomcat73 CATLINA_BASE=/usr/local/tomcat73
/usr/local/tomcat73/bin/catalina.sh start #添加啟動腳本 export TOMCAT_HOME CATALINA_HOME CATALINA_BASH TOMCAT_BIN #source /etc/profile
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule rewrite_module modules/mod_rewrite.so 把apache 虛擬主機前邊的# 去掉 Include conf/extra/httpd-vhosts.conf
添加 Include conf/extra/httpd-vhosts.conf 如下 <VirtualHost *80> ServerAdmin crazylinux@163.com ProxyRequests Off Proxypass / balancer://proxy/ <Proxy balancer://proxy>
Order Deny,Allow Allow from all BalancerMember http://127.0.0.1:8844 #tomcat 埠 (要用的埠,預設值的
可以隨便設置) BalancerMember http://127.0.0.1:8855 #tomcat 埠 BalancerMember http://127.0.0.1:8866 #tomcat 埠
BalancerMember http://127.0.0.1:8877 #tomcat 埠 </Proxy> </VirtualHost> 保存修改 啟動apache
服務 #/usr/local/apache/bin/apachectl -k start 修改 tomcat ,添加虛擬主機 按埠走 8844 8855 8866 8877 按照預設值的
#vim /usr/local/tomcat73/conf/server.xml 只修改紅色字體 <Service name="Catalina0"> <Connector port="8044" protocol="AJP/1.3" redirectPort="8443" /> <Connector port="8844" /> <Engine name="Catalina0" defaultHost="localhost" jvmRoute="jvm1"> <Logger className="org.apache.catalina.logger.FileLogger" />
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" /> <Host name="localhost" appBase="webapps0" /> </Engine> </Service> <Service name="Catalina1"> <Connector port="8055" protocol="AJP/1.3" redirectPort="8443" /> <Connector port="8855" />
<Engine name="Catalina1" defaultHost="localhost" jvmRoute="jvm2"> <Logger className="org.apache.catalina.logger.FileLogger" /> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" /> <Host name="localhost" appBase="webapps1" /> </Engine> </Service>
<Service name="Catalina2"> <Connector port="8066" protocol="AJP/1.3" redirectPort="8443" /> <Connector port="8866" /> <Engine name="Catalina2" defaultHost="localhost" jvmRoute="jvm3"> <Logger className="org.apache.catalina.logger.FileLogger" /> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" /> <Host name="localhost" appBase="
webapps2" /> </Engine> </Service> <Service name="Catalina3"> <Connector port="8077" protocol="AJP/1.3" redirectPort="8443" /> <Connector port="8877" /> <Engine name="Catalina3" defaultHost="localhost" jvmRoute="jvm4"> <Logger className="org.apache.catalina.logger.FileLogger" />
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" /> <Host name="localhost" appBase="webapps3" /> </Engine> </Service> 然後 創建
tomcat web 目錄在/usr/local/tomcat73/ webapps0 webapps1 webapps2 webapps3 並在每個目錄裡面添加 index1.jsp 並添加 每個埠的對應號
啟動tomcat #/usr/local/tomcat73/bin/start.sh #/usr/local/apache/bin/apachetl –k restart 查看埠 netsant –ntlp [root@localhost tomcat73]# netstat -ntlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:964 0.0.0.0:* LISTEN 2902/rpc.statd tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2849/portmap tcp 0 0 127.0.0.1:631 0.0.0.0:*
LISTEN 3155/cupsd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 3178/sendmail: acce tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 11977/1 tcp
0 0 :::8866 :::* LISTEN 15836/java tcp 0 0 :::8066 :::* LISTEN 15836/java tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 15836/java
tcp 0 0 :::8009 :::* LISTEN 15836/java tcp 0 0 :::8844 :::* LISTEN 15836/java tcp 0 0 :::8044 :::*
LISTEN 15836/java tcp 0 0 :::8877 :::* LISTEN 15836/java tcp 0 0 :::8077 :::* LISTEN 15836/java tcp
0 0 :::80 :::* LISTEN 15987/httpd tcp 0 0 :::8080 :::* LISTEN 15836/java tcp 0 0 :::22 :::* LISTEN
25432/sshd tcp 0 0 :::8855 :::* LISTEN 15836/java tcp 0 0 :::8055 :::* LISTEN 15836/java tcp 0 0 ::1:6010
:::* LISTEN 11977/1 看到了 80 8844 8855 8866 8877 那tomcat
虛擬主機 和 apache都啟動了 訪問下試試吧 本文出自 「奮鬥的小子」 博客,請務必保留此出處http://crazyming.blog.51cto.com/1048571/503637