1. 准备材料:
1.1 一台安装了CentOS6.4的PC
1.2 Apache源码包httpd-2.4.6.tar.gz
(下载地址:http://apache.fayea.com/apache-mirror/httpd/)
1.3 jdk-6u45-linux-i586.bin
1.4 apache-tomcat-7.0.42.tar.gz
1.5 apr-1.4.8.tar.gz
1.6 apr-util-1.5.2.tar.gz
1.7 pcre-8.33.tar.gz
1.8 tomcat-connectors-1.2.37-src.tar.gz
2. 安装步骤:
2.1 检查CentOS的环境
2.1.1 root用户登录
2.1.2 java –version 查看是否系统默认安装了java环境
2.1.3 CentOS默认java环境安装的是1.5.0,如果发现为这个版本则需要需要卸载
先查看 rpm -qa | grepjava
显示如下信息:
java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
卸载:
rpm -e -nodepsjava-1.4.2-gcj-compat-1.4.2.0-40jpp.115
rpm -e -nodeps java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
还有一些其他的命令
rpm -qa | grepgcj
rpm -qa | grepjdk
如果出现找不到openjdksource的话,那么还可以这样卸载
yum -y remove java java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
yum -y remove java java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
2.1.4 make 查看是否安装了gcc
2.1.5 如果发现无法使用make命令则需要安装gcc
2.2 安装jdk
2.2.1 cd /usr/local/
2.2.2 mkdir java
2.2.3 将jdk-6u45-linux-i586.bin考到新建的java文件夹里面
2.2.4 chmod 744jdk-6u45-linux-i586.bin修改权限
2.2.5 ./jdk-6u45-linux-i586.bin执行安装
2.2.6 vi /etc/profile设置环境变量
2.2.7 增加:
#java enviroment variable
export JAVA_HOME=/usr/local/java/jdk1.6.0_45
exportCLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
保存退出
2.2.8 . /etc/profile是立即生效
2.2.9 java –version
可以看到:
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) Client VM (build 20.45-b01, mixed mode, sharing)
2.3 安装apache
2.3.1 进入下载好apache httpd-2.4.6.tar.gz的目录
2.3.2 chmod 744httpd-2.4.6.tar.gz修改权限
2.3.3 tar zxvf httpd-2.4.6.tar.gz解压缩
2.3.4 cdhttpd-2.4.6
2.3.5 ./configure -prefix=/usr/local/apache配置安装路径
2.3.6 报错:configure: error: APR notfound. Please read the documentation.
2.3.7 说明APR没有安装,需要单独安装APR
2.3.8 进入apr-1.4.8.tar.gz下载目录
2.3.9 chmod 744apr-1.4.8.tar.gz修改权限
2.3.10 tar zxvfapr-1.4.8.tar.gz解压缩
2.3.11 cdapr-1.4.8
2.3.12 ./configure -prefix=/usr/local/apr配置安装路径
2.3.13 make编译
2.3.14 makeinstall安装
2.3.15进入apr-util-1.5.2.tar.gz下载目录
2.3.16 chmod 744apr-util-1.5.2.tar.gz修改权限
2.3.17 tar zxvfapr-util-1.5.2.tar.gz解压缩
2.3.18 cdapr-util-1.5.2
2.3.19 ./configure-prefix=/usr/local/apr-util -with-apr=/usr/local/apr
2.3.20 make编译
2.3.21 makeinstall安装
2.3.22 进入pcre-8.33.tar.gz下载目录
2.3.23 chmod 744pcre-8.33.tar.gz修改权限
2.3.24 tar zxvf pcre-8.33.tar.gz解压缩
2.3.25 cdpcre-8.33
2.3.26 ./configure -prefix=/usr/local/pcre配置安装路径
2.3.27 make编译
2.3.28 makeinstall安装
2.3.29 重新进入apache解压缩的目录
2.3.30 ./configure -prefix=/usr/local/apache -enable-mods-shared=all -enable-proxy -enable-proxy-connect -enable-proxy-ftp -enable-proxy-http -enable-proxy-ajp -enable-proxy-balancer -enable-rewrite -with-apr=/usr/local/apr -with-apr-util=/usr/local/apr-util -with-pcre=/usr/local/pcre 配置apache安装路径
2.3.31 make编译
2.3.32 makeinstall安装
2.3.33 进入apache conf路径解开LoadModule slotmem_shm_module modules/mod_slotmem_shm.so配置
2.3.34 /usr/local/apache2/bin/apachectl start启动apache服务
2.3.35 访问localhost:80可以看到It works!说明apache已经安装并启动
2.3.36 添加防火墙80端口/sbin/iptables -I INPUT -p tcp -dport80 -j ACCEPT
2.3.37 保存配置/etc/rc.d/init.d/iptables save
2.4安装Apache Tomcat Connector(mod_jk)
2.4.1进入下载的tomcat-connectors-1.2.37-src.tar.gz目录
2.4.2 chmod 744tomcat-connectors-1.2.37-src.tar.gz修改权限
2.4.3 tar zxvftomcat-connectors-1.2.37-src.tar.gz解压缩
2.4.4 cdtomcat-connectors-1.2.37-src
2.4.5 cd native/
2.4.6 ./buildconf.sh
2.4.7 ./configure -with-apxs=/usr/local/apache/bin/apxs -with-java-home=$JAVA_HOME -with-java-platform=2 -enable-jni
2.4.8 make
makeinstall
2.4.9 安装完毕后,在apache/modules 目录下面生成mod_jk.so
2.5 安装tomcat
此处省略
2.6 在apache/conf目录下面增加两个文件
2.6.1 文件名称mod_jk.conf workers.properties
2.6.2 mod_jk.conf 文件内容:
LoadModule jk_modulemodules/mod_jk.so
JkWorkersFileconf/workers.properties
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名
JkMount /*.jsp controller
2.6.3 workers.properties文件内容:
#server
worker.list = controller
#========tomcat1========
worker.tomcat1.port=11009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1
#========tomcat2========
worker.tomcat2.port=12009
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balance_workers=tomcat1,tomcat2
worker.controller.sticky_session=false
worker.controller.sticky_session_force=1
#worker.controller.sticky_session=1
2.6.3 修改apache/conf目录下的httpd.conf
在最后增加:include"/usr/local/apache/conf/mod_jk.conf"
2.6.4 开启45564防火墙udp端口/sbin/iptables -I INPUT -p udp -dport 45564-j ACCEPT
2.6.5 保存配置/etc/rc.d/init.d/iptables save
2.6.6 启动tomcat1 tomcat2
查看日志,如果出现Replication member added:org.apache.catalina.tribes.membership.MemberImpl[tcp://{127, 0, 0, 1}:4001,{127, 0, 0, 1},4001, alive=1008, securePort=-1, UDP Port=-1, id={-78 100 -88 20 1 127 64 64 -102 71 -75 -84 -121 104 -10 88 }, payload={}, command={}, domain={}, ]则说明两个tomcat已经互相监听到了。
2.6.7 如果无法互相监听到:修改linux配置:]# /sbin/iptables -I INPUT -p udp -dport 45564 -j ACCEPT
打开端口
保存:# /etc/rc.d/init.d/iptables save
重启俩tomcat 即可
2.6.8 访问http://localhost/test/test2.jsp查看效果
test2.jsp:
<%@ page contentType="text/html; charset=GBK" %> <%@ page import="java.util.*" %> <html><head><title>Cluster App Test</title></head> <body> <img alt="aa" src="http://localhost/images/aa.jpg"/> Server Info: <% out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%> <% out.println("<br> ID " + session.getId()+"<br>"); // 如果有新的 Session 属性设置 String dataName = request.getParameter("dataName"); if (dataName != null && dataName.length() > 0) { String dataValue = request.getParameter("dataValue"); session.setAttribute(dataName, dataValue); } out.println("<b>Session 列表</b><br>"); System.out.println("============================"); Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = session.getAttribute(name).toString(); out.println( name + " = " + value+"<br>"); System.out.println( name + " = " + value); } %> <form action="test2.jsp" method="POST"> 名称:<input type=text size=20 name="dataName"> <br> 值:<input type=text size=20 name="dataValue"> <br> <input type=submit> </form> </body> </html>