`

Centos Apache和Tomcat集成配置

 
阅读更多

在Centos上已经部署安装了tomcat和apache httpd服务,并且tomcat能通过8080端口进行外网访问,apache httpd能通过80端口进行外网访问。现在需要做的是,服务通过域名来访问。就是通过apache httpd来代理tomcat服务。

于是,百度各种文章博客,都是看的云里雾里。

 

这里引入一下,为什么要让Apache 与 Tomcat 之间进行连接的正式官方原因:

1.提升对静态文件的处理能力;

2.利用 Web 服务器来做负载均衡以及容错;

3.无缝的升级应用程序

这三点对一个 web 网站来说是非常之重要的,我们希望我们的网站不仅是速度快,而且要稳定,不能因为某个 Tomcat 宕机或者是升级程序导致用户访问不了,而能完成这几个功能的、最好的 HTTP 服务器也就只有 apache 的 http server 了,它跟 tomcat 的结合是最紧密和可靠的。

 

Apache和Tomcat的整合方式有三种:

一、JK

这是最常见的方式,在网上找到的大多也是关于配置JK的,当然最全的还是其官方所提供的文档。JK 本身有两个版本分别是 1 和 2,目前 1 最新的版本是 1.2.19,而版本 2 早已经废弃了,以后不再有新版本的推出了,所以建议采用版本 1。

JK 是通过 AJP 协议与 Tomcat 服务器进行通讯的,Tomcat 默认的 AJP Connector 的端口是 8009。JK 本身提供了一个监控以及管理的页面 jkstatus,通过 jkstatus 可以监控 JK 目前的工作状态以及对到 tomcat 的连接进行设置,如下图所示:

图 1:监控以及管理的页面 jkstatus


在这个图中我们可以看到当前JK配了两个连接分别到 8109 和 8209 端口上,目前 s2 这个连接是停止状态,而 s1 这个连接自上次重启后已经处理了 47 万多个请求,流量达到 6.2 个 G,最大的并发数有 13 等等。我们也可以利用 jkstatus 的管理功能来切换 JK 到不同的 Tomcat 上,例如将 s2 启用,并停用 s1,这个在更新应用程序的时候非常有用,而且整个切换过程对用户来说是透明的,也就达到了无缝升级的目的。

 

JK 的配置最关键的有三个文件,分别是:

httpd.conf
Apache 服务器的配置文件,用来加载 JK 模块以及指定 JK 配置文件信息

workers.properties
到 Tomcat 服务器的连接定义文件

uriworkermap.properties
URI 映射文件,用来指定哪些 URL 由 Tomcat 处理,你也可以直接在 httpd.conf 中配置这些 URI,但是独立这些配置的好处是 JK 模块会定期更新该文件的内容,使得我们修改配置的时候无需重新启动 Apache 服务器。

其中第二、三个配置文件名都可以自定义。下面是一个典型的 httpd.conf 对 JK 的配置

# (httpd.conf)
# 加载 mod_jk 模块
LoadModule jk_module modules/mod_jk.so

#
# Configure mod_jk
#
JkWorkersFile conf/workers.properties
JkMountFile conf/uriworkermap.properties
JkLogFile logs/mod_jk.log
JkLogLevel warn

接下来我们在 Apache 的 conf 目录下新建两个文件分别是 workers.properties、uriworkermap.properties。

workers.properties文件的内容大概如下:

#
# workers.properties
#
# list the workers by name
worker.list=DLOG4J, status

# localhost server 1
# ------------------------
worker.s1.port=8109
worker.s1.host=localhost
worker.s1.type=ajp13

# localhost server 2
# ------------------------
worker.s2.port=8209
worker.s2.host=localhost
worker.s2.type=ajp13
worker.s2.stopped=1

worker.DLOG4J.type=lb
worker.retries=3
worker.DLOG4J.balanced_workers=s1, s2
worker.DLOG4J.sticky_session=1

worker.status.type=status

以上的 workers.properties 配置就是我们前面那个屏幕抓图的页面所用的配置。首先我们配置了两个类型为 ajp13 的 worker 分别是 s1 和 s2,它们指向同一台服务器上运行在两个不同端口 8109 和 8209 的 Tomcat 上。接下来我们配置了一个类型为 lb(也就是负载均衡的意思)的 worker,它的名字是 DLOG4J,这是一个逻辑的 worker,它用来管理前面配置的两个物理连接 s1 和 s2。最后还配置了一个类型为 status 的 worker,这是用来监控 JK 本身的模块。有了这三个 worker 还不够,我们还需要告诉 JK,哪些 worker 是可用的,所以就有 worker.list = DLOG4J, status 这行配置。

 

接下来便是 URI 的映射配置了,我们需要指定哪些链接是由 Tomcat 处理的,哪些是由 Apache 直接处理的,看看下面这个文件你就能明白其中配置的意义

/*=DLOG4J
/jkstatus=status

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

所有的请求都由 DLOG4J 这个 worker 进行处理,但是有几个例外,/jkstatus 请求由 status 这个 worker 处理。另外这个配置中每一行数据前面的感叹号是什么意思呢?感叹号表示接下来的 URI 不要由 JK 进行处理,也就是 Apache 直接处理所有的图片、css 文件、js 文件以及静态 html 文本文件。

 

二、http_proxy

这是利用 Apache 自带的 mod_proxy 模块使用代理技术来连接 Tomcat。在配置之前请确保是否使用的是 2.2.x 版本的 Apache 服务器。因为 2.2.x 版本对这个模块进行了重写,大大的增强了其功能和稳定性。

http_proxy 模式是基于 HTTP 协议的代理,因此它要求 Tomcat 必须提供 HTTP 服务,也就是说必须启用 Tomcat 的 HTTP Connector。一个最简单的配置如下

ProxyPass /images !
ProxyPass /css !
ProxyPass /js !
ProxyPass / http://localhost:8080/

在这个配置中,我们把所有 http://localhost 的请求代理到 http://localhost:8080/ ,这也就是 Tomcat 的访问地址,除了 images、css、js 几个目录除外。我们同样可以利用 mod_proxy 来做负载均衡。

再看看下面这个配置:

ProxyPass /images !
ProxyPass /css ! 
ProxyPass /js !

ProxyPass / balancer://example/
<Proxy balancer://example/>
BalancerMember http://server1:8080/
BalancerMember http://server2:8080/
BalancerMember http://server3:8080/
</Proxy>

配置比 JK 简单多了,而且它也可以通过一个页面来监控集群运行的状态,并做一些简单的维护设置。

图 2:监控集群运行状态


 

三、ajp_proxy

ajp_proxy 连接方式其实跟 http_proxy 方式一样,都是由 mod_proxy 所提供的功能。配置也是一样,只需要把 http:// 换成 ajp:// ,同时连接的是 Tomcat 的 AJP Connector 所在的端口。上面例子的配置可以改为:

ProxyPass /images !
ProxyPass /css ! 
ProxyPass /js !

ProxyPass / balancer://example/
<Proxy balancer://example/>
BalancerMember ajp://server1:8080/
BalancerMember ajp://server2:8080/
BalancerMember ajp://server3:8080/
</Proxy>

采用 proxy 的连接方式,需要在 Apache 上加载所需的模块,mod_proxy 相关的模块有 mod_proxy.so、mod_proxy_connect.so、mod_proxy_http.so、mod_proxy_ftp.so、mod_proxy_ajp.so, 其中 mod_proxy_ajp.so 只在 Apache 2.2.x 中才有。如果是采用 http_proxy 方式则需要加载 mod_proxy.so 和 mod_proxy_http.so;如果是 ajp_proxy 则需要加载 mod_proxy.so 和 mod_proxy_ajp.so这两个模块。

 

三者比较

相对于 JK 的连接方式,后两种在配置上是比较简单的,灵活性方面也一点都不逊色。但就稳定性而言就不像 JK 这样久经考验,毕竟 Apache 2.2.3 推出的时间并不长,采用这种连接方式的网站还不多,因此,如果是应用于关键的互联网网站,还是建议采用 JK 的连接方式。

 

以上三种方式,这里采用ajp_proxy的代理方式来进行。

1.配置Apache配置文件httpd.conf

[root@localhost ~]# vi /etc/httpd/conf/httpd.conf

在末尾添加:

NameVirtualHost *:80
<VirtualHost *:80>  
    ServerName www.linyi.cn
    ErrorLog logs/linyi-error_log  
    CustomLog logs/linyi-access_log common  
    <Directory "/var/www/html/usr/local/apache-tomcat-8.0.43/webapps/">  
        DirectoryIndex index.htm index.jsp index.html  
	Options Indexes FollowSymLinks
        Order allow,deny
        Allow from all
        AllowOverride All
   </Directory>  
    DocumentRoot /var/www/html/usr/local/apache-tomcat-8.0.43/webapps/
    <IfModule mod_proxy.c>  
        ProxyPass /  ajp://127.0.0.1:8009/  
        ProxyPassReverse / ajp://127.0.0.1:8009/  
    </IfModule>  
</VirtualHost>

centos7下,apache httpd操作指令:

systemctl start httpd.service #启动
systemctl stop httpd.service #停止
systemctl restart httpd.service #重启

systemctl enable httpd.service #开机启动
systemctl disable httpd.service #开机不启动

systemctl status httpd.service  #检查httpd状态

killall httped  #杀掉所有httpd进程

 

2.配置Tomcat配置文件server.xml

[root@localhost ~]# vi /usr/local/apache-tomcat-8.0.43/conf/server.xml

Host节点:

<Host name="www.linyi.cn" appBase="webapps"  
    unpackWARs="true" autoDeploy="true"  
    xmlValidation="false" xmlNamespaceAware="false">  
</Host> 

 

Engine节点:

<Engine name="Catalina" defaultHost="www.linyi.cn">

 

重启tomcat

 

最后,在浏览器中输入:http://www.linyi.cn/就可以得到需要的结果。

 

参考:http://blog.csdn.net/jackome/article/details/36418727

https://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/

 

  • 大小: 19.8 KB
  • 大小: 44 KB
分享到:
评论

相关推荐

    Apache与Tomcat整合集成

    CentOS 操作系统 7.0 64位 Apache Http Server Apache/2.4.6 (CentOS) Tomcat 7.0.39 tomcat-connectors 1.2.41 JDK 1.7.0_79 ...apache http server与tomcat容器的整合集成,使得服务器同时支持PHP和Java。

    apache-tomcat-8.5.27.tar.gz

    在Linux环境下,这个版本的Tomcat可以无缝集成到各种Linux发行版中,如Ubuntu、CentOS或Debian。 部署Apache Tomcat 8.5.27的步骤如下: 1. **下载与解压**:首先从Apache官方网站下载"apache-tomcat-8.5.27.tar....

    CentOS7 环境下Tomcat和Nginx 安全配置操作手册

    在CentOS 7环境下搭建和配置Java应用服务器,如Tomcat和Nginx,是企业IT基础设施中的常见任务。这个过程涉及到多个步骤,包括安装必要的软件、配置安全性和优化性能,确保服务稳定运行。以下是对标题和描述中所述...

    Apache2.2和Tomcat7集成负载均衡(软件和教程)

    3. **Apache与Tomcat集成**: - 配置虚拟主机:在Apache的httpd.conf或单独的vhosts.conf文件中,创建一个虚拟主机,指定其DocumentRoot为Tomcat的webapps目录。 - 设置代理:使用`ProxyPass`和`ProxyPassReverse`...

    基于CentOS 7.6 配置Nginx + Tomcat

    在本篇文章中,作者介绍了如何在CentOS 7.6上配置Nginx和Tomcat,使得Nginx可以作为反向代理服务器将不同路径的HTTP请求转发给不同的Tomcat实例。这种方式可以用来部署多个Web应用,同时还可以通过Nginx进行负载均衡...

    apache-tomcat-7.0.54.zip

    在Linux环境下,配置和运行Apache Tomcat对于开发和部署基于Java的Web应用至关重要。 首先,我们需要了解Linux操作系统的基本概念,它是Unix-like的开源操作系统,被广泛应用于服务器领域。在Linux上安装Apache ...

    apache-tomcat-8.5.51.tar.gz

    接下来,我们来看看在CentOS或Redhat上安装和配置Tomcat的步骤: 1. **解压文件**:首先,你需要在Linux服务器上解压下载的tar.gz文件: ``` tar -zxvf apache-tomcat-8.5.51.tar.gz ``` 2. **移动到指定目录**...

    linux+apache+tomcat+java配置文件.rar

    这个“linux+apache+tomcat+java配置文件.rar”压缩包很可能是为了帮助用户搭建和配置这样一个环境而准备的。下面,我们将详细探讨这些组件以及它们之间的配置要点。 1. Linux:作为开源的操作系统,Linux是许多...

    Apache+tomcat脚本快速安装(最新版本)

    Apache和Tomcat是两个在Web开发中常用的开源软件。Apache是一个强大的HTTP服务器,而Tomcat则是Java Servlet和JavaServer Pages(JSP)的容器。它们经常一起使用,以提供高效且灵活的Web服务。本文将详细讲解如何...

    apache+https+tomcat.rar

    本教程将详细讲解如何在Linux和Windows操作系统上利用Apache HTTP Server与Tomcat集成,并配置HTTPS来实现多站点安全访问。 Apache HTTP Server是世界上最流行的Web服务器软件之一,而Tomcat是一款开源的Servlet...

    centos6.5 64位系统集成nginx+3个tomcat文档

    ### CentOS 6.5 64位系统集成Nginx + 3个Tomcat文档 #### 背景概述 本文档旨在详细介绍如何在CentOS 6.5 64位系统上部署Nginx与三个Tomcat实例,并实现基本的负载均衡功能。通过这种方式,可以有效地提高Web应用的...

    centos nginx安装及和tomcat整合

    【标题】:“CentOS上Nginx的安装与Tomcat集成” 在Linux系统,特别是CentOS上,Nginx和Tomcat是常见的Web服务器组合。Nginx以其高性能、低资源消耗著称,通常作为前端代理服务器,负责静态资源处理和反向代理,而...

    Linux中Apache+Tomcat+JK实现负载均衡和群集的完整过程

    在完成Apache、Tomcat和JK的安装和配置后,需要在Apache的httpd.conf中加载mod_jk模块,并配置JK模块的全局设置和worker定义。同时,Tomcat的server.xml也需要修改,添加AJP监听器,使Tomcat能够接受来自Apache的AJP...

    centos里tomcat自动安装xrebel

    在Linux系统,特别是CentOS中,安装和配置Tomcat服务器是一项常见的任务,而XRebel是一款强大的性能监控工具,能够帮助开发者实时查看应用程序的性能,包括数据库查询、HTTP请求等。本文将详细介绍如何在CentOS中...

    Jenkins+Gradle+Git+Centos 实现android持续集成、打包

    通过上述步骤,我们可以使用Jenkins、Gradle、Git 和 CentOS 实现Android项目的持续集成和自动化打包。这种方式不仅提高了开发效率,还保证了代码的质量和项目的稳定性。对于Android开发者来说,这是一种非常实用且...

    tomcat+memcached依赖包(centos)

    2. **下载和安装Tomcat**:从Apache官方网站获取最新版本的Tomcat tarball,然后解压并移动到合适的位置,例如`/opt/tomcat`。接着设置环境变量,如`CATALINA_HOME`,并创建启动和停止脚本。 3. **配置Tomcat**:...

    Apache2.2以上版本与Tomcat整合配置及负载均衡实现

    下面是实现2个tomcat实现负载均衡,如果只有一个则可删除一个 apache2.2以上版本,无需使用jk_mod来集成tomcat,直接使用ajp,很方便。 修改apache配置文件httpd.conf 启用mod_proxy_ajp 代码如下: #LoadModule ...

    tomcat php 简单配置

    总结来说,"Tomcat PHP简单配置"涉及到了服务器环境的搭建、软件组件的安装和配置、以及网络通信的设置,目的是使Apache Tomcat能够与PHP良好地协同工作,从而在Java平台上运行PHP应用。这是一项技术性较强的任务,...

Global site tag (gtag.js) - Google Analytics