在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/
相关推荐
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。
在Linux环境下,这个版本的Tomcat可以无缝集成到各种Linux发行版中,如Ubuntu、CentOS或Debian。 部署Apache Tomcat 8.5.27的步骤如下: 1. **下载与解压**:首先从Apache官方网站下载"apache-tomcat-8.5.27.tar....
在CentOS 7环境下搭建和配置Java应用服务器,如Tomcat和Nginx,是企业IT基础设施中的常见任务。这个过程涉及到多个步骤,包括安装必要的软件、配置安全性和优化性能,确保服务稳定运行。以下是对标题和描述中所述...
3. **Apache与Tomcat集成**: - 配置虚拟主机:在Apache的httpd.conf或单独的vhosts.conf文件中,创建一个虚拟主机,指定其DocumentRoot为Tomcat的webapps目录。 - 设置代理:使用`ProxyPass`和`ProxyPassReverse`...
在本篇文章中,作者介绍了如何在CentOS 7.6上配置Nginx和Tomcat,使得Nginx可以作为反向代理服务器将不同路径的HTTP请求转发给不同的Tomcat实例。这种方式可以用来部署多个Web应用,同时还可以通过Nginx进行负载均衡...
在Linux环境下,配置和运行Apache Tomcat对于开发和部署基于Java的Web应用至关重要。 首先,我们需要了解Linux操作系统的基本概念,它是Unix-like的开源操作系统,被广泛应用于服务器领域。在Linux上安装Apache ...
接下来,我们来看看在CentOS或Redhat上安装和配置Tomcat的步骤: 1. **解压文件**:首先,你需要在Linux服务器上解压下载的tar.gz文件: ``` tar -zxvf apache-tomcat-8.5.51.tar.gz ``` 2. **移动到指定目录**...
这个“linux+apache+tomcat+java配置文件.rar”压缩包很可能是为了帮助用户搭建和配置这样一个环境而准备的。下面,我们将详细探讨这些组件以及它们之间的配置要点。 1. Linux:作为开源的操作系统,Linux是许多...
Apache和Tomcat是两个在Web开发中常用的开源软件。Apache是一个强大的HTTP服务器,而Tomcat则是Java Servlet和JavaServer Pages(JSP)的容器。它们经常一起使用,以提供高效且灵活的Web服务。本文将详细讲解如何...
本教程将详细讲解如何在Linux和Windows操作系统上利用Apache HTTP Server与Tomcat集成,并配置HTTPS来实现多站点安全访问。 Apache HTTP Server是世界上最流行的Web服务器软件之一,而Tomcat是一款开源的Servlet...
### CentOS 6.5 64位系统集成Nginx + 3个Tomcat文档 #### 背景概述 本文档旨在详细介绍如何在CentOS 6.5 64位系统上部署Nginx与三个Tomcat实例,并实现基本的负载均衡功能。通过这种方式,可以有效地提高Web应用的...
【标题】:“CentOS上Nginx的安装与Tomcat集成” 在Linux系统,特别是CentOS上,Nginx和Tomcat是常见的Web服务器组合。Nginx以其高性能、低资源消耗著称,通常作为前端代理服务器,负责静态资源处理和反向代理,而...
在完成Apache、Tomcat和JK的安装和配置后,需要在Apache的httpd.conf中加载mod_jk模块,并配置JK模块的全局设置和worker定义。同时,Tomcat的server.xml也需要修改,添加AJP监听器,使Tomcat能够接受来自Apache的AJP...
在Linux系统,特别是CentOS中,安装和配置Tomcat服务器是一项常见的任务,而XRebel是一款强大的性能监控工具,能够帮助开发者实时查看应用程序的性能,包括数据库查询、HTTP请求等。本文将详细介绍如何在CentOS中...
通过上述步骤,我们可以使用Jenkins、Gradle、Git 和 CentOS 实现Android项目的持续集成和自动化打包。这种方式不仅提高了开发效率,还保证了代码的质量和项目的稳定性。对于Android开发者来说,这是一种非常实用且...
2. **下载和安装Tomcat**:从Apache官方网站获取最新版本的Tomcat tarball,然后解压并移动到合适的位置,例如`/opt/tomcat`。接着设置环境变量,如`CATALINA_HOME`,并创建启动和停止脚本。 3. **配置Tomcat**:...
下面是实现2个tomcat实现负载均衡,如果只有一个则可删除一个 apache2.2以上版本,无需使用jk_mod来集成tomcat,直接使用ajp,很方便。 修改apache配置文件httpd.conf 启用mod_proxy_ajp 代码如下: #LoadModule ...
总结来说,"Tomcat PHP简单配置"涉及到了服务器环境的搭建、软件组件的安装和配置、以及网络通信的设置,目的是使Apache Tomcat能够与PHP良好地协同工作,从而在Java平台上运行PHP应用。这是一项技术性较强的任务,...