版本:请注意如果整合时一定要看,apache和tomcat的官方文档,版本不一样,整合细节也不太一样
Apache: 2.2.21
Tomcat: 6.0.33
mod_jk: 1.2.32
JDK: 1.6
主要步骤:
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里面放着所有的后台程序
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直接处理的。
一、安装Apache
1.安装
2.编辑/etc/profile文件
把Apache的bin目录加入到PATH变量中去,在文件中加入以下的行,这样就可以直接使用apachectl start/stop/restart
3.建立虚拟主机放的文档根目录
4.客户端修改hosts文件,因为没有DNS解析,测试就用Hosts文件来解析,加入以下内容。
二、安装JDK
1.安装
在tomcat运行环境下,JDK是必不可少的软件,因为tomcat只是一个Servlet/JSP容器,底层的操作都需要JDK来完成。
2.设置环境变量 vi /etc/profile
在文件的最后面加入以下内容
3.测试JAVA是否安装成功
三、安装tomcat
从客户端访问正常
在/usr/local/tomcat-6.0.33/bin 修改catalina.sh,在文件的最下面加入以下内容:
四、安装JK模块
1.安装,如果是源码安装,会自带apxs工具,如果采用rpm包安装的话,不一定带这个工具,还需要重新安装
2.修改apache主配置文件,使其在启动时加载可以加载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
4.编辑Apache主配置文件/usr/local/apache2/conf/httpd.conf ,加入以下内容:
参照: http://tomcat.apache.org/connectors-doc/reference/apache.html
5.编辑extra/httpd-vhosts.conf 这个虚拟主机配置文件,配置如下:
6、Tomcat的配置(server.xml的配置)
server.xml是tomcat的核心配置文件,找到默认的<Host>标签
把appBase指向 /web3,就是Apache虚拟主机(www.apache.com)指向的目录,如果使用默认的ROOT的目录的话,只需要在/web3目录下新建一个ROOT目录,然后把你的前台页面放到这里面就可以访问到,因为tomcat会默认到ROOT下面找WEB-INF下的web.xml文件然后找到index.html这个,这个index.html不一定存在,这个就是tomcat处理的问题
7.准备测试网站,放到/web3目录下
8.启动apache和tomcat,测试访问
访问前台页面
访问后台页面,要加上/admin,因为这里面放着后台的程序。
可以访问到,正常
那怎么知道,那些js/css/images/swf/vedio文件夹里面的内容是apache解析的
可以这样,像下图输入一个不存在的css文件,然后看报错信息,
如果是tomcat 解析的话,错误页面会有tomcat的版本信息,像下图
jsp页面是tomcat来解析的,看下图,随便输入一个不存在的jsp页面,肯定会报错了
看到报错就知道这是tomcat报的错。这样就知道jsp页面是由tomcat来解析的。
|