[设为首页]
中国-东莞·教育导航
  主页 | 教育资讯 | 推荐课程 | 公开课 | 考试 | 资格认证 | 外语 | 硕士考研 | 自考成考 | IT培训 | 金融财会 | 名校 | 学习资料
  导航:首页 - Linux下Apache2+Tomcat5.0整合

Linux下Apache2+Tomcat5.0整合
作者:城市学习网 来源:xue.net 更新日期:2007-12-15 阅读次数:
#############################################
服务器已有安装有Tomcat5.0和JDK1.4.2
Tomcat5.0目录:/home/oracle/tomcat
JDK 1.4.2目录:/home/oracle/j2sdk1.4.2_07
Tomcat5.0 和 JDK1.42 安装步骤略
 
#############################################
 
安装Apache2.0.59至/home/oracle/apache
 
下载httpd-2.0.59.tar.gz上传至/home/oracle
 
cd /home/oracle
 
tar -zxvf httpd-2.0.59.tar.gz
 
cd httpd-2.0.59
 
#配置(prefix是安装路径,enable-mods-shared=all表示编译配置所有so文件)
 
./configure --prefix=/home/oracle/apache --enable-mods-shared=all
 
make
 
make install
 
#配置httpd.conf
vi /home/oracle/apache/conf/httpd.conf
 
ServerName 配置为 127.0.0.1,服务器IP或域名
DirectoryIndex 中添加index.htm index.jsp
DefaultLanguage 设置为zh-CN
 
cd /home/oracle/apache/bin
 
./apachectl start
 
打开 http://127.0.0.1/ 看见 "安装Apache的测试页面" 说明Apache已经安装成功
 
如果出现"403 Forbidden错误"(而且httpd.conf未设置不允许访问),解决方法如下:
不但要将WEB目录设置为可读,还要将WEB目录的所有父级目录设置为至少可检索
(参考官方FAQ:http://httpd.apache.org/docs/1.3/misc/FAQ.html#forbidden)
 
chmod +x /home
chmod +x /home/oracle
chmod +x /home/oracle/apache
chmod 777 -R /home/oracle/apache/htdocs
 
################################################
 
编译和设置mod_jk2
 
在 http://archive.apache.org/dist/jakarta/tomcat-connectors/jk2/ 中
 
下载jakarta-tomcat-connectors-jk2-src-current.tar.gz,放至/home/oracle
 
tar zxvf jakarta-tomcat-connectors-jk2-src-current.tar.gz
 
cd jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2
 
./buildconf.sh
 
./configure --with-apxs2=/home/oracle/apache/bin/apxs --with-java-home=/home/oracle/j2sdk1.4.2_07
 
make jk2-build-apxs
 
cd server/apache2
 
make -f Makefile.apxs install
 
成功执行完这几步骤之后,mod_jk2已经装好,接下来是配置阶段。
 
在/home/oracle/apache/conf目录下建立workers2.properties文件,内容如下
 
#---- worker2.properties
 
[logger.apache2]
level=DEBUG
 
# Shared memory handling. Needs to be set.
[shm]
file=/home/oracle/apache/logs/shm.file
size=1048576
 
# Example socket channel, explicitly set port and host.
[channel.socket:localhost:8009]
tomcatId=localhost:8009
port=8009
host=127.0.0.1
# define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
 
#[status:status]
 
# Uri mapping
 
#[uri:/jkstatus/*]
#group=status:status
 
#[uri:/jsp-examples/*]
#group=ajp13:localhost:8009
 
#[uri:/servlets-examples/*]
#group=ajp13:localhost:8009
 
#[uri:/javaapp/*]
#group=ajp13:localhost:8009
 
#[uri:www.home.net/*.jsp]
#worker=ajp13:localhost:8009
 
#[uri:10.0.0.10/*]
#worker=ajp13:localhost:8009
 
#[uri:/*.do]
#worker=ajp13:localhost:8009
 
[uri:/servlet/*]
worker=ajp13:localhost:8009
 
[uri:/*.jsp]
worker=ajp13:localhost:8009
 
#---- end of workers2.properties
 
 
 
 
 
然后在httpd.conf中添加虚拟目录
 
NameVirtualHost *
<VirtualHost *>
    ServerAdmin 123@126.com
    DocumentRoot /usr/website/123/webapps/ROOT
    ServerName www.123.com
    ErrorLog logs/123-error_log
    CustomLog logs/123-access_log common
    ErrorDocument 404 /error/404.html
    ErrorDocument 401 /error/401.html
</VirtualHost>
 
################################################
 
配置Tomcat中的conf/server.xml文件
更改Tomcat端口为8080,避免与apache冲突
分别在<Connector port="8080" 和<Connector port="8009" 中添加 URIEncoding="GBK",解决中文乱码
 
添加与Apache虚拟主机对应的Tomcat虚拟主机
<Host name= www.123.com  debug="0" appBase="/usr/website/123/webapps"
unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false" > </Host>
 
################################################
 
至此,Linux下Apache2+Tomcat5整合成功!
在worker2.properties配置里
[uri:/*.jsp]
worker=ajp13:localhost:8009
这两句话的作用很清楚,就是web应用遇到jsp访问请求的时候,把该文件解释工作交给tomcat处理,达到apache和tomcat整合后分工处理静态和动态页面的效果。
①如果还需要tomcat处理servlet(也只有tomcat才能处理),用同样方法设置让tomcat处理servlet,如:[uri:/servlet/*] worker=ajp13:localhost:8009 ,(上面例子servlet文件在根目录下servlet文件夹里),另外,上面例子把一些交给tomcat处理的语句注释了。
然而,网上有一些apache和tomcat整合方案在worker2.properties配置里只配置一个:[uri:/*] worker=ajp13:localhost:8009 这个意思很明显,就是告诉apache,把来自web应用的所有访问都交给tomcat处理,其中包括静态的html页面,这样做本人就认为apache和tomcat的整合就没意思了,虽然我没有测试过,但我估计这样做还没有只用tomcat效果好,试想想,所有访问都由apache转给tomcat处理,而tomcat本身就能全部处理,那apache不就显得有点多余了吗?
      在apache和tomcat整合时有很多网友遇到问题,以下是我解决的方法:
1、             问题:访问jsp文件,得到的是jsp源代码;
解决方法:这是由于apache不能解释jsp,而它又没有把jsp的解释工作交给tomcat处理引起的,只要在worker2.propertiess文件里配置jsp的访问解释转移就可以了([uri:/*.jsp] worker=ajp13:localhost:8009 );
2、             问题:访问不了servlet;
解决方法:同1类似;
3、             问题:图片、样式、脚本找不到(掉失);
解决方法:apache和tomcat在WEB应用的根目录设置上要一致如:
Apache:DocumentRoot /usr/website/123/webapps/ROOT
Tomcat:appBase="/usr/website/123/webapps"
然后添加Apache虚拟主机时把80端口的描述去掉,如:
 
NameVirtualHost *:80
<VirtualHost *:80>
.......
</VirtualHost>
改成
NameVirtualHost *
<VirtualHost *>
.......
</VirtualHost>

报 名 此 课 程 / 咨 询 相 关 信 息
【预约登门】 【网上咨询】 【订座试听】 【现在报名】
课程名称
Linux下Apache2+Tomcat5.0整合
真实姓名
* 性 别
联系电话
* E-mail:
所在地区
咨询内容

      

相关文章:
·静态路由协议 (2007-12-15)

Copyright© 2014 www.dgedu.com.cn 东莞教育在线 版权所有
中国·东莞
粤ICP备06023013号