这里先说个前提:我用的是阿里云ECS服务器,配置不高,操作系统是Ubuntu 18.04。所有操作都是通过Putty远程连接到服务器后执行的,命令行环境跑起来很顺。
一、基本环境安装准备
运行Tomcat之前,得先确认Ja va有没有装好。直接敲命令:
ja va --version
如果输出类似下面这行,说明Ja va已经就位了。
openjdk 11.0.3 2019-04-16
我这显示的是OpenJDK,Oracle JDK的输出版本号会不一样。如果还没装,就用apt-get装一个openjdk:
apt-get install default-jdk
接下来安装Tomcat和Apache2。Apache2直接用apt-get搞定:
apt-get install apache2
Tomcat是从官网下载的8.5.1版本,直接解压到/usr/local目录下。启动Apache和Tomcat后,分别访问下面这两个页面看看效果:

下面重点说说Tomcat和Apache的整合。虽然Tomcat也自带WebServer功能,但一般只是调试时用用,真正处理静态页面和HTTP请求,还是Apache的Httpd更专业。Tomcat的核心工作是处理Servlet,作为Servlet容器存在。所以要整合,就让Apache来当“门卫”,所有HTTP请求先经它筛选,符合规则的就转给Tomcat处理。这中间的“转交员”是一个叫mod_jk的模块,它是个动态库,需要时加载。而Tomcat的角色叫“worker”,默认通过8009端口的AJP协议和Apache通信。
二、安装module_jk并进行配置
安装命令很简单:
apt-get install libapache2-mod-jk
装完之后,在/etc/apache2/mods-enabled目录下会多出一个jk.load文件,里面就是标准的LoadModule命令。重启Apache后这个模块就能自动加载。
同一目录下还有个jk.conf文件,是对mod_jk的配置,关键配置项就在里面:
从配置文件里可以看到,worker的配置文件是/etc/libapache2-mod-jk/workers.properties。要把Tomcat当成一个worker,就得改这个文件。打开它,会看到一个worker.list,默认叫ajp13_worker。如果不喜欢这个名字,可以改成自己喜欢的,比如myworker,但记住,改了就全文件都得统一。在vim命令模式下替换很方便:
:%s#ajp13_worker#myworker#g
回车就完成了全文替换。另外还要修改Tomcat和JDK的安装目录,像下面这样:
然后设置Apache2的转发规则:
vi /etc/apache2/sites-a vailable/000-default.conf
在
这条规则的意思是:所有访问/examples/和/MyWebApp/的请求,都会被转交给Tomcat处理。
整个配置中需要关注的文件列表如下:
/etc/apache2/mods-enabled/jk.load/etc/apache2/mods-enabled/jk.conf/etc/libapache2-mod-jk/workers.properties/etc/apache2/sites-a vailable/000-default.conf
其中jk.load和jk.conf是模块加载和配置,可能需要微调;workers.properties是worker设置,必须改;000-default.conf是转发规则,也必须改。
三、在Tomcat中设置worker
接下来修改Tomcat的配置文件,找到Engine节点,添加上定义的worker名称,就像这样:
同时确认8009端口已经开启,并且协议是AJP1.3。
四、功能验证
所有配置完成后,重启Tomcat和Apache2:
systemctl stop apache2
systemctl start apache2
进入Tomcat主目录的bin目录,执行:
./shutdown.sh
./startup.sh &
然后在浏览器里输入https://你的IP地址/examples/,就能看到以下页面:
这样一来,访问Tomcat就不再需要手动加上:8080端口号了。如果Tomcat上部署了其他应用(比如我的MyWebApp),通过Apache2的转发规则也能直接访问,效果如下:
