软件及版本

  1. Ubuntu 14.04(x64)
  2. apache 2.4.7
  3. tomcat8
  4. 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

修改如下几处:

  1. workers.tomcat_home = 你安装的tomcat路径
  2. workers.java_home = JAVA_HOME路径
  3. 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

访问http://127.0.0.1/查看项目的启动情况

6. 可能出现的问题

  1. 所有tomcat的请求都能接收并正确处理,但是静态文件无法加载

    解决: 检查DocumentRoot的路劲是否正确,webapps项目文件夹的权限是否可访问

  2. 中文编码有问题

    解决:
    1. 进入apache安装目录下的conf-enabled目录,修改AddDefaultCharset的值为UTF-8
    AddDefaultCharset UTF-8

    1. 进入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 整合步骤,给了我很大的参考。


请尽情使用吧

****

Thanks for Reading

Jiahao.Zhang
NetEase Inc. Hangzhou 
        Front-End Developer