需要软件:
1.Apache2.2.2官方下载:http://httpd.apache.org/download.cgi
2.Java1.5官方下载:http://192.18.108.148/ECom/EComTicketServlet/BEGIN7C9504C2D69571D1CB544B15E381433E/-2147483648/1564373499/1/531770/531638/1564373499/2ts+/westCoastFSEND/jdk-1.5.0-oth-JPR/jdk-1.5.0-oth-JPR:3/jdk-1_5_0-linux-i586.bin
3.Tomcat5.5.17官方下载:http://tomcat.apache.org/download-55.cgi#5.5.17
4.jakarta-tomcat-connectors-1.2.15-src.tar.gz官方下载:http://archive.apache.org/dist/jakarta/tomcat-connectors/jk2
第一步,安装Apache2.2.2
//解压缩
# tar -xvzf httpd-2.2.2.tar.gz
//配置,/usr/local/httpd-2.2.2这个是你Apace的安装路径,我习惯带上版本号了,用熟悉了你就知道好处了
# ./configure --prefix=/usr/local/httpd-2.2.2 --enable-module=so
//编译
# make
//安装
# make install
打开/usr/local/httpd-2.2.2/conf/httpd.conf
找到
ServerName localhost:80
更改为
ServerName localhost
找到(默认的主机目录)
DocumentRoot "/usr/local/httpd-2.2.2/htdocs"
更改为(你要指定的主机目录)
DocumentRoot "/home/www/html"
//检查一下配置是否正确
# /usr/local/httpd-2.2.2/bin/apachectl -t
Syntax OK //说明配置正确,如果有问题请仔细察看错误提示,检查配置文件是否正确
打开http://192.168.0.6 (你服务器的IP)是否看到了Apache的欢迎界面?如果没有看到,请检查你上面的步骤是否正确;
第二步,安装Java1.5
# cp jdk-1_5_0-linux-i586.bin /usr/local
# cd /usr/local
# chmod 777 jdk-1_5_0-linux-i586.bin //把该文件的权限设置为777
# ./jdk-1_5_0-linux-i586.bin //执行,自动解压缩的为jdk1.5.0
打开/etc/profile
在最后一行加上:
JAVA_HOME=/usr/local/jdk1.5.0
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=$JAVA_HOME/lib/tools.jar:/usr/j2se/lib/dt.jar
CATALINA_HOME=/usr/local/apache-tomcat-5.5.17 // 这个我提前加了,下面安装tomcat的以后才需要加的
export PATH JAVA_HOME CLASSPATH CATALINA_HOME
运行一下java、javac看看是不是可以了,那么到此java的安装就算是完成了(建议退出系统,重新登录一下)
第三步,安装Tomcat
可以说Tomcat的安装最为简单:
# cp apache-tomcat-5.5.17.tar.gz /usr/local
# cd /usr/local
# tar -xvzf apache-tomcat-5.5.17.tar.gz
# /usr/local/apache-tomcat-5.5.17/bin/startup.sh
然后到http://192.168.0.6:8080 是不是看到那只叫Tom的猫了
第四步,安装jakarta-tomcat-connectors
这个模块是用于Apache和Tomcat之间进行通讯的,所以整合Tomcat和Apache,这个模块的安装是至关重要的。
# tar -xvzf jakarta-tomcat-connectors-1.2.15-src.tar.gz
# cd jakarta-tomcat-connectors-1.2.15/jk/native/
# ./configure --with-apxs=/usr/local/httpd-2.2.2/bin/apxs --with-apr-lib=/usr/local/httpd-2.2.2/bin --with-tomcat=/usr/local/apache-tomcat-5.5.17/ --with-java-home=/usr/local/jdk1.5.0 --with-jni
# make
# cd apache-2.0/
# ll
有没有看到mod_jk.so模块?如果看到了,那么说明的编译已经成功。
第五步,整合Tomcat和Apache
# cp /home/software/jakarta-tomcat-connectors-1.2.15/jk/native/apache-2.0/mod_mk.so /usr/local/httpd-2.2.2/modules/
# cd /usr/local/httpd-2.2.2/conf
# vim mok_jk.conf
JkWorkersFile /usr/local/httpd-2.2.2/conf/workers.properties
JkLogFile /var/log/httpd/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
# vim workers.properties
worker.list=worker1
# Set properties for worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300
打开/usr/local/httpd-2.2.2/conf/httpd.conf,增加两行;注意千万不要放到最后一行,应该在所有Include之前
LoadModule jk_module modules/mod_jk.so
Include conf/mod_jk.conf
至此Tomcat与Apache2的整合已经算是完成
第五步,虚拟主机
其实在上面配置中,我并没有把所有的事情都作为,所以上面尽管已经做了几乎所有的工作,当仍然是不能使用的最最关键的一步我来搬到虚拟主机中来讲,也算是作虚拟主机的一个窍门或者说是解决办法吧
Apache2的虚拟主机我想大家都不陌生吧,如果真的不会,本站手册可以查询;下面我再Apache中创建了两个虚拟主机:
<VirtualHost 192.168.0.6>
ServerAdmin webmaster@moocky.net
DocumentRoot "/home/www/html/moocky.net"
ServerName www.moocky.net
ServerAlias moocky.net
ErrorLog logs/www_moocky_net-error_log
CustomLog logs/www_moocky_net-access_log common
CustomLog logs/www_moocky_net-deflate_log deflate
</VirtualHost>
<VirtualHost 192.168.0.6>
JkMount /servlet/* worker1
JkMount /*.jsp worker1
ServerAdmin webmaster@moocky.net
DocumentRoot "/home/www/html/moocky.com"
ServerName www.moocky.com
ServerAlias moocky.com
ErrorLog logs/www_moocky_com-error_log
CustomLog logs/www_moocky_com-access_log common
CustomLog logs/www_moocky_com-deflate_log deflate
</VirtualHost>
接下来就是要在Tomcat中同样创建两个虚拟主机,Tomcat创建虚拟主机是通过修改Server.xml来实现的:
<Host name="www.moocky.net" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/home/www/html/moocky.net/wwwroot" debug="0" reloadable="true" crossContext="true"/>
<Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="www.moocky.net." suffix=".log" timestamp="true"/>
</Host>
<Host name="www.moocky.com" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/home/www/html/myself/moocky.com/wwwroot" debug="0" reloadable="true" crossContext="true"/>
<Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="www.moocky.com." suffix=".log" timestamp="true"/>
</Host>
配置文件修改完毕,分别重起Tomcat和Apache,然后分别在moocky.net和moocky.com这两个站点中创建index.jsp文件,内容如下:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Test Page</title>
</head>
<body>
<h1>JSP Test Page</h1>
<%= new java.util.Date() %>
</body>
</html>
分别浏览一下http://www.moocky.com/index.jsp 和http://www.moocky.net/index.jsp 我们会发现一个很奇怪的问题,就是moocky.net中index.jsp文件根本没有被执行,其实细心的朋友肯定已经发现了我在Apache中配置那个虚拟主机的时候有一个细微差别:
JkMount /servlet/* worker1
JkMount /*.jsp worker1
这个就是用来通知WebServer,所有的jsp、servlet都来使用Tomcat进行解析的而moocky.net没有这个标注,所以,即使同样也在tomcat中创建了站点,他也不会解析JSP文件了。如果你想让你所有的站点都支持JSP,那么直接把这两行放在Apache的httpd.conf中所有Include上面就可以,而不必在每个虚拟主机中都写了。
都这里,有Apache和Tomcat的整合已经全部结束了,上面的步骤都是我一步一步测下来的,应该不会有什么问题,但不保证适合所有的Linux环境,有什么问题欢迎大家一起讨论。




