Ubuntu16.04下Apache和tomcat服务器的整合

Posted haiyoushenmemingzi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu16.04下Apache和tomcat服务器的整合相关的知识,希望对你有一定的参考价值。

1.区别

  Apache是一个Web服务器,只支持静态网页,也可以用作文件的存储和访问,但是动态网页就无法处理了。

  Tomcat可以作为独立的web服务器来运行,也可以是应用(java)服务器(用来跑Java应用),是一个Servlet容器。

  由于Apache解释静态页面要比tomcat快速而且稳定,网站可以使用一个Apache作为Web服务器,为网站的静态页面请求提供服务;同时使用Tomcat服务器作为一个Servlet/JSP插件,显示网站的动态页面。

 

2.怎么整合

  整合:所有访问都先经过Apache,Apache经过筛选,把符合一定规则的请求转发给Tomcat进行处理。

  Apache中有一个模块叫module_jk,专门负责做转发的工作,该模块以动态库的形式存在,需要的时候才进行加载。Tomcat在Apache端叫做worker,module_jk一般通过8009的TCP端口跟Tomcat使用AJP协议进行通信。

 

3.经验【划重点】

  (1)如果你只是单纯地写一个后台服务,然后想开一个图片托管(存储)或类似的文件存储和访问,那么只用tomcat就可以了,不需要费劲进行两个服务器一起用。只需要把要管理的文件(图片)放到tomcat的webapps目录下,访问路径就能获取到对应的文件(图片)。

  (2)如果你想apache使用80和443(默认是8443的),tomcat使用8080和443,那就不用试了,443会冲突起不来。(需求来源:不想要带端口访问,而是直接用域名,还都得是https)

  (3)如果碰到安装过程或者启动过程出错的,那么思考一下原因,复制一下报错信息,搜索一下解决方法。

 

4.整合步骤

(1)安装Java环境,官网下载JDK并安装

(2)安装apache服务器(httpd安装)。

  官网下载链接:http://httpd.apache.org/download.cgi

  安装教程:https://www.cnblogs.com/chevin/p/10222681.html

  在bin目录下执行命令:    ./httpd -k start

  访问80端口查看安装是否成功。

(3)安装tomcat服务器。

  官网下载链接:http://tomcat.apache.org/

  解压:tar -zxvf XXX.tar.gz

  名字太长了重命名:mv  原名字  新名字(比如tomcat7)

  挪位置:mv tomcat7 路径(比如/usr/local)

  XXXX   参见教程: https://blog.csdn.net/jenyzhang/article/details/70159769 

  启动tomcat  :  sudo ./bin/startup.sh

  【怎么找Java安装路径】:update-alternatives --config java   (whereis Java 有的时候没用)

  【看tomcat的module】:到安装目录下的modules里面查看有什么module  比如这里是:/usr/local/tomcat7/modules

  【日志】:在安装目录的logs里面,比如这里是: /usr/local/tomcat7/logs  启动日志:catalina.log 

 

(4)整合

  源教程来自,可直接访问:https://www.jianshu.com/p/2547f295b6a2

   【注意】:下面涉及到的路径,请根据自己的实际安装路径来。

  【查看端口开启状况】:使用命令  lsof -i:8080  

 

一、安装mod_jk.so并配置

1.安装mod_jk

# apt-get install libapache2-mod-jk

安装完后,在/etc/apache2/mods-enabled下会多出一个jk.load文件,重启apache2后,apache自动装载这个文件以加载mod_jk

 

2.找到worker配置文件

# vi jk.conf

找到JkWorkersFile:

JkWorkersFile /etc/libapache2-mod-jk/workers.properties

说明了jk_worker的配置文件为/etc/libapache2-mod-jk/workers.properties,要将tomcat作为一个worker就得修改这个文件。

 

3.在Apache端设置worker

# vi /etc/libapache2-mod-jk/workers.properties

(1)修改worker名称为mytomcat

a.找到worker.list:

worker.list=ajp13_worker

b.将文件中所有ajp13_worker替换成mytomcat

(2)设置mytomcat运行环境

tomcat和jdk的安装目录,以便worker能正常运行

workers.tomcat_home=/usr/share/apache-tomcat-8.5.35

workers.java_home=/usr/share/jdk1.8.0_131

(3)设置转发规则(如果没有的可以新建一个)

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

在VirtualHost标签末尾添加:JkMount /examples/* mytomcat

<VirtualHost *:80>

...

JkMount /examples/* mytomcat

</VirtualHost>

意思是凡是/examples/开头的链接请求都交给mytomcat处理,如:http://192.168.1.155/examples/index.html

examples的路径位于tomcat目录下:/usr/share/apache-tomcat-8.5.35/webapps/examples

/**到此Apache端的配置完成,需要修改的文件:

jk.load (mod_jk加载设置,可能要改)

jk.conf (mod_jk设置,可能要改)

workers.properties (worker设置,必须要改)

sites-available/000-default.conf (转发规则设置,必须要改)**/

 

二、在tomcat端设置worker

#vi /usr/share/apache-tomcat-8.5.35/conf/server.xml

1.修改worker名称

修改Engine标签为:

<Engine name="Catalina" defaultHost="localhost" jvmRoute="mytomcat">

这样Apache和tomcat就能通过8009端口,使用AJP1.3协议进行通信了

 

2.检查监听端口是否是8009,协议是否跟Apache端设置一样(AJP1.3(apache端为ajp13))

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

 

三、功能验证

1.重启apache

到httpd目录下重启:  ./httpd -k restart

2.重启tomcat

到bin目录下执行shutdown.sh

到bin目录下执行startup.sh

3.浏览器请求

分别请求apache的一个文件和tomcat的一个请求(或一个文件)进行验证
 
 

以上是关于Ubuntu16.04下Apache和tomcat服务器的整合的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu16.04 install Tomcat8

Ubuntu 16.04下搭建Java(php)环境

Ubuntu16.04下搭建LAMP环境

ubuntu16.04下配置apache2与php

ubuntu16.04设置tomcat自启动

Tomcat的下载安装启动与关闭(ubuntu server 16.04)