Apache 囫圇吞了一隻湯姆貓 「純粹技術文件 不搞技術 不要進來唷」
OS:Gentoo
apache 2.2.6
Tomcat 6.0.14-r1 (Cluster )
JDK 1.6.0_02-b05
有鑑於老闆......以下內容消音
所以特地交辦了一個全新計畫
你知道了 光這個計畫的幅度已經
想到要靠背的地步了

以前都馬是用 apache + resin
用了好幾年
沒有想到 apache2 不知道多少版本的忽然間
跟Resin 有一點不相容 搞了好一陣子放棄
結果一個無意識的回答

就陷入一種 跟apache 外加一隻貓的奮戰中 .....
但是還好
經過了大概一二三四個月的奮戰
搞了一個囫圇 大概跑起來沒有什麼特大的問題
好加在 工作還是保住了
畢竟 Tomcat 有很多東東可以調正 但是 相信
在後面 可以在好好的研究研究
因為 老闆說要把正式環境搬過去啦
以下內容消音
以下內容消音!

但是 身為一個認真負責任的工程師
又有那麼很多點的 憂鬱 氣質的單身男子
我還是毅然決然的把這個任務完成了絕大部分

不多說
這裡先寫一個囫圇
反正你就算不懂
你看了 Copy & Paste 也可以跑起來
這是我經過了無數次的實驗考驗
在我實在是無聊到一個不行的地步
花了點時間研究出來的成果
這期間大概花了一二三四個月的時間
廢話不多說
下面 看官請看
1. 安裝Apache2.2.6
OS:gentoo
pre-condition1 : portage-2.1.4.4
pre-condition1 : 我只描述 有關 apache && tomcat 的相關部份唷
(其他apache 的什麼設定 我基本當作你會了 ,阿有什麼深入的問題 !?嘖嘖嘖嘖!
我只能跟你這麼說:孩子都這麼大了自己找答案!)
基本上 我們是一定要裝 mod_proxy 因為我沒有採用 像以前的什麼JK啦 之類的 我直接採用 apache 內的Mod_proxy
不錯用 可以作很多事情 外加 rewrite 完美 嘖嘖嘖嘖 ,
阿如果你想要問之前的jk和Mod_proxy 有什麼差別唷
ㄟ 自己去找... 呵呵 找到順便跟我說一下唷
vm2 logs # APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias proxy proxy_ajp proxy_balancer proxy_connect proxy_http rewrite" emerge -pv apache
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild NS ] dev-libs/apr-1.2.11 USE="-debug -doc -ipv6 -urandom" 1,088 kB
[ebuild U ] dev-libs/openssl-0.9.8g [0.9.8d] USE="zlib -bindist -emacs -gmp% -kerberos% -sse2 -test" 3,277 kB
[ebuild NS ] dev-libs/apr-util-1.2.10 USE="-berkdb -doc -gdbm -ldap -mysql -postgres -sqlite -sqlite3" 639 kB
[ebuild U ] www-servers/apache-2.2.8 [2.0.58-r2] USE="ssl -debug -doc -ldap (-selinux) -sni% -static% -suexec% -threads (-apache2%) (-mpm-itk%) (-mpm-leader%) (-mpm-peruser%) (-mpm-prefork%) (-mpm-threadpool%) (-mpm-worker%) (-static-modules%)" APACHE2_MODULES="actions%* alias%* auth_basic%* authn_alias%* authn_anon%* authn_dbm%* authn_default%* authn_file%* authz_dbm%* authz_default%* authz_groupfile%* authz_host%* authz_owner%* authz_user%* autoindex%* cache%* dav%* dav_fs%* dav_lock%* deflate%* dir%* disk_cache%* env%* expires%* ext_filter%* file_cache%* filter%* headers%* include%* info%* log_config%* logio%* mem_cache%* mime%* mime_magic%* negotiation%* proxy%* proxy_ajp%* proxy_balancer%* proxy_connect%* proxy_http%* rewrite%* setenvif%* speling%* status%* unique_id%* userdir%* usertrack%* vhost_alias%* -asis% -auth_digest% -authn_dbd% -cern_meta% -charset_lite% -dbd% -dumpio% -ident% -imagemap% -log_forensic% -proxy_ftp% -version%" APACHE2_MPMS="-event% -itk% -peruser% -prefork% -worker%" 4,746 kB
[ebuild N ] app-admin/apache-tools-2.2.8 USE="ssl" 0 kB
Total: 5 packages (2 upgrades, 1 new, 2 in new slots), Size of downloads: 9,749 kB
設定apache 的mod_proxy && rewrite 的部份
因為我們需要用到 mod_proxy 裡面的 proxy_balancer 作負載平衡
然後rewrite 的部份是要做到 Failovr 的功用
(詳細的部份,我下次在解釋,但是...很重要的但是 我常常會忘記嘿嘿)
vim /etc/apache2/modules.d/99_mod_proxy.conf
(這個檔案實際上是不存在的 建立存檔,後面全貼上
但是 如果你發現這個檔案的存在 靠 ...那就表示我們系出同門呀
其實名稱是什麼不重要 重要的是尾巴要有 .conf 因為這樣Apache 才會吃進去)
#*********************************************************************************************
# mod_Proxy
<IfModule mod_proxy.c>
<Location /balancer-manager>
SetHandler balancer-manager
</Location>
<Location / >
ProxyPass balancer://172.17.99.103/
</Location>
<Location /crm >
ProxyPass balancer://172.17.99.103/crm nofailover=Off
ProxyPass balancer://172.17.99.103/TomcatDemo nofailover=Off
</Location>
<Proxy balancer://172.17.99.103/>
#BalancerMember ajp://172.17.99.101:8081 route=cs101
BalancerMember ajp://172.17.99.102:8082 route=cs102
</Proxy>
ProxyVia On
</IfModule>
# rewrite
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteLogLevel 0
RewriteMap server rnd:/etc/apache2/modules.d/rproxy-server
RewriteRule ^/rproxy-status.* - [L]
RewriteRule ^(http|ajp)://.* - [F]
RewriteRule ^/(.*\.(cgi|shtml))$ to://${server:dynamic}/$1 [S=1]
RewriteRule ^/(.*)$ to://${server:static}/$1
RewriteRule ^to://([^/]+)/(.*) http://$1/$2 [E=SERVER:$1,P,L]
RewriteRule .* - [F]
RewriteRule ^(/.*;jsessionid=.*)$ $1 [T=jserv-servlet]
RewriteRule ^.*;jsessionid=\w*\.(\w+)($|;) http://${SERVERS:$1}%{REQUEST_URI} [P,L]
<Location /TomcatDemo>
RewriteCond "%{HTTP_COOKIE}" "(^|;\s*)jsessionid=\w*\.(\w+)($|;)"
RewriteRule "(.*)" "http://${SERVERS:%2}%{REQUEST_URI}" [P,L]
RewriteRule "^.*;jsessionid=\w*\.(\w+)($|;)" "http://${SERVERS:$1}%{REQUEST_URI}" [P,L]
RewriteRule "(.*)" "http://${SERVERS:ALL}%{REQUEST_URI}" [P,L]
</Location>
</IfModule>
#*********************************************************************************************
設定完 resatrt apache
「注意 」這很重要 如果你是用 gentoo 的Portage 裝apache 的話
請特別注意 一個地方 這很重要
要不然你大概要花個三四天 的無聊時刻才會找到為什麼
「 /etc/conf.d/apache2 」 -D PROXY 一定要被 Enable
==>APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D LANGUAGE -D SSL -D SSL_DEFAULT_VHOST -D PROXY -D JK"
2. 最重要的就是把 湯姆 放到該放的位置 (
PS一下下 昨天我跟李威威明明就是在講湯姆貓
)vm2 ~ # emerge -pv tomcat
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild R ] www-servers/tomcat-6.0.16 USE="-doc -examples -source -test" 0 kB(因為我已經裝過了 所以只剩下一個)
Total: 1 package (1 reinstall), Size of downloads: 0 kB
vm2 ~ #
他會跑了一個好一陣子
裝完後 就進行最重要的一部分 設定 「科拉絲特」 請先在兩台湯姆貓們 找一台來設定
那一台都可以 因為都要裝
vm2 ~ # vim /etc/tomcat-6/server.xml
以下我就不全貼了 我會節錄 但是都是在Server.xml 裡面 ~~~請自行Mapping 唷
#*********************************************************************************************
a:第一個Connector :
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
注意
URIEncoding="UTF-8" ==> 這是為了中文顯示的問題 可加可不加
自行判斷唷
b:這個很重要 因為這是搭配 Apache 的部份 請往上面Scroll 一下 同樣顏色的地方
<Engine name="Standalone" defaultHost="localhost" jvmRoute="cs102">
c:再來 貼上這一串 就完成了
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6">
<Manager className="org.apache.catalina.ha.session.BackupManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"
mapSendOptions="6"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.1"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="5000"
selectorTimeout="100"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
#************************************ end Server.xml ****************************************
另外 如果你想要jsp/servlet auto compile 請修改這個地方
ps: 不要問我為什麼要特別的設定 auto compile 因為我遇到程式磨人
vm2 ~ # vim /etc/tomcat-6/context.xml
<Context reloadable="true" privileged="true">
還有 如果遇到中文顯示的問題 有一個地方也是可以修修改改
一樣 不要問我為什麼 因為我遇到程式磨人
vm2 ~ # vim /etc/tomcat-6/web.xml
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>fileEncoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
OK !!!
寫到這裡 另外一邊 就差不多了 照樣copy 一份 在修修改改就好了
其實我也不是只會寫一些阿紗布虜的 ......大家看看吧
請先 登入 以發表留言。