【Java精品源码栏目提醒】:网学会员Java精品源码为您提供Linux下Apache与Tomcat整合构建JavaJSP_运行平台 - 其它资料参考,解决您在Linux下Apache与Tomcat整合构建JavaJSP_运行平台 - 其它资料学习中工作中的难题,参考学习。
Linux 下 Apache 与 Tomcat 整合构建
Java/JSP 运行平台实验环境: 1. SUSE -11-Linux-SP2 2. Apache 2.0.59 3. Apache-Tomcat- 5.5.12 4. JDK-6u7-linux-i586.bin 5. Apache 与 Tomcat 连接器----Jakarta-tomcat-connectors-currents-src 本次配置是在 SUSE-11-linux 环境下配置,虽然 SUSE 11 下开启 WEB 服务器十分方便,但是此配置不使用 SUSE 默认的 Apache 与 Tomcat 服务,主要面对 Linux 系统,其他类型的linux 系统同样可以安装成功! 配置意义:Tomcat 与 Apache 分工实现静/动态资源响应请求的分离处理一. Apache 与 Tomcat 整合的必要性 Apache 是 最 流 行 的 web 服务 器 , 它 开放 源 代 码 ,支 持 跨 平 台 的应 用 ( 几 乎全 部 :Linux/Unix/Windows)其中以 Linux 平台支持最为完美。
Apache 的优点: 功能强大,apache 自带了很多功能模块,可根据需求编译自己需要的模块 配置简单,apache 的配置文件非常简单,通过简单的配置即可实现强大的功能 速度快,apache 在处理静态页面文件方面效率很高,支持大并发和高负荷访问请求 性能稳定,apache 在高负荷访问请求下性能表现卓越,执行效率非常高 Apache 的缺点: 只支持静态网页,对于 JSPPHP 等动态网页不支持 Apache 以进程为基础结构,比线程占用更多的系统资源,因此不适合多处理器环境 Tomcat 是 Sun 和 Apache 合作出来的 JSPServer Tomcat 的优点: 支持 Servlet 和 JSP,可以高效的处理动态网页 跨平台,Tomcat 是
JAVA 程序,可以运行在任何 JDK 环境下,与操作系统平台无关 Tomcat 的缺点: 静态网页处理效率低,远不如 apache 的静态网页处理功能 可配置性差,Tomcat 不像 Apache 一样配置简单,稳定,健壮 综述可知,Apache 与 Tomcat 互相弥补缺陷,整合后可以实现: 客户端请求静态页面时,Apache 服务器响应请求 客户端请求动态页面时,Tomcat 服务器响应请求 通过 Apache 信息过滤,实现网站动态,静态页面分离,保证应用的可扩展行和安全性二. Apache 与 Tomcat 连接器 为了使 Apache 和 Tomcat 协调工作,需要使用连接器将他们联系起来,这就是所谓的Connector. Apache 是模块化的 Web 服务器,这意味着核心中只包含实现最基本功能的模块。
扩展功能可以模块动态加载来实现。
目前已经出现的 Connector:mod_jk、mod_jk2、 proxy-ajp。
http-proxy、其中前两个连接器适用于 Apache 2.2 之前的版本,后两个则使用与 Apache 2.2 之后的版本。
建议 Apache 1.X、Apache 2.X 版本使用 mod_jk 作为连接器(本次试验采用 mod_jk), 因此 Apache 2.2 之后的版本建议采用 proxy-ajp。
proxy-ajp 经过官方测试效率比 http-proxy 高,三. 安装 Apache Apache 官方地址:http://httpd.apache.org/我们以
源码方式进行安装,版本为 2.0.59。
具体的安装过程:SUSE11-VM: wgethttp://archive.apache.org/dist/httpd/httpd-2.0.59.tar.gzSUSE11-VM: tar–zvxf httpd-2.0.59.tar.gzSUSE11-VM: cd httpd-2.0.59SUSE11-VM: ./configure –prefix/usr/local/apache2 指定安装路径 --enable-modulesmost 大部分模块静态编译二进制文件中 --enable-mods-sharedall 动态加载所有模块, 去掉 shared,表示静态加载 --enable-so SUSE11-VM: makeSUSE11-VM: make install四. 安装 Tomcat Tomcat 官方网址:http://jakarta.apache.org/,我们以二进制方式安装,版本为 5.5.12具体的安装过程:SUSE11-VM: cd /usr/localSUSE11-VM:localwgetftp://83.149.151.212/pub/FreeBSD/distfiles/apache-tomcat-5.5.12.tar.gzSUSE11-VM:local tar–zvxfapache-tomcat-5.5.12.tar.gzSUSE11-VM: local mv apache-tomcat-5.5.12 tomcat5 重命名文件夹,名字太长-_-!五. 安装 JDK 运行 Tomcat,JDK 是必不可少的软件,因为 Tomcat 只是一个 Servlet/JSP 容器,底层的操作完全依赖于 JDK 完成。
JDK 下载网址 http://download.oracle.com/otn/
java/jdk/6u7/jdk-6u7-linux-i586.bin 无法使用 wget 从 Oracle 官网下载 JDK,因此只能手动下载 jdk-6u7-linux-i586.bin 并放置到/usr/local 文件夹下Oracle 下载必须注册 具体的安装过程:SUSE11-VM: cd /usr/localSUSE11-VM:localchmod 755 jdk-6u7-linux-i586.binSUSE11-VM:local ./ jdk-6u7-linux-i586.bin 执行的过程会有提示,输入‘yes’,程序自动安装。
安装完毕后会在/usr/local/下产生一个 jdk1.6.0_07 文件夹,这个就是 JDK 的程序目录 验证 JDK 环境是否成功:SUSE11-VM:local /jdk1.6.0_07/bin/
java –version 如果此时执行
java 命令时会出现:
java:command not found 的提示 原因是
JAVA 的环境变量未指定,解决方法如下:1. 配置 Tomcat 启动脚本 vi /usr/local/tomcat5/bin/catalina.sh2. 在 catalina.sh 文件添加如下变量:
JAVA_HOME/usr/local/jdk1.0.6_07 export
JAVA_HOME3. 配置系统全局环境变量/etc/profile,指定 JDK 的运行路径 vi /etc/profile添加如下变量:
JAVA_HOME/usr/local/jdk1.6.0_07PATHPATH:
JAVA_HOME/bin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/binCLASSPATH. :
JAVA_HOME/lib/tools.jar:
JAVA_HOME/lib/dt.jarexport
JAVA_HOME PATH CLASSPATH4. 重新应用系统变量:source /etc/profile5. 再次查看:/usr/local/jdk1.0.6_07/bin/
java –version。
出现如下
java 变量设置成功!六. 安装 JK 连接器模块 Connector 下载地址:http://archive.apache.org/dist/jakarta/tomcat-connectors 具体安装过程如下:SUSE11-VM:cd /usr/localSUSE11-VM:localwgethttp://archive.apache.org/dist/jakarta/tomcat-connectors/jk/source/jakarta-tomcat-connectors-current-src.tar.gzSUSE11-VM:local tar–zvxfjakarta-tomcat-connectors-current-src.tar.gzSUSE11-VM: local cd jakarta-tomcat-connectors-1.2.14.1-src/jk/nativeSUSE11-VM:native chmod 755 buildconf.shSUSE11-VM: native./buildconf.shSUSE11-VM: native./configure --with-apxs/usr/local/apache2/bin/apxsSUSE11-VM: nativemakeSUSE11-VM: nativemake install 安装完毕后我们需要确定是否自动生成了 mod_jk.so 文件,这就是我们所需要的连接器!默认情况下自动安装目录为/usr/local/apache2/modules 目录下,如果没有需要手动从 native文件夹将该文件复制到此文件夹下。
至此基本模块都已经安装完毕,下面开始利用连接器整合 Apache 与 Tomcat!!七. Apache 与 Tomcat 整合配置 整合的过程 Web 服务器的 IP 地址(本机 IP):172.18.4.68,测试的 JSP 程序放置在/webdata/www 目录下。
此目录默认不存在,需手动创建。
整合的过程创建 apache 的虚拟主机,tomcat 关联该虚拟主机,并设置不同服务器的请求响应文件类型。
1. 创建服务器路径 SUSE11-VM:mkdir–p /webdata/www 2. Apache 目录文件 每个目录的作用: bin: apache 二进制程序及服务程序目录 build: 库文件目录 cgi-bin: 默认的 CGI 目录 conf: 主配置文件目录 error: 默认的错误应答文件目录 htdocs: 默认 web 应用根目录 icons: apache 图表文件目录 include: 包含头文件的目录 logs: 日志文件目录 man: Man 帮助文件目录 manual: Apache 使用文件目录 modules: 动态加载模块目录,上面成功的 JK 模块就放在这个目录下 3. 配置 Apache Apache 的配置文件为:httpd.conf它由 3 部分组成,分别是全局变量,配置主服务器,配置虚拟主机。
vi /usr/local/apache2/conf/httpd.conf需要修改的地方如下: 加载 mod_jk 模块,手动添加:loadModulejk_module modules/mod_jk.so 配置主服务器 指定执行 httpd 的用户和组,默认是 nobody 用户启动 apache,组也设置为 nobody 设置管理员的邮件地址和系统的主机名,这里设定的主机名一定要能找到对应的 IP 地址,主机名和 IP 的对应关系可以在/etc/hosts 设置 添加默认首页的类型:index.jsp,apache 会按照先后顺序依次打开不同后缀的 index. 重要!JK 连接器属性设定。
任意位置即可,添加 Tomcat Worker 实例以及日志文件目录,等级和格式 JkWorkersFile Tomcat workers 配置文件(默认无此文件,下面手动添加) JkMountFile Tomcat 指定网页过滤规则(默认无此文件,下面手动添加) JkLogFile 指定 JK 模块的日志输出文件 JkLogLevel 指定日志输出级别 JkLogStampformat 指定日志输出格式 虚拟主机的设定NameVirtualHost :80 开启虚拟主机,开启虚拟主机后 DocumentRoot 指定的配置将失效,以虚拟主机指定的文件目录为主。
ServerAdmin wulsxis.com 虚拟主机的管理员邮件地址DocumentRoot /webdata/www 指定虚拟主机站点文件路径ServerName 172.18.4.68 指定虚拟主机的站点域名ErrorLog 指定虚拟主机站点错误日志输出文件CustomLog 指定虚拟主机站点访问日志输出文件JkMountFile conf/uriworkermap.properties 重要!!指定虚拟主机的 URL 映射文件 4. Tomcat 目录文件 每个目录作用: bin 存放不同平台启动 Tomcat 的脚本文件 conf 存放 Tomcat 的配置文件,其中 server.xml 和 web.xml 最为重要 logs Tomcat 日志文件 server 包含 libwebapps。
lib 存放 Tomcat 的 JAR 文件,webapps 存放 WEB 应用 tmp 临时文件目录 work 存放 JSP 编译后产生的 class 文件 common 存放服务器可访问的 JAR 文件 shared 只存放可被 web 应用访问的 JAR 文件 webapps 服务器的主发布目录,默认存放所有 web 应用文件5. Server.xml 文件配置 server.xml 是 Tomcat 的核心配置文件,为了支持与 Apache 的整合,在 Tomcat 中必须配置相应的虚拟主机。
它是一个由标签组成的文本文件。
首先找到 1.标签 修改如下: 注意!Tomcat 的虚拟主机一定要和 Apache 配置的虚拟主机指向同一个目录,这里统一指向/webdata/www,所以接下来要在此目录下放置 JSP 程序。
2. Tomcat 对 HTTP 协议的访问设定,Tomcat 默认的监听端口是 8080,在与 Apache 的整合中是不需要开启 Tomcat 的 HTTP 监听,所以建议必须注释掉这个标签。
同样注释掉 8443 端口的设置 也是 Tomcat 必须支持的 AJP13 协议。
8009 端口是 AJP13 协议的默认监听端口, 此端口必须开启。
JK 模块就是通过 AJP 协议实现 Apache 和 Tomcat 协调工作的。
6. 创建 Tomcat workers Tomcat workers 是一个服务与 WEB 服务器、等待执行 servlet/JSP 的 Tomcat 实例。
它包含 3 个配置文件:workers.properties、uriworkermap.properties、mod_jk.log。
它们分别是 Tomcat workers 的配置文件,URL 映射文件,JK 模块日志输出文件。
其中mod_jk.log 会在 Apache 启动时自动创建。
其他需要手动创建。
1.手动创建 workers.properties 文件如下【路径:/usr/local/apache2/conf】 2.手动创建的 uriworkermap.properties 文件如下【路径:/usr/local/apache2/conf】 3.自动生成 mod_jk.log 文件如下。
每次开启/重启 apache 服务时如果没有此文件,系统会自动生成该文件,不可手动添加。
如果手动添加后系统不会自动生成同名文件,将会导致日志文件记录错误。
八. 测试 Tomcat 与 Apache 整合SUSE11-VM:cp–r /usr/local/tomcat5/webapps/ROOT/ /webdata/wwwSUSE11-VM:/usr/local/tomcat5/bin/startup.sh 开启 Tomcat,重启后需要手动开启SUSE11-VM:/usr/local/apache2/bin/apachectl start 开启 Apache,重启后需要手动开启浏览器输入:http://172.18.4.68因指定的虚拟机为指定 IP 类型,所以即使本机浏览器输入:localhost,仍然无法打开页面任意建立 test.html 放在/webdata/www 目录下并访问:http://172.18.4.68/test.html 下面测试 Tomcat 与 Apache 是否实现了静.动态资源的分离处理1.URL 过滤规则文件/tomcat1 表示所有的请求都由 Tomcat1 处理!/.jpgtomcat1 以 jpg 结尾的文件不通过 JK 处理,也就是不通过 Tomcat 处理。
这个设置说明: Tomcat 不处理图片,JS 文件,CSS 文件,静态 HTML 文件请求。
其他类型的文件由 Tomcat 处理,例如txt,exe 等验证思路: 请求不同类型的文件,但是该文件不存在,观察出错信息是由哪个服务器反馈!第一:首先请求不存在的 HTML 文件,可以看到 Apache 服务器响应!第二:请求不存在的 txt 文件,可以看到是 Tomcat 服务器做出相应响应!