起因
昨天房东找我说最近物价飞涨,要涨我房租,混不下去了,得要求老板涨工资。一大清早就去找老板,老板看了看我,让我发布先两个网站:一个前台网站 frontend,给用户用;一个后台管理网站 backend,给管理员用,两个网站要在同一台服务器上部署两个网站,但服务器上只有一个 tomcat,怎么办?
相同端口的多项目部署
还好我昨天了解了 server.xml 中各个节点的作用,正好派上用场,可以通过设置不同的 path 让其匹配到相应的 context,嗯,就这么搞,开个8001端口,修改 context 的 path,于是出现了下面的配置:
<Context path="/user" docBase="/frontend" /> <Context path="/manager" docBase="/backend" />
通过地址:http://localhost:8001/user 和 http://localhost:8001/manager 进入到对应的项目中去(同端口同域名)就可以正常访问了。屁颠屁颠的去找老板要工资,老板一看,重做,为啥,前台域名要 www.frontend.com,后台域名要 www.backend.com 才行,这也难不倒我,调整一下 Host 节点的配置就可以:
<Host name="www.backend.com" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="/backend" /> </Host> <Host name="www.frontend.com" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="/frontend" /> </Host>
然后分别通过地址:http://www.frontend.com:8001 和 http://www.backend.com:8001(同端口不同域名)来访问用户站点和管理员站点。 又屁颠屁颠的去找老板要求涨工资去了,老板不在,助理妹子说老板开会去了,不知道啥时候回来,妹子好像还没有男朋友,好可爱,刚刚对我笑了,是不是对我有意思,今晚一定要约她吃饭,嘿嘿。
不同端口的多项目部署
老板终于回来了,还要改(¥#@%……),理由是一个端口不够壕,要两个:一个8001给前台用,一个8002给后台用。为了工资,忍了,配置再改改。回顾之前看的 server.xml 中的内容,端口号是由 Connector 节点负责的,是不是搞两个 Connector 就可以,说干就干,修改配置如下(监听多端口):
<Connector port="8001" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8002" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
然后分别通过地址:http://www.frontend.com:8001 和 http://www.backend.com:8002 来访问用户站点和管理员站点,可行,但 http://www.frontend.com:8002 和 http://www.backend.com:8001 居然也是正常的,还好我自测了一下,不然肯定被老板找理由拖欠工资,再次调整:
<!--www.frontend.com 的配置--> <Service name="Catalina"> <Connector port="8001" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8013" /> <Connector port="8109" protocol="AJP/1.3" redirectPort="8013" /> <Engine name="Catalina" defaultHost="localhost"> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> </Host> <Host name="www.frontend.com" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="/frontend" /> </Host> </Engine> </Service> <!--www.backend.com 的配置--> <Service name="Catalina"> <Connector port="8002" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8014" /> <Connector port="8110" protocol="AJP/1.3" redirectPort="8014" /> <Engine name="Catalina" defaultHost="localhost"> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> </Host> <Host name="www.backend.com" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="/backend" /> </Host> </Engine> </Service>
通过地址:http://www.frontend.com:8001 和 http://www.backend.com:8002 来访问用户站点和管理员站点,可行,但 http://www.frontend.com:8002 和 http://www.backend.com:8001 不能正常访问,搞定,赶紧去找老板,顺便约助理妹子晚上一起吃麻辣烫(升职加薪,赢取白富美,走向人生巅峰,嘿嘿),忐忑的敲开了老板的门。老板看见我道:“正好要找你,为了方便管理,还是弄两台服务器吧,你今天弄完,涨工资的事儿,明天再说”。看了看表,还有几分钟就下班了,助理妹子瞥了我一眼(眼神很怜悯有木有),我张了张嘴,吃饭的事儿一直没说出口,算了,改天再约吧,今晚要加班了,不甘心(我就是一码农啊)……