很纳闷,很久以前我就试图吧apache和tomcat整合在一起,网上有很多的文章介绍整合过程,本是很简单的过程,但一直都没有成功。
我是在Ubuntu下,所以是用apt-get方式安装的apache和mod_jk,但是这样的方式不管我怎么配置都不能成功,不知道其他朋友怎么样,有没有用apt-get安装apache和mod_jk并且配置成功的,请指点一二。
不过我今天尝试了自己编译apache和mod_jk来整合,很顺利。
主要参考:《apacheubuntu 下 apache+tomcat整合_(mod-jk方法)》
以下记录下过程:
1. 先准备好所需安装文件和源代码
下载最新的源代码httpd(就是apache2)和tomcat-connectors
还有到oracle网站上下载jdk6.bin
还有tomcat最新版tomcat7.tar.gz
2. 安装jdk
sudo mkdir /usr/lib/jvm
cd /usr/lib/jvm
sudo mv JDK_DOWNLOAD_PATH/xxx.jdk6.bin ./
sudo chmod +x xxx.jdk6.bin
sudo ./xxx.jdk.bin
sudo ln -s xxx-jdk6 jdk6
sudo vim /etc/profile#添加以下代码
export JAVA_HOME=/usr/lib/jvm/jdk6
再修改/etc/enviroment
添加$JAVA_HOME/bin 到path后面
再执行一下/etc/profile和/etc/enviroment
sudo source /etc/profile
sudo source /etc/enviroment
3.安装tomcat和启动测试
cd /usr/share
sudo wget tar xf TOMCAT_DOWNLOAD_PATH/tomcat.tar.gz
sudo ln -s apache-tomcat-7 tomcat7
运行以下试试
sudo /usr/share/tomcat7/bin/startup.sh
如果提示没有设置JAVA_HOME(我这里就是,不明白为什么),那么可以在startup.sh里添加JAVA_HOME变量的值
sudo vim /usr/share/tomcat7/bin/startup.sh
添加
export JAVA_HOME=/usr/lib/jvm/jdk6
现在再启动应该就没问题了。
4. 编译和安装httpd
cd /usr/local/src
sudo tar xf HTTPD_DOWNLOAD_PATH/httpd.tar.gz
cd httpd-2.2.xxx
sudo mkdir /usr/local/apach2
sudo ./configure --prefix=/usr/local/apache2 --enable-so
sudo make
sudo make install
5. 基本配置httpd
cd /usr/local/apache2/conf/
sudo cp http.conf http.conf.bak
sudo vim http.conf
ServerName 配置为 127.0.0.1:80,服务器IP或域名
DirectoryIndex 中添加index.htm index.jsp
启动apache
/usr/local/apache2/bin/apachectl start
访问:http://127.0.0.1/
看到 It works!
这个测试成功的界面。
6. 编译和安装tomcat-connector
cd /usr/local/src
sudo tar xf TOMCAT-CONNECTOR_DOWNLOAD_PATH/tomcat-connector-xxx.tar.gz
cd tomcat-connector-xxx-src
cd native
sudo ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-java-home=/usr/lib/jvm/jdk6
sudo make
sudo make install 居然成功了
注:此时可以看到打印信息,程序已经将mod_jk.o拷贝到apache目录下,所以不用我们再管了
7. 最终要的一步,对以上这些软件的配置
在/usr/local/apache2/conf/下面建立两个配置文件mod_jk.conf 和workers.properties
sudo vim mod_jk.conf
添加以下代码:
# 指出mod_jk模块工作所需要的工作文件workers.properties的位置
JkWorkersFile /usr/local/apache2/conf/workers.properties
# Where to put jk logs
JkLogFile /usr/local/apache2/logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# 将所有servlet 和jsp请求通过ajp13的协议送给Tomcat,让Tomcat来处理
JkMount /servlet/* worker1
JkMount /*.jsp worker1
sudo vim workers.properties
添加以下代码:
# Defining a worker named worker1 and of type ajp13
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
再配置httpd.conf,作以下修改:
将Listen 80 修改为 Listen 127.0.0.1:80
将ServerName 修改为 ServerName localhost:80
我的网页放在/var/www下,所以要修改DocumentRoot
添加代码:
DocumentRoot "/var/www"
<Directory "/var/wwwroot">
Options Includes FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
XBitHack on
</Directory>
#加载mod_jk
LoadModule jk_module modules/mod_jk.so
Include /usr/local/apache2/conf/mod_jk.conf
最后编辑Tomcat的配置文件server.xml,在<Host段中加入:
<Context path="" docBase="/var/www" debug="0" reloadable="true" crossContext="true"/>
在/var/www下建立一个测试的jsp页面
sudo vim /var/www/test.jsp
加入代码
Hello, <%= new String("Tomcat and Apache Http Server") %>!
重新启动tomcat和apache
sudo /usr/share/tomcat7/bin/shutdown.sh
sudo /usr/share/tomcat7/bin/startup.sh
sudo /usr/local/apache2/bin/apachetl stop
sudo /usr/local/apache2/bin/apachetl start
访问http://localhost/test.jsp
出现
Hello, Tomcat and Apache Http Server!
配置完成。
希望你也跟我一样顺利!
本人新博客:tuoxie.me