[Linux]RHEL/CentOS6配置tomcat使用80端口,与httpd整合

一、背景

由于Apache Tomcat[1]和Apache Httpd[2]都属于非常常用的服务器软件,故不做过多介绍了。直接来配置背景。

今天接到任务要在一台CentOS6上面部署一个Tomcat工程,并使用80端口对外提供服务。为了保障系统整体的稳定性,我选择全部使用CentOS源中自带的软件包。

二、过程

首先,安装好tomcat。

sudo yum install tomcat6 -y

然后我尝试让tomcat6直接监听80端口,发现默认情况下,tomcat不能使用1024以下的端口(网上说,RHEL/CentOS中只有root用户启动的程序才可以直接监听1024以下的端口。)因此我尝试安装httpd并且配置两者的整合。

sudo yum install httpd -y

网上大多数配置Tomcat6/httpd整合的方法为使用mod_jk模块。而在RHEL/CentOS6中没有软件包提供mod_jk,而是提供了mod_proxy_ajp,因此,我使用mod_proxy_ajp方式进行配置。

sudo vim /etc/httpd/conf/httpd.conf 在大约195行处,找到LoadModule proxy_ajp_module modules/mod_proxy_ajp.so并取消注释。

在配置文件中添加

ProxyPass / ajp://localhost:8009/

ProxyPassReverse / ajp://localhost:8009/

ProxyVia On

其中,前两行是对代理的定义。这里我直接把http的根目录重定向到了tomcat[3]。第三行是在转发时向http头信息中添加Via信息,可以参见[4]。

然后修改Tomcat配置sudo vim /etc/tomcat6/server.xml 找到以下内容并取消注释,这样就实现了向/var/log/tomcat6目录下写访问记录信息。

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

prefix="localhost_access_log." suffix=".txt"

pattern="common" resolveHosts="false"/>

完成以上配置后,重启tomcat6和httpd服务。整个过程就结束了。

[1] http://tomcat.apache.org

[2] http://httpd.apache.org

[3] http://httpd.apache.org/docs/2.4/en/mod/mod_proxy_ajp.html

[4] http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxyvia