Apache+tomcat集群+php配置贴

今天因为一件事情,结果引发犹如被打鸡血的冲动,把前几天想完成的事情一下子都做完了,花了几个小时看了一下书,然后搜了不少的材料做好了两件事情:
1.搭建好了i帝国建站系统,典型的使用apache+php+mysql的配置环境
2.做好了tomcat集群配置应用
------我的心情
最近压力很大,不是找工作的事情,因为其他的一件比较重要的破事,终于完了。后面好好努力,明年再跳槽!保持发帖速度,两周发一个技术帖,必须要多学点东西才行了,什么都不知怎么跳槽!
-----为了不忘记这心血来潮的结晶,把心得贴出来,网上这种帖子多的是,我这里的基本都是自己实现了的,不过和网上的材料基本说的一个事情。

++++++++++++++++++++++++++++++++++++++++++++++++++++
1.准备软件下载并安装
Apache2.2    apache-tomcat-6.0.20.zip  php-5.3.6-Win32-VC9-x86.msi  mysql

2.apache,tomcat的关系,还有tomcat做集群是什么玩意

前几天面试的时候被问到这个问题,不知道,总是使用tomcat服务器,就知道apache基金会,但是不知道具体的关系。其实apache是一种web服务器(其他的windows下面的IIS也是另外一种web服务器),在tomcat做集群的时候是多个tomcat之间通过一个apache联系起来,apache服务器处理静态请求内容,tomcat处理动态内容,中间的桥梁是一个叫做mod_jk或者mod_proxy的本地代码模块(C或者C++写的)。涉及到的通信协议叫做AJP协议。

3.apache+php配置结合的要点

修改php配置文件php.ini:
搜索找到register_globals
register_globals = Off  ---> On

搜索找到short_open_tag
short_open_tag =  Off  ---> On

搜索找到extension_dir配置,找到下面的ext目录
extension_dir="D:\Program Files\PHP\ext"

搜索找到DocumentRoot 配置php工程的根目录地址
DocumentRoot "D:/apacheroot"//服务器根目录

//设置缓存地址
session.save_path="C:\WINDOWS.0\Temp"


修改apache配置文件httpd.conf

配置php工程的根目录,和之前的配置的一致
DocumentRoot "D:/apacheroot"

下面继续搜索这里也要配置:
#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "D:/apacheroot">

配置可能的首页文件,目录等,
<IfModule dir_module>
   DirectoryIndex index.html index.htm index.php
</IfModule>

继续配置httpd.conf,添加下面内容(位置任意):
LoadModule php5_module "D:/Program Files/PHP/php5apache2_2.dll"
AddType application/x-httpd-php .php
AddType application/x-httpd-php .htm

到此apache可以支持php了

4.php和mysql配置

找到先前重命名并编辑过的 php.ini,把“;extension=php_mysql.dll”前的“;”去掉,加载mysql模块

以上关于apache+php+mysql可以看这个帖子,图文并茂,很详细:http://tech.163.com/06/0206/11/299AMBLT0009159K_3.html

++++++++++++++++++++++++++++++++++++++++++++++++++
tomcat简单集群,我从这个帖子开始了解的:
http://www.iteye.com/topic/1017961

然后发现使用过程中本人基础比较差,有几个前提问题就没有处理好,于是又继续搜索加翻书,自己继续总结了一下。

1.如何实现一台机器上面跑多个tomcat

a.首先去掉环境变量里面的关于tomcat home的相关配置,没有的话就不用删了

b.复制tomcat6为三个,分别文件夹叫tomcat1,tomcat2,tomcat3

c.对每一个tomcat里面bin下面的startup.bat配置文件修改如下:
  if not "%CATALINA_HOME%" == "" goto gotHome
  set CATALINA_HOME="D:\负载均衡测试\tomcat1"  //修改这一行即可     
//使用当前目录下面的tomcat

d:修改各个tomcat的配置文件server.xml
  1.设置不同的ajp连接器端口(默认的ajp1.3协议监听8009端口,对于各个tomcat 运行在一个机器上面必须端口不一样才行)

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
tomcat1:8009(默认的不变)
tomcat2:8010
tomcat3:8011

2.设置不同的服务端口(避免启动端口冲突,编辑server.xml文件并设置每个tomcat的服务端口不一样!)

        <Server port="8006" shutdown="SHUTDOWN">
tomcat1:8005(默认的不变)
tomcat2:8006
tomcat3:8007

3.因为要做负载均衡,所有的请求应该通过apache服务器的worker负载均衡器,应该禁止默认的htp连接器直接访问tomcat,所以要注释相关配置(重要)
   <!--
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
               -->

  4.修改tomcat在catalina顶层容器里面的唯一标识,不得重复。

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
tomcat1:tomcat1
tomcat2:tomcat2
tomcat3:tomcat3

2.apache配置文件修改

1.首先下载关于tomcat和apache整合的插件
将下载到的Apache和Tomcat的整合插件mod_jk-1.2.31-httpd-2.2.3.so放入D:\WebServer\Apache\modules

2.修改tomcat配置文件httpd.conf:
在最后一行添加,表示引用一个新的配置文件,很简单“D:\Program Files\Apache Software Foundation\Apache2.2\”是按照tomcat的位置
include "D:\Program Files\Apache Software Foundation\Apache2.2\conf\mod_jk.conf"

3.然后添加这个叫做mod_jk.conf的新配置文件
内容如下:
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so
#下面又使用了一个新的配置属性文件,是最重要的定义各个tomcat与负载均衡器之间逻辑的文件
JkWorkersFile conf/workers.properties
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名
JkMount /*.jsp controller

4.然后到conf文件夹下面新建这个workers.properties
内容如下:
#server
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
#========tomcat3========
worker.tomcat3.port=8011
worker.tomcat3.host=localhost
worker.tomcat3.type=ajp13
worker.tomcat3.lbfactor = 1
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2,tomcat3
worker.controller.sticky_session=false
worker.controller.sticky_session_force=1
#worker.controller.sticky_session=1

3.开始进行测试,
将一个简单的应用放到3个tomcat下面的webapps目录下面
新建一个目录test,下面有一个test.jsp,内容如下
  <%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
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.print("<b>Session 列表</b>");
  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="index.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>
然后在test 新建WEB-INF目录,WEB-INF下新建web.xml,内容如下
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
       <display-name>TomcatDemo</display-name>
      <distributable/>
</web-app>
注意:在你的应用的web.xml加入  <distributable/> 即可

启动三个tomcat,启动apache,开始输入网页地址,注意不是http://localhost:8008/test/test.jsp(因为前面已经禁止了http端口,如果不禁止的话三个tomcat http端口不一样,就不可以进行刷新跳转到其他服务器了)而是统一的从http://localhost/test/test.jsp进入,通过刷新就可以看到不停在三个服务器间跳转。。

还有一个配置,在apache中之前只是配置了支持index.php,现在还要加上index.jsp,不过不影响前面的测试test.jsp
<IfModule dir_module>
   DirectoryIndex index.html index.htm index.php index.jsp
</IfModule>

+++++++++++++++++++++++++++++++++++++++++++++++
附件为全部的相关配置文件。。

猜你喜欢

转载自renjie120.iteye.com/blog/1044480
今日推荐