还是简单才最好 发表于 2015-7-31 10:23:42

整合Apache与Tomcat

整合Apache与Tomcat
  Apache(Web Server)负责处理HTML静态内容;
  Tomcat(App Server)负责处理动态内容;

  
  其实就是上述这样的一个架构,下面是原理
  1)      Apache装有一个模块,这个模块叫mod_jk
  2)      Apache通过80端口负责解析任何静态web内容
  3)      任何不能解析的内容,用表达式告诉mod_jk,让mod_jk派发给相关的app server去解释。
  通过上述的文字描述我们可以得知:
  1)我们需要在Apache中先装一个mod_jk
  2)我们需要在httpd.conf中写点表达式
  下面来实现。
  1)      把mod_jk-1.2.31-httpd-2.2.3.so手工copy进我们的Apache安装目录的modules目录下,这个文件的全名叫: mod_jk-1.2.31-httpd-2.2.3.so,大家可以从ftp上的“/JavaArchitect/mod_jk/”目录中获取,因为这个文件是我用C++在本地重新编译过的,网上下载的是src即源码,省去大家再去编译的时间了,而且一些其它网上下载的mod_jk.so是无法使用的。
  2)      用ultraedit打开httpd.conf文件,跑到文件最后面加入以下几行:
  LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so
  JKWorkersFile conf/workers.properties
  JkLogFile logs/mod_jk.log
  
  ServerAdmin localhost
  DocumentRoot d:/www/
  ServerName localhost
  DirectoryIndex index.html index.htm index.jsp index.action
  ErrorLog logs/shsc-error_log.txt
  CustomLog logs/shsc-access_log.txt common
  
  JkMount /*WEB-INF ajp13
  JkMount /*j_spring_security_check ajp13
  JkMount /*.action ajp13
  JkMount /servlet/* ajp13
  JkMount /*.jsp ajp13
  JkMount /*.do ajp13
  JkMount /*.action ajp13
  
  JkMount /*fckeditor/editor/filemanager/connectors/*.* ajp13
  JkMount /fckeditor/editor/filemanager/connectors/* ajp13
  
  关键的是这两句:
  LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so
  JKWorkersFile conf/workers.properties
  代表:
  ü   Apache载入一个额外的插件,用于连接tomcat。
  ü   连接时的配置参数描述位于Apache安装目录的/conf目录下的一个叫workers.properties文件中,mod_jk一般使用ajp13协议连接,使用的是tomcat的8009端口。
  3)      Worker.properties文件内容如下:
  workers.tomcat_home=d:/tomcat2
  workers.java_home=C:/jdk1.6.32
  ps=/
  worker.list=ajp13
  worker.ajp13.port=8009
  worker.ajp13.host=localhost
  worker.ajp13.type=ajp13
  4)      告诉我们的Apache,哪些是要交给tomcat来解析,除此之外都由Apache本身来解析:
  
  ServerAdmin localhost
  DocumentRoot d:/www/
  ServerName localhost
  DirectoryIndex index.html index.htm index.jsp index.action
  ErrorLog logs/shsc-error_log.txt
  CustomLog logs/shsc-access_log.txt common
  
  JkMount /*WEB-INF ajp13
  JkMount /*j_spring_security_check ajp13
  JkMount /*.action ajp13
  JkMount /servlet/* ajp13
  JkMount /*.jsp ajp13
  JkMount /*.do ajp13
  JkMount /*.action ajp13
  
  JkMount /*fckeditor/editor/filemanager/connectors/*.* ajp13
  JkMount /fckeditor/editor/filemanager/connectors/* ajp13
  
  大家看到没,所有的/servlet/*都由tomcat负责解析,所有的jsp, .do, .action都由tomcat解析。
  此处还有一个特殊的/fckeditor,这个是我们使用的一个博客编辑器,这个因为是servlet的,因此也需要交给tomcat铁析。
  5)      将/cbbs工程布署到tomcat的webapps目录下
  6)      将/cbbs同样手工copy一份到d:/www目录下
  7)      删除d:/www/cbbs/WEB-INF这个目录,嘿嘿,因为d:/www下的东西是由Apache解析的,所有的WEB-INF下的都是Java,我们只需要布署在tomcat下即可,是不是?
  8)      重启tomcat,重启Apache,在ie中直接输入: http://localhost/cbbs,使用sally/abcdefg登录,操作一下,一切成功
  Oh…yeah, tomcat+apache一步搞定。
页: [1]
查看完整版本: 整合Apache与Tomcat