1.安装apache,可以参照我的另一篇博客 Linux安装Apache,目前MAC OSX(Yosemite)是自带apache的,你可以通过命令sudo apachectl start|stop|restart等方法来启动停止或重启apache服务,启动完后只需在浏览器中输入http://localhost,如果出现it works,则表明启动成功。
2.安装mod_jk,这是apache的一个模块,专门负责连接tomcat, jboss等java容器,下载地址 http://tomcat.apache.org/download-connectors.cgi,MAC OS10.10 Yosemite上安装跟官网不太一样,参考 http://pablotips.blogspot.sg/2015/01/compiling-modjk-on-mac-os-x-1010.html
3.整合apache2和mod_jk,找到apache2的安装目录下的httpd.conf文件,不同操作系统目录不一样,自己去查,MAC在/etc/apache2/目录下,在文件最后加上
# Add and load the mod_jk module
Include /etc/apache2/other/mod_jk.conf
这个mod_jk.conf是我们接下来要创建的,它的作用是打开apache的mod_jk模块
4.切换到/etc/apache2/other/目录,创建mod_jk.conf文件,内容如下
#Load mod_jk module
LoadModule jk_module /usr/libexec/apache2/mod_jk.so
#Where to find workers.properties
JkWorkersFile /etc/apache2/other/workers.properties
#Where to put jk logs
JklogFile /etc/apache2/other/mod_jk.log
#Set the jk log level[debug/error/info]
JkLogLevel info
#Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
#JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
#JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# All requests go to controller by default
JkMount /* controller
# Serve html, jpg and gif using httpd
JkUnMount /*.html controller
JkUnMount /*.jpg controller
JkUnMount /*.gif controller
关于以上配置文件中各参数含义,请参考 http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html,请注意,以上配置中包含了worker.properties文件,这个是mod_jk模块连接tomcat用的,下面我们来创建该文件
5.在/etc/apach2/other/下面创建worker.properties,内容如下
worker.list=controller
#tomcat1
worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
#tomcat2
worker.tomcat2.port=8010
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2
worker.controller.sticky_session=false
worker.controller.sticky_session_force=1
关于以上配置文件各参数,请参考 http://tomcat.apache.org/connectors-doc/reference/workers.html,这里我只配置了两台tomcat,如果想用多台,在这边增加配置就好了。
#sticky_session这个属性需要特别注意,如果是true的话,你的所有request会一直发到同一台server上,如果这台server挂掉,request并不会转发到其它正常的server上,false时则会自动转到其它server上。
6.准备两份tomcat,我这里用的是版本是7.0.6,第一份tomcat端口保持不变,修改第二份server.xml中相应的端口号,保证跟第一份不重复,最简单的就是每个端口号加1,然后为每个tomcat指定jvmRoute,设置如下
分别为tomcat1,tomcat2,对应worker.properties中的配置,同时需要把Cluster节点的注释打开,至此,你在浏览器中输入http://localhost/项目名称,就可以访问你的项目了。
7.但上面的方案还没有实现session共享,为了实现session复制需要做两步,
(1)在项目的web.xml中
(2)将tomcat的server.xml文件中的Cluster节点修改为如下配置
以上配置来自官方文档,可直接复制到项目中,至此,配置完成