一、背景
由于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