Apache和Tomcat整合

    整合Apache和Tomcat可以提升对静态文件的处理性能、利用 Web 服务器来做负载均衡以及容错、无缝的升级应用程序。

    三种方法:

      1. 利用apache自带的mod_proxy模块使用代理技术连接Tomcat。在配置之前确保是否使用的是apache的版本是2.2.x。因为apache2.2.x对mod_proxy这个模块进行了重写,大大增强了其功能和其稳定性。http_proxy模式是基于HTTP协议的代理。因此要求Tomcat必须提供HTTP服务,换句话说必须是启用Tomcat的HTTP Connector。
      2. 利用ajp_proxy 连接方式其实和http_proxy 方式是一样,但是由于mod_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 只在apache2.2.x中才有。如果是采用http_proxy的方式则需要加载mod_proxy.so 和mod_proxy_http.so;如果是采用ajp_proxy的连接方式则需要加载mod_proxy.so和mod_proxy_ajp.so 这两个模块
      3. 利用jk(mod_jk的模块),该方法是最常见的方式。jk本身用两个版本分别是1和2,其中jk2已经被抛弃了。jk是通过AJP协议与Tomcat服务器进行通讯的,Tomcat默认的AJP Connector的端口是8009。jk本身提供一个监控集群管理的页面Jkstatus,通过jkstatus 可以监控jk的工作状态及对到tomcat的连接进行设置。

    jk原理:

    apache和tomcat之间通信通过worker进行(由Tomcat使用Server.xml文件中Connector的标签来定义其端口和协议),通过mod_jk的模块和tomcat通信。整个过程其实就是让apache的httpd.conf文件调用mod_jk.conf,mod_jk.conf调用workers.properties,最后配置虚拟主机。

    文件说明

    mod_jk.conf:主要定义mod_jk模块的位置以及mod_jk模块的连接日志设置,还有定义worker.properties文件的位置。

    worker.properties:定义worker的参数,主要是连接tomcat主机的地址和端口信息。如果Tomcat与apache不在同一台机器上,或者需要做多台机器上tomcat的负载均衡只需要更改workers.properties文件中的相应定义即可。

    安装apache、tomcat、jdk

    参考:《OneinStack

    安装mod_jk.so模块

    1. tar xzf tomcat-connectors-1.2.30-src.tar.gz
    2. cd tomcat-connectors-1.2.30-src/native/
    3. ./configure --with-apxs=/usr/local/apache/bin/apxs
    4. make
    5. cd apache-2.0
    6. /usr/local/apache/bin/apxs -n jk -i mod_jk.so
    7. ll /usr/local/apache/modules/mod_jk.so

    修改配置文件

    1. if [ "$(hostname -i)" == "127.0.0.1" ];then
    2.     echo "OK"
    3. else
    4.     sed -i "s/127.0.0.1.*$/127.0.0.1       `hostname`  localhost.localdomain localhost/g" /etc/hosts
    5. fi
    6. sed -i 's/User daemon/User www/g' /usr/local/apache/conf/httpd.conf
    7. sed -i 's/Group daemon/User www/g' /usr/local/apache/conf/httpd.conf
    8. sed -i 's/#ServerName www.example.com:80/ServerName 127.0.0.1:80/g' /usr/local/apache/conf/httpd.conf
    9. cat >> /usr/local/apache/conf/httpd.conf <<EOF
    10. Include conf/extra/httpd-vhosts.conf
    11. LoadModule jk_module  modules/mod_jk.so
    12. Include conf/mod_jk.conf
    13. EOF
    14. cat > /usr/local/apache/conf/extra/httpd-vhosts.conf <<EOF
    15. NameVirtualHost *:80
    16. <VirtualHost *:80>
    17.     DocumentRoot "/data/xxx"
    18.     ServerName 192.168.1.110
    19.     JkMount /* worker1
    20.     JkUnMount /images/* worker1
    21.     JkUnMount /img/* worker1
    22.     JkUnMount /js/* worker1
    23.     JkUnMount /css/* worker1
    24.     ErrorLog "/usr/local/apache/logs/xxx_error.log"
    25.     CustomLog "/usr/local/apache/logs/xxx_access.log" common
    26. <Directory "/data/xxx">
    27.     Options FollowSymLinks
    28.     AllowOverride All
    29.     Order allow,deny
    30.     Allow from all
    31.     DirectoryIndex index.jsp
    32.    </Directory>
    33. </VirtualHost>
    34. EOF
    35. cat > /usr/local/apache/conf/mod_jk.conf << EOF
    36. JkWorkersFile /usr/local/apache/conf/workers.properties
    37. # Where to put jk logs
    38. JkLogFile /usr/local/apache/logs/mod_jk.log
    39. # Set the jk log level [debug/error/info]
    40. JkLogLevel info
    41. # Select the log format
    42. JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
    43. # JkOptions indicate to send SSL KEY SIZE,
    44. JkOptions  +ForwardKeySize +ForwardURICompat -ForwardDirectories
    45. # JkRequestLogFormat set the request format
    46. JkRequestLogFormat "%w %V %T"
    47. EOF
    48. cat > /usr/local/apache/conf/workers.properties << EOF
    49. # Defining a worker named worker1 and of type ajp13
    50. worker.list=worker1
    51. # Set properties for worker1
    52. worker.worker1.type=ajp13
    53. worker.worker1.host=localhost
    54. worker.worker1.port=8009
    55. worker.worker1.lbfactor=50
    56. worker.worker1.cachesize=10
    57. worker.worker1.cache_timeout=600
    58. worker.worker1.socket_keepalive=1
    59. worker.worker1.socket_timeout=300
    60. EOF
    61. vi /usr/local/tomcat/conf/server.xml
    62. <Connector port="8009"
    63.                enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
    64. <Context path="" docBase="/data/xxx" debug="0" reloadable="true" crossContext="true"/>
    • 本文由 发表于 2012-03-05
    • 转载请务必保留本文链接:https://linuxeye.com/102.html
    Apache mod_deflate压缩模块bug解决方法 Linux

    Apache mod_deflate压缩模块bug解决方法

    Apahce使用mod_deflate压缩模块,客户端(如浏览器)每次都会去服务器取数据(ps:Expires没有过期等情况下),即http请求头的状态码永远为200,而不会访回 304 Not Mo...
    Tomcat日志切割(logrotate) Linux

    Tomcat日志切割(logrotate)

    logrotate是个强大的系统软件,它对日志文件有着一套完整的操作模式,譬如:转储、邮件和压缩等,并且默认logrotate加到cron(/etc/cron.daily/logrotate)作为每日...
    Tomcat启动脚本 脚本

    Tomcat启动脚本

    记录一个比较好的tomcat启动脚本,截取《OneinStack》,修改如下两个参数即可用。 使用之前修改下面2个参数: #Location of JAVA_HOME (bin files) expo...
    匿名

    发表评论

    匿名网友