Windows 下 Apache HTTP Server 与 Tomcat 的整合

时间:2021-04-19 20:11:58

整合准备:

1、Apache HTTP Server(下文用Apache简称)

2、Tomcat 7或8

3、mod_jk.so (tomcat-connectors)-这个文件是用来链接http server与tomcat的桥梁

下载地址:http://mirrors.hust.edu.cn/apache/tomcat/tomcat-connectors/jk/binaries/windows/

Windows 下 Apache HTTP Server 与 Tomcat 的整合

下载的版本要与Apache的版本一致

Apache的安装都是下一步,只是有个地方要输入填一下

Windows 下 Apache HTTP Server 与 Tomcat 的整合

安装的位置自己选择,我的安装在:D:\Apache\HttpServer\Apache2.2

tomca的的安装就不介绍了:解压一个或安装版的都行

Apache与Tomca整合:

1 、解压下载下来的tomcat-connectors-1.2.40-windows-i386-httpd-2.2.x(我的Apache是2.2.25),找到

mod_jk.so文件并把它拷贝到Apache安装目录下的modules文件夹中

Windows 下 Apache HTTP Server 与 Tomcat 的整合

2、打开 Apache 的安装目录,其主要配置都集中在conf文件夹下的 httpd.conf 文件中,位置如图所示:

Windows 下 Apache HTTP Server 与 Tomcat 的整合

(1)修改DocumentRoot

DocumentRoot  一般为js、css、html、png、gif、jpg等静态资源文件的存放目录,这里我们定义存放在D:/Apache/HttpServer/www文件夹下。修改后的内容如下:

DocumentRoot "D:/Apache/HttpServer/www"

在其下面建立一个与项目webroot相同的文件在把静态的文件拷贝过来

(2)图如下:第193行,将 Deny from all 改成 allow from all 否则访问静态文件时页面会提示 Forbidden 禁止访问的信息。

Windows 下 Apache HTTP Server 与 Tomcat 的整合

(3)Directory 修改成和 DocumentRoot 对应的值相同

Windows 下 Apache HTTP Server 与 Tomcat 的整合

(4)将 Options Indexes FollowSymLinks 注释掉,并在其下追加一行 Options None。作用和 Tomcat下的conf/web.xml中的 listings 设置成 false 一样,为了避免在浏览器中列出 服务端资源 的目录结构。

3、Apache 关联 Tomcat 的配置

在conf 文件夹(httpd.conf 所在的文件夹)新建一个 workers.properties 文件,内容如下:

workers.tomcat_home=D:/Apache/apache-tomcat-8.0.9
workers.java_home=C:/Java/jdk1.8.0
ps=/
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13

在httpd.conf 的最末尾处(就是

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>的后面) 添加一段代码

##wen#
LoadModule jk_module modules/mod_jk.so
JKWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
<VirtualHost *>
ServerAdmin localhost
DocumentRoot D:/Apache/HttpServer/www
ServerName 127.0.0.1:80
DirectoryIndex index.html index.htm index.jsp login.jsp
ErrorLog logs/shsc-error_log.txt
CustomLog logs/shsc-access_log.txt common

JkMount /*WEB-INF ajp13
JkMount /manage/* ajp13
JkMount /CaptchaImageAction/* ajp13
JkMount /*.jsp ajp13
JkMount /*.do ajp13
</VirtualHost>

用来过滤那些请求交由tomcat来处理

补充:

多个tomcat的配置

1、配置apache的conf目录下的workers.properties文件

# list the workers by name
#worker.list=DLOG4J, status, tomcat3, tomcat4,tomcat5
worker.list=DLOG4J, status, tomcat1
# localhost server 1
# ------------------------
worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=100
# localhost server 2
# ------------------------
#worker.tomcat2.port=8010
#worker.tomcat2.host=localhost
#worker.tomcat2.type=ajp13
#worker.tomcat2.lbfactor=100
# localhost server 3
# ------------------------
#worker.tomcat3.port=8009
#worker.tomcat3.host=xxxxxx
#worker.tomcat3.type=ajp13
#worker.tomcat3.lbfactor=100
# localhost server 4
# ------------------------
#worker.tomcat4.port=8010
#worker.tomcat4.host=xxxxxx
#worker.tomcat4.type=ajp13
#worker.tomcat4.lbfactor=100
# localhost server 5
# ------------------------
#worker.tomcat5.port=8011
#worker.tomcat5.host=xxxxxx
#worker.tomcat5.type=ajp13
#worker.tomcat5.lbfactor=100
#worker.DLOG4J.type=lb
#worker.DLOG4J.balance_workers=tomcat3,tomcat4,tomcat5
#default session is true
#worker.DLOG4J.sticky_session=true
worker.status.type=status

这个配置里面注释掉了包括负载均衡的设置,当前只支持了一个tomcat1,与apache整合

2、配置apache的conf目录下,增加uriworkermap.properties文件

/*=DLOG4J
/jkstatus=status

!/*.gif=DLOG4J
!/*.jpg=DLOG4J
!/*.png=DLOG4J
!/*.css=DLOG4J
!/*.js=DLOG4J
!/*.htm=DLOG4J
!/*.html=DLOG4J
!/*.php=DLOG4J

3、修改conf文件http.conf

LoadModule jk_module modules/mod_jk.so
      <IfModule jk_module>
           JkWorkersFile conf/workers.properties
           JkMountFile conf/uriworkermap.properties
           JkLogFile logs/mod_jk.log
           JkLogLevel warn
        </IfModule>