软件及版本
- 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 整合步骤,给了我很大的参考。
# 请尽情使用吧
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于