快速业务通道

Linux Apache Tomcat 整合(JK方式)

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-03-23

Linux Apache Tomcat 整合(JK方式)
版本:

请注意如果整合时一定要看,apache和tomcat的官方文档,版本不一样,整合细节也不太一样 Apache: 2.2.21 Tomcat: 6.0.33 mod_jk: 1.2.32 JDK: 1.6
apache-tomcat-6.0.33.tar.gz wget http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-6/v6.0.33/bin/apache-tomcat-6.0.33.tar.gz
httpd-2.2.21.tar.gz wget http://labs.renren.com/apache-mirror//httpd/httpd-2.2.21.tar.gz tomcat-connectors-1.2.32-src.tar.gz (mod_JK 模块) wget http://mirror.bjtu.edu.cn/apache//tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.32-src.tar.gz
JDK(jdk-6u26-linux-i586) wget http://oracleotn.rd.llnwd.net/otn-pub/java/jdk/6u26-b03/jdk-6u26-linux-i586-rpm.bin
主要步骤: 1.安装mod_jk模块 2.编辑httpd.conf,使用LoadModule 把模块加载进去 3.编辑httpd.conf,把httpd-vhosts.conf 加载进来,用来配置虚拟主机 4.编辑httpd.conf,加入mod_jk模块的配置文件 5.编辑httpd-vhosts.conf配置文件,配置虚拟主机,并加入那些让tomcat处理,那些让apache来处理的JkMount/JkUnMount,详apache tomcat整合配置那一节 6.在/usr/local/apache2/conf下创建tomcat的woker文件:worker.properties 7.编辑worker.properties,加入针对tomcat的配置文件(worker.list),详见apache tomcat整合配置那一节 8.编辑tomcat的server.xml文件,修改<HOST>标签里的内容,指定appBase的路径 9.创建网站的目录/web3,在/web3下创建ROOT目录,用来放置网站的前台页面,创建admin,放置网站的后台页面 10.连接mysql数据库 11.启动Apache 、tomcat,并测试.
对Apache tomcat整合的一点理解: 1.网站一般是分为前台和后台,前台页面放到一个目录里面比如:web,后台程序放到一个目录下比如:admin
2.Apache虚拟主机的文档根目录指向tomcat的项目目录(/web3),这个目录下有2个目录:ROOT、admin ROOT下面放着网站的所有前台页面,admin里面放着所有的后台程序
Empire CMS,phome.net
3.apache tomcat 是怎么工作的
假设有一个虚拟主机www.apache.com对应的文档根目录就是以上的/web3目录,当我们在浏览器中输入www.apache.com时,通过DNS服务器或者hosts文件解析到对应的IP地址192.168.100.250,我们在虚拟主机配置中指定 JkMount / tomcat1
JkMount /* tomcat1
JkMount /index.html tomcat1
根和根下面所有的文件都是由tomcat1这个tomcat的worder来处理,也就是让tomcat来处理,当然还有根下面的index.html.这里的/是指/web3 这个时候,apache就会把请求交给tomcat来处理,tomcat一旦接手之后,它就开始在appBase指定目录(/web3)下寻找ROOT目录(默认是ROOT目录,可以修改),然后到ROOT目录下寻找WEB-INF目录,再到WEB-INF目录中找到web.xml文件,读取web.xml中的<welcome-file-list>中指定的index.html或者index.htm(相当于apache配置文件中指定DirectoryIndex index.html index.htm) <welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list> 然后通过这个index.html找到处理这个index.html的servlet程序,找到之后就去执行这个程序,这个程序会执行ROOT找到要显示页面,比如index.jsp,当然这个程序里已经提前指定好了tomcat会去找到那个网页去执行,执行之后就成为html静态代码,再把它返回给apache,然后apache再返回给客户端浏览器,客户端浏览器执行这些代码之后,就显示出来.这当中还有就是客户端浏览器执行的过程,浏览器执行静态代码时,碰到什么标签,才去取什么内容,比如:遇到aa.css样式表,然后才去服务器端去取,而不是服务器端一次性都把所有的静态内容都发给浏览器. 如果浏览器请求的是图片、视频、flash,css,js这些静态内容时,是由Apache直接处理的.
Empire CMS,phome.net

一、安装Apache
1.安装
[root@router ~]# tar xvfz httpd-2.2.21.tar.gz [root@router ~]# cd httpd-2.2.21
[root@router httpd-2.2.21]# ./configure --prefix=/usr/local/apache2 --enable-modules=most --enable-mods-shared=all --enable-so --with-included-apr 配置时根据需要、增加选项来启用某个功能. [root@router httpd-2.2.21]#make && make install
2.编辑/etc/profile文件
把Apache的bin目录加入到PATH变量中去,在文件中加入以下的行,这样就可以直接使用apachectl start/stop/restart
export PATH=$PATH:/usr/local/apache2/bin [root@router httpd-2.2.21]# source /etc/profile //使其生效 [root@router httpd-2.2.21]# apachectl -l 查看Apache静态编译到内核的模块
Compiled in modules:
core.c
prefork.c //默认是prefork工作方式,如果在编译时不指定的话
http_core.c
mod_so.c //如果以后动态加载模块,那这个模块静态编译到内核中
3.建立虚拟主机放的文档根目录
[root@router ~]# mkdir /web3

4.客户端修改hosts文件,没有DNS解析,测试就用Hosts文件来解析,加入以下内容.
192.168.100.250 www.apache.com
二、安装JDK
1.安装
在tomcat运行环境下,JDK是必不可少的软件,tomcat只是一个Servlet/JSP容器,底层的操作都需要JDK来完成. [root@router ~]# chmod x jdk-6u26-linux-i586-rpm.bin //增加执行权限 [root@router ~]# cp jdk-6u26-linux-i586-rpm.bin /usr/local/
[root@router ~]# cd /usr/local/ [root@router local]# ./jdk-6u26-linux-i586-rpm.bin 看到Press Enter to continue..... 这字样,按回车即可完成安装
Empire CMS,phome.net
[root@router local]# ln -s /usr/java/jdk1.6.0_26/ /usr/local/java //做一个软连接到/usr/local/java下
2.设置环境变量 vi /etc/profile
在文件的面加入以下内容 JAVA_HOME=/usr/local/java
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH export PATH JAVA_HOME CLASSPATH 保存退出. [root@server1 lib]# source /etc/profile //使配置即时生效
3.测试JAVA是否安装成功
[root@server1 lib]# java -version
java version "1.6.0_26" //是我们安装的版本,安装成功
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing) 三、安装tomcat
[root@router local]# cp apache-tomcat-7.0.22.tar.gz /usr/local/ [root@router local]# tar xvfz apache-tomcat-7.0.22.tar.gz [root@router local]# mv apache-tomcat-6.0.33 tomcat-6.0.33 //重命名一下,方便记忆与管理 这样tomcat就安装完成了. 启动tomcat [root@router tomcat-6.0.33]# bin/startup.sh 从客户端访问正常

在/usr/local/tomcat-6.0.33/bin 修改catalina.sh,在文件的最下面加入以下内容: JAVA_HOME=/usr/local/java

四、安装JK模块
1.安装,如果是源码安装,会自带apxs工具,如果采用rpm包安装的话,不一定带这个工具,还需要重新安装
[root@router ~]# tar xvrz tomcat-connectors-1.2.32-src.tar.gz [root@router ~]# cd tomcat-connectors-1.2.32-src [root@router tomcat-connectors-1.2.32-src]# cd native/ [root@router native]# ./buildconf.sh [root@router native]# ./configure --with-apxs=/usr/local/apache2/bin/apxs #这里指定的是apache安装目录中apxs的位置,这个apxs方便我们动态加载模块
[root@router ~]# ll /usr/local/apache2/modules/mod_jk.so #已经帮我们复制到apache的modules目录中去了.
-rwxr-xr-x 1 root root 878139 11-01 14:06 /usr/local/apache2/modules/mod_jk.so
2.修改apache主配置文件,使其在启动时加载可以加载JK模块,在模块加载的位置添加以下行:
LoadModule jk_module modules/mod_jk.so

[root@router htdocs]# httpd -D DUMP_MODULES 可以查看jk模块是否被加载了
五、apache与tomcat整合配置
1、Tomcat workers
Tomcat worker是一个服务于web server、等待执行servlet/JSP的Tomcat实例,创建tomcat workers需要增加3个配置文件,分别是Tomcat workers配置文件workers.properties,URL映射文件uriworkermap.properties和JK模块日志输出文件mod_jk.log,mod_jk.log文件会在apache启动时自动创建,这里只需创建前两个文件即可. 定义Tomcat workers的方法是在apache的conf目录下编写一个名为“workers.properties”的属性文件,使其作为apache的插件来发挥作用,下面讲述workers.properties配置说明. worker.list用来定义Workers列表,当apache启动时,workers.properties作为插件将初始化出现在worker.list列表中的workers. 定义worker类型的格式: worker.worker名字.type= 例如: 定义一个名为“tomcat12”的worker,其使用ajp12协议与tomcat 进程通讯:   worker.tomcat12.type=ajp12 定义一个名为“tomcat13”的worker,其使用ajp13协议与tomcat 进程通讯:   worker.remote.type=ajp13   定义一个名为“tomcatjni”的worker,其使用JNI的方式与tomcat 进程通讯   worker.tomcatjni.type=jni   定义一个名为“tomcatloadbalancer”的worker,作为对多个tomcat进程的负载平衡使用:   worker.tomcatloadbalancer.type=lb 这里只说明ajp13协议支持的几个常用属性:  Host:监听ajp13请求的的tomcat worker主机地址  Port:tomcat worker主机监听的端口.默认情况下tomcat在ajp13协议中使用的端口为8009.  lbfactor:当tomcat用作负载均衡时,此属性被使用,表示此tomcat worker节点的负载均衡权值.
2、创建workers.properties文件
参照: http://tomcat.apache.org/connectors-doc/reference/workers.html
[root@router ~]# vim /usr/local/apache2/conf/workers.properties 内容如下: worker.list=tomcat1 worker.tomcat1.port=8009 worker.tomcat1.host=localhost worker.tomcat1.type=ajp13

4.编辑Apache主配置文件/usr/local/apache2/conf/httpd.conf ,加入以下内容: 参照:http://tomcat.apache.org/connectors-doc/reference/apache.html
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel debug

# Virtual hosts
Include conf/extra/httpd-vhosts.conf #把这行的注释去掉,使用这个配置文件来配置虚拟主机
5.编辑extra/httpd-vhosts.conf 这个虚拟主机配置文件,配置如下:
<VirtualHost *:80>
DocumentRoot "/web3" //Apache文档根目录
ErrorLog "logs/www-error.log"
CustomLog "logs/www-access.log" common
ServerName www.apache.com
DirectoryIndex index.html
<Directory "/web3/"> //一定要有这段,控制目录访问的权限,如果没有这段是没办法访问的,默认是禁止访问
Options FollowSymLinks MultiViews
AllowOverride None
Order deny,allow
Allow from all
</Directory>

#前台页面配置 #这里面的/ 是代表 /web3
JkMount / tomcat1
JkMount /* tomcat1
JkMount /index.html tomcat1

#把这存放静态页面的目录,起别名(访问方便起见,也是为了安全)指向实际的位置
Alias /css /web3/ROOT/css
Alias /image /web3/ROOT/image
Alias /images /web3/ROOT/images
Alias /js /web3/ROOT/js
Alias /swf /web3/ROOT/swf
Alias /video /web3/ROOT/video

#所有的css、images、js、video等这些静态文件不让tomcat1来处理,Apache来处理这些文件 JkUnMount /css/* tomcat1
JkUnMount /image/* tomcat1
JkUnMount /images/* tomcat1
JkUnMount /js/* tomcat1
JkUnMount /swf/* tomcat1
JkUnMount /video/* tomcat1
#后台页面配置
JkMount /admin tomcat1
JkMount /admin/* tomcat1
JkMount /admin/index.html tomcat1

Alias /admin/css /web3/admin/css
Alias /admin/images /web3/admin/images
Alias /admin/js /web3/admin/js

#所有的css、images、js、video等这些静态文件不让tomcat1来处理,Apache来处理这些文件
JkUnMount /admin/css/* tomcat1
JkUnMount /admin/images/* tomcat1
JkUnMount /admin/js/* tomcat1
</VirtualHost>
6、Tomcat的配置(server.xml的配置) server.xml是tomcat的核心配置文件,找到默认的<Host>标签 <Host name="localhost" appBase="/web3"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
把appBase指向 /web3,就是Apache虚拟主机(www.apache.com)指向的目录,如果使用默认的ROOT的目录的话,只需要在/web3目录下新建一个ROOT目录,然后把你的前台页面放到这里面就可以访问到,tomcat会默认到ROOT下面找WEB-INF下的web.xml文件然后找到index.html这个,这个index.html不一定存在,这个就是tomcat处理的问题
7.准备测试网站,放到/web3目录下 [root@router web3]# ls
admin ROOT

[root@router web3]# ls ROOT/
404.jsp favicon.ico help _leftheadforuser.jsp _menu.yingda.jsp recommend _userfoot.jsp
500.jsp fckeditor image literature page.jsp reg_next.jsp validemail.jsp
about _footer.jsp images login_register.jsp paper search.jsp video
bulletin _header.jsp index.jsp loginstatus.jsp product soft WEB-INF
css _header.yingda.jsp index.yingda.jsp magazine publisher swf xml.data.jsp

entry _headforuser.jsp js _menu.jsp reader user
[root@router web3]# ls ROOT/WEB-INF/
classes jboss-web.xml lib tld web.xml
8.启动apache和tomcat,测试访问
[root@router ~]# /usr/local/apache2/bin/apachectl start [root@router ~]# /usr/local/tomcat-6.0.33/bin/startup.sh 访问前台页面

Empire CMS,phome.net


访问后台页面,要加上/admin,这里面放着后台的程序. 可以访问到,正常


那怎么知道,那些js/css/images/swf/vedio文件夹里面的内容是apache解析的 可以这样,像下图输入一个不存在的css文件,然后看报错信息,


如果是tomcat 解析的话,错误页面会有tomcat的版本信息,像下图


jsp页面是tomcat来解析的,看下图,随便输入一个不存在的jsp页面,肯定会报错了 看到报错就知道这是tomcat报的错.这样就知道jsp页面是由tomcat来解析的.

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号