软件及版本
- Ubuntu 14.04(x64)
- apache 2.4.7
- tomcat8
- AJP13 mod_jk
仅配置一台机器只运行一个tomcat的情况
整合步骤
1. 安装Apache2
apt-get install apache2
安装好之后在浏览器输入http://127.0.0.1/查看是否安装正确
2. 安装tomcat
不做赘述
3. 安装AJP13并配置
AJP13是apache与tomcat整合必不可少的模块。通过命令安装
apt-get install libapache2-mod-jk
安装完成后切换目录到ajp13的目录下
cd /etc/libapache2-mod-jk
使用vim编辑workers.properties
vim workers.properties
修改如下几处:
- workers.tomcat_home = 你安装的tomcat路径
- workers.java_home = JAVA_HOME路径
- worker.list = ajp13_worker,jk-status,jk-manager (添加jk-status与jk-manager)
4. 配置apache
根据需求对URL进行拦截配置,指定apache与tomcat的职责。
我个人的建议是所有静态资源(.js/.css/.jpg/.png……)交给apache处理,所有动态资源交给tomcat处理。
进入apache安装目录下的sites-enabled目录
cd /etc/apache2/sites-enabled
修改000-default.conf文件
vim 000-default.conf
编辑<VirtualHost:80>
标签
增加(如果存在则修改)ServerName为localhost
ServerName = localhost
增加(如果存在则修改)DocumentRoot的值,假设我的项目文件在/tomcat/webapps/ROOT内,则将DocumentRoot的值就设置为此
DocumentRoot = /tomcat/webapps/ROOT
然后,增加拦截设置
JkUnMount /*.js ajp13_worker
JkUnMount /*.css ajp13_worker
JkUnMount /*.html ajp13_worker
JkUnMount /*.png ajp13_worker
JkUnMount /*.gif ajp13_worker
JkUnMount /*.jpg ajp13_worker
JkUnMount /*.jpeg ajp13_worker
JkMount /*.jsp ajp13_worker
JkMount /* ajp13_worker
该设置的意思是,所有js、css、html、png、gif、jpr、jpeg文件都交给apache处理(JkUnMount),所有jsp文件和所有的请求,都交给tomcat处理
保存并退出
5. 使用
重启apache
/etc/init.d/apache2 restart
6. 可能出现的问题
-
所有tomcat的请求都能接收并正确处理,但是静态文件无法加载
解决: 检查DocumentRoot的路劲是否正确,webapps项目文件夹的权限是否可访问
-
中文编码有问题
解决:
-
进入apache安装目录下的conf-enabled目录,修改AddDefaultCharset的值为UTF-8
AddDefaultCharset UTF-8
-
进入tomcat安装目录下的conf目录,增加server.xml内关于ajp13的配置项URIEncoding='UTF-8'
<!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>
-
7. 感谢
感谢博主monkeyking1987的文章:Ubuntu Apache2 与Tomcat 7 整合步骤,给了我很大的参考。
# 请尽情使用吧