您好,登錄后才能下訂單哦!
Tomcat怎樣完美實現(xiàn)在線商城應(yīng)用部署,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
Tomcat是一個小型的輕量級應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調(diào)試JSP程序的首選。對于一個初學(xué)者來說,可以這樣認為,當(dāng)在一臺機器上配置好Apache 服務(wù)器,可利用它響應(yīng)對HTML 頁面的訪問請求。實際上Tomcat 部分是Apache 服務(wù)器的擴展,但它是獨立運行的,所以當(dāng)你運行tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的。
Tomcat 很受廣大程序員的喜歡,因為它運行時占用的系統(tǒng)資源小,擴展性好,支持負載平衡與郵件服務(wù)等開發(fā)應(yīng)用系統(tǒng)常用的功能;而且它還在不斷的改進和完善中,任何一個感興趣的程序員都可以更改它或在其中加入新的功能。
環(huán)境介紹:
系統(tǒng)版本:CentOS 6.4_x86_64
mysql版本: mysql-server.x86_64 0:5.1.66-2.el6_3
Apache版本:httpd-2.2.15-26.el6
Tomcat版本:apache-tomcat-7.0.42
JDK版本: jdk-7u40-linux-x64
在線商城系統(tǒng):shopxx-3.0Beta(可下載)
拓撲展示:
安裝配置過程:
1、配置IP地址
############前端服務(wù)器[root@node ~]#:############# ifconfig eth0 172.16.18.6 ifconfig eth2 192.168.18.254/24 ############Tomcat A[root@node1~]#:############### ifconfig eth0 192.168.18.1/24 route add default gw 192.168.18.254 ############Tomcat B[root@node2~]#:################ ifconfig eth0 192.168.18.2/24 route add default gw 192.168.18.254
2、安裝配置后端服務(wù)器
###########TomcatA服務(wù)器:############## ##########安裝JDK:############## [root@node1~]# rpm -ivh jdk-7u9-linux-x64.rpm [root@node1~]# vim /etc/profile.d/java.sh #編輯執(zhí)行腳本 export JAVA_HOME=/usr/java/latest export PATH=$JAVA_HOME/bin:$PATH [root@node1~]# . /etc/profile.d/java.sh #讀取執(zhí)行腳本 [root@node1~]# java -version #查看安裝信息 javaversion "1.7.0_09" #版本信息 Java(TM)SE Runtime Environment (build 1.7.0_09-b05) #運行時環(huán)境的版本 JavaHotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode) #########安裝Tomcat############# [root@node1~]# tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local/ [root@node1~]# cd /usr/local/ [root@node1local]# ln -sv apache-tomcat-7.0.42/ tomcat [root@node1tomcat]# vim /etc/profile.d/tomcat.sh #定義啟動環(huán)境變量 exportCATALINA_HOME=/usr/local/tomcat exportPATH=$CATALINA_HOME/bin:$PATH [root@node1tomcat]# . /etc/profile.d/tomcat.sh #讀取腳本 [root@node1~]# catalina.sh version #查看安裝信息 UsingCATALINA_BASE: /usr/local/tomcat UsingCATALINA_HOME: /usr/local/tomcat UsingCATALINA_TMPDIR: /usr/local/tomcat/temp UsingJRE_HOME: /usr/java/latest UsingCLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Serverversion: Apache Tomcat/7.0.42 Serverbuilt: Jul 2 2013 08:57:41 Servernumber: 7.0.42.0 OSName: Linux OSVersion: 2.6.32-358.el6.x86_64 Architecture: amd64 JVMVersion: 1.7.0_09-b05 JVMVendor: Oracle Corporation #############啟動################## [root@node1~]# catalina.sh start ############查看啟動端口########### [root@node1~]# ss -tanl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 :::111 :::* LISTEN 0 128 *:111 *:* LISTEN 0 100 :::8080 :::* LISTEN 0 128 :::49906 :::* LISTEN 0 128 *:56818 *:* LISTEN 0 128 :::22 :::* LISTEN 0 128 *:22 *:* LISTEN 0 128 127.0.0.1:631 *:* LISTEN 0 128 ::1:631 :::* LISTEN 0 100 ::1:25 :::* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 127.0.0.1:6010 *:* LISTEN 0 128 ::1:6010 :::* LISTEN 0 128 127.0.0.1:6011 *:* LISTEN 0 128 ::1:6011 :::* LISTEN 0 128 127.0.0.1:6012 *:* LISTEN 0 128 ::1:6012 :::* LISTEN 0 1 ::ffff:127.0.0.1:8005 :::* LISTEN 0 100 :::8009 :::* ###解析:tomcat默認監(jiān)聽在8080端口上,啟動監(jiān)聽端口為8005,8009#### ##########Tomcat B服務(wù)器上同樣安裝,這里就不再重復(fù)演示了######## ##########更改監(jiān)聽端口############ [root@node1conf]# vim /usr/local/tomcat/conf/server.xml <Connector port="80"protocol="HTTP/1.1" #70行 connectionTimeout="20000" redirectPort="8443"/> ##########重新啟動服務(wù)############ [root@node1conf]# catalina.sh stop [root@node1conf]# catalina.sh start [root@node1conf]# scp server.xml 192.168.18.2:/usr/local/tomcat/conf/ [root@node2local]# catalina.sh stop [root@node2local]# catalina.sh start
3、配置前端服務(wù)器實現(xiàn)負載均衡
##########安裝Apache################### [root@node~]# yum -y install httpd [root@node~]# service httpd start ##########配置基于mod_proxy代理,負載均衡######## [root@node~]# cd /etc/httpd/conf.d/ [root@nodeconf.d]# vim mod_proxy_tomcat.conf ProxyViaOn ProxyRequestsOff #關(guān)閉正向代理 ProxyPreserveHostOff <Proxybalancer://hotcluster> #定義代理的后端服務(wù)器 BalancerMember http://192.168.18.39:80 loadfactor=1 #指定后端服務(wù)器地址及端口 BalancerMember http://192.168.18.36:80 loadfactor=1 ProxySet lbmethod=byrequests </Proxy> <Location/zhao> SetHandler balancer-manager Proxypass ! Order Deny,Allow Allow from all </Location> ProxyPass/ balancer://hotcluster/ #stickysession=JSESSIONID|jsessionidnofailover=On ProxyPassReverse/ balancer://hotcluster/ <Proxy*> Order Allow,Deny Allow From all </Proxy> <Location / > Order Allow,Deny Allow From all </Location> ############測試語法的正確性############## [root@nodeconf.d]# service httpd configtest ###########重啟服務(wù)####################### [root@nodeconf.d]# service httpd restart
4、查看鏈接狀況開啟tomcat管理功能:
##注意:由于兩臺后端服務(wù)器可能都會用到,所以兩邊都要創(chuàng)建用戶并且保持一致## #########更改用戶管理配置文件###### [root@node1conf]# vim /usr/local/tomcat/conf/tomcat-users.xml ##內(nèi)容:## <rolerolenamerolerolename="manager-gui"/> <role rolename="admin-gui"/> <user username="tomcat"password="tomcat" roles="manager-gui,admin-gui"/> #########復(fù)制到Tomcat B########### [root@node1conf]# scp tomcat-users.xml 192.168.18.2:/usr/local/tomcat/conf/ ##########重新啟動服務(wù)############ [root@node1conf]# catalina.sh stop [root@node1conf]# catalina.sh start [root@node2local]# catalina.sh stop [root@node2local]# catalina.sh start
5、簡單部署主頁查看session值:
##########部署虛擬目錄和部署主頁############# ######### Tomcat A ########### [root@node1 tomcat]# mkdir webapps/testapp/WEB-INF/{lib,classes} -pv [root@node1 tomcat]# vim webapps/testapp/index.jsp ###內(nèi)容### <%@ page language="java" %> <html> <head><title>TomcatA</title></head> <body> <h2><font color="red">TomcatA </font></h2> <table align="centre" border="1"> <tr> <td>Session ID</td> <% session.setAttribute("abc","abc"); %> <td><%= session.getId() %></td> </tr> <tr> <td>Created on</td> <td><%= session.getCreationTime() %></td> </tr> </table> </body> </html> [root@node1 tomcat]# catalina.sh stop [root@node1 tomcat]# catalina.sh start ############ Tomcat B ########### [root@node2 tomcat]# mkdir webapps/testapp/WEB-INF/{lib,classes} -pv [root@node2 tomcat]# vim webapps/testapp/index.jsp ###內(nèi)容### <%@ page language="java" %> <html> <head><title>TomcatB</title></head> <body> <h2><font color="blue">TomcatB </font></h2> <table align="centre" border="1"> <tr> <td>Session ID</td> <% session.setAttribute("abc","abc"); %> <td><%= session.getId() %></td> </tr> <tr> <td>Created on</td> <td><%= session.getCreationTime() %></td> </tr> </table> </body> </html> [root@node2 webapps]# catalina.sh stop [root@node2 webapps]# catalina.sh start
6、基于內(nèi)存復(fù)制實現(xiàn)session共享集群:
############# Tomcat A ############ [root@node1 ~]# cd /usr/local/tomcat/conf/ [root@node1 conf]# nano server.xml #由于以下內(nèi)容有縮進格式建議使用此編輯器 ##添加在/host和/engine之間:## <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"> <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/> <Channel className="org.apache.catalina.tribes.group.GroupChannel"> <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="192.168.18.1" #自己的地址 port="4000" autoBind="100" selectorTimeout="5000" 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.MessageDispatch25Interceptor"/> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/> <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> <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.JvmRouteSessionIDBinderListener"/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster> #停止tomcat## [root@node1 ~]# catalina.sh stop [root@node1 conf]# cp web.xml ../webapps/testapp/WEB-INF/ [root@node1 conf]# vim ../webapps/testapp/WEB-INF/web.xml 添加如下字段: <distributable /> #表示這個應(yīng)用程序的會話將實現(xiàn)分布式 [root@node1 conf]# scp ../webapps/testapp/WEB-INF/web.xml 192.168.18.2:/usr/local/tomcat/webapps/testapp/WEB-INF/ [root@node1 conf]# scp server.xml 192.168.18.2:/usr/local/tomcat/conf/ [root@node1 conf]# catalina.sh start ############ Tomcat B ########### [root@node1 ~]# catalina.sh stop [root@node1 conf]# catalina.sh start
總結(jié):我們發(fā)現(xiàn)無論如何刷新,session id的信息都不會再改變。至此我們完成了使用mod_proxy實現(xiàn)負載均衡和利用tomcat集群實現(xiàn)session共享。下面我們來部署商店的應(yīng)用。
7、在線商店的應(yīng)用實現(xiàn)
############ Tomcat A ############ [root@node1 ~]# unzip shopxx-a5-Beta.zip [root@node1 ~]# mv shopxx-v3.0-Beta/* /usr/local/tomcat/webapps/shopxx [root@node2 tomcat]# vim webapps/shopxx/WEB-INF/web.xml <distributable /> #添加此字段 ############ Tomcat B ############ [root@node2 ~]# unzip shopxx-a5-Beta.zip [root@node2 ~]# mv shopxx-v3.0-Beta/* /usr/local/tomcat/webapps/shopxx [root@node2 tomcat]# vim webapps/shopxx/WEB-INF/web.xml <distributable /> #添加此字段
注:安裝環(huán)境不符合基本環(huán)境需要增加內(nèi)存:方法如下
######## Tomcat A ######################## [root@node1 ~]# cd /usr/local/tomcat/bin/ [root@node1 bin]# vim catalina.sh JAVA_OPTS="$JAVA_OPTS -Xmx256M" //237行 注釋:修改java虛擬機的內(nèi)存需要在啟動腳本里修改; -Xmx:定義java虛擬機使用最大內(nèi)存。其中M:指的是MB,不指定則為KB ######### Tomcat B 服務(wù)器也需要更改####### #########重新啟動服務(wù)#####################
更改完之后下一步:無法進入到安裝頁面會重新回到進入頁面;
原因:因為安裝時后端可能會出現(xiàn)負載均衡轉(zhuǎn)移所以導(dǎo)致無法進入安裝頁面,只能使用本地安裝
######切換至前端服務(wù)器######### [root@node ~]# yum -y install firefox [root@node ~]# firefox &
安裝商城應(yīng)用
安裝mysql服務(wù)器,并授權(quán)一個用戶用于登錄安裝服務(wù)
############ Tomcat A ############ [root@node1 shopxx]# yum -y install mysql-server [root@node1 shopxx]# service mysqld start [root@node1 shopxx]# mysql mysql> grant all on *.* to 'shopuser'@'192.168.%.%' identified by 'shoppass'; mysql> flush privileges; ############ Tomcat B ############ [root@node2 shopxx]# yum -y install mysql-server [root@node2 shopxx]# service mysqld start [root@node2 shopxx]# mysql mysql> grant all on *.* to 'shopuser'@'192.168.%.%' identified by 'shoppass'; mysql> flush privileges;
點擊完成安裝,重啟web服務(wù)刪除install目錄
[root@node1 shopxx]# mv install install.bak [root@node1 shopxx]# catalina.sh stop [root@node1 shopxx]# catalina.sh start
將Tomcat A 上shopxx安裝文件復(fù)制到Tomcat B上
[root@node1 webapps]# scp -rp shopxx/* 192.168.18.2:/usr/local/tomcat/webapps/shopxx/ [root@node2 shopxx]# catalina.sh stop [root@node2 shopxx]# catalina.sh start
下面就可以可以在商城系統(tǒng)注冊一個帳號,并登錄到系統(tǒng),購買一些衣服等,查看購物車中是否保存已加入到購物車中的衣服等等。
至此,tomcat基于session共享集群實現(xiàn)在線商城應(yīng)用部署就完美實現(xiàn)了,注意此商城不可做商業(yè)用途。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。