在阿里云ECS上部署Apache和Tomcat并整合,


首先需要购买linuxboyECS服务器。我购买的是低配置,OS为Ubuntu18.04。
本文中所有的命令操作均是以Putty连接到ECS服务器后进行的操作。

一、基本环境安装准备

要运行Tomcat,首先要确认有没有安装Java。运行命令:

java --version

如果输出下面的字样,证明已经安装了Java。

openjdk 11.0.3 2019-04-16

上面证明我安装的是OpenJDK,如果是Oracle JDK输出的可能是其它字样。
如果没有安装的话,可以使用apt-get install命令安装openjdk。

apt-get install default-jdk

安装Tomcat和apache2。
安装apache2使用命令:

apt-get install apache2

Tomcat是从apache官网下载的8.5.1,直接解压到/usr/local目录下。
启动Apache和Tomcat,分别访问如下:
2019_06_04_130828
2019_06_04_130914
下面重点介绍Tomcat和Apache的整合。
Tomcat虽然也提供了WebServer的功能,但是一般只用作调试使用,其主要功能还是处理Servlet,作为Servlet容器使用。对于Web的处理还是Apache的Httpd这专业的WebServer更优秀。
要整合,就需要将所有的HTTP请求都经过Apache的筛选,把符合一定规则的请求转发给Tomcat处理。这其中需要的模块是module_jk,专门负责转发工作,这个模块是以动态库形式存在,需要的时候才进行加载。而Tomcat相对于Apache叫worker,一般通过8009的TCP端口使用AJP协议和Tomcat通信。

二、安装module_jk并进行配置

安装命令如下:

apt-get install libapache2-mod-jk

安装后在/etc/apache2/mods-enabled目录下会多出一个jk.load文件,文件内容就是标准的apache加载模块的LoadModule命令。重启Apache2会自动加载这个模块。
2019_06_04_132447
在同一个目录有一个jk.conf文件,它是对mod_jk的相关配置,如下图:
2019_06_04_132205
从上面的配置文件我们可以确认,jk_worker的配置文件/etc/libapache2-mod-jk/workers.properties,要将Tomcat作为一个Worker就得修改这个文件。编辑这个文件,会看到一个worker.list,默认是ajp13_worker,如果你不喜欢可以将此名字进行修改,如果不想修改一定要记住,后面的配置会使用。如果修改就得将文件中的所有地方都修改为统一的名字如myworker什么的。如果在替换,在vi的命令模式输入如下的命令即可:

:%s#ajp13_worker#myworker#g

然后回车即完成全文替换。
另外还要修改Tomcat和JDK目录,如下:
2019_06_04_133349
然后设置apache2的转发规则,

vi /etc/apache2/sites-available/000-default.conf

在VirtualHost节点的未尾添加转发规则(一条或多条),如下图:
2019_06_04_133659
这条规则的意思是把所有的/examples/和/MyWebApp/的请求转交给tomcat处理。
整个配置中涉及和可能修改的文件列表如下:

  • /etc/apache2/mods-enabled/jk.load
  • /etc/apache2/mods-enabled/jk.conf
  • /etc/libapache2-mod-jk/workers.properties
  • /etc/apache2/sites-available/000-default.conf
    其中jk.load/jk.conf是mod_jk的加载和配置,可能会修改。workers.properties是worker设置,必须修改。000-default.conf转发规则,必须修改。

三、在Tomcat中设置worker

修改Engine节点。添加worker名称,如下图:
2019_06_04_134536
并确定8009端口已监听协议为AJP1.3。

四、功能验证

进行上述配置后,需要重启tomcat和apache2。

systemctl stop apache2
systemctl start apache2

进入tomcat的主目录,然后进入bin目录。执行

./shutdown.sh
./startup.sh &

打开浏览器,输入http://xxx.xxx.xxx.xxx/examples/
2019_06_04_135013
我再也不为输入:8080就可以访问tomcat了。如果我在tomcat上布置了其它应用,通过apache2的转发规则,直接就可以访问了,如我的MyWebApp。如下图:
2019_06_04_135134

相关内容