huiselele 发表于 2018-11-21 11:13:04

Apache加载proxy、proxy_ajp、proxy_balancer

  由于某些原因,apache的一些模块在最初安装时未能包含进去,在之后又不能重新安装apache,这时就需要在不重新编译apache的情况下新增编译模块,可采用以下方法,举例说明:
  我的apache之前忘了configure入proxy模块,此时可进入到apache的原安装文件的modules目录(源代码安装),
  之前的apache安装在/usr/local/apache2/下,则可依次执行一下命令:
  cd/usr/local/src/httpd-2.2.4/modules
  cd proxy
  /usr/local/apache2/bin/apxs -c -n -imod_proxy_ajp.c mod_proxy_balancer.c mod_proxy_connect.cmod_proxy.c mod_proxy_http.c proxy_util.c
  /usr/local/apache2/bin/apxs -c -n -i mod_proxy_connect.lo mod_proxy_balancer.lo mod_proxy_ajp.lo mod_proxy.lo proxy_util.lo
  此时在 .libs目录下可看到对应的各个so文件,cp到apache的modules目录下就可在http.conf文件中配置LoadModule了,如:
  LoadModule proxy_module      modules/mod_proxy.so
  LoadModule proxy_http_module      modules/mod_proxy_http.so
  最近发现一个更快捷的办法,会自动加入module配置到http.conf文件中:
  1. 进入apache源代码的modules/proxy目录
  2. 运行如下命令自动编译、安装和修改httpd.conf文件,激活mod_proxy模块:
  apachepath/bin/apxs -c -i -a mod_proxy.c proxy_util.c
  apachepath/bin/apxs -c -i -a mod_proxy_http.c proxy_util.c
  选项说明:
  -c 执行编译操作
  -i 安装操作,安装一个或多个动态共享对象到服务器的modules目录
  -a 自动增加一个LoadModule行到httpd.conf文件,以激活此模块,若此行存在则启用之
  -A 与-a类似,但是它增加的LoadModule行前有井号前缀(#)
  -e 需要执行编辑操作,可与-a和-A选项配合使用,与-i操作类似,修改httpd.conf文件,但并不安装此模块
  3. 重启apache。
  本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/paulluo0739/archive/2009/05/15/4189693.aspx
  按照以上安装可能会出现下面错误提示
  # /usr/local/apache2/bin/apachectl restart
  httpd:Syntax error on line 64 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_proxy_ajp.so into server: /usr/local/apache2/modules/mod_proxy_ajp.so: undefined symbol: ajp_send_header
  # /usr/local/apache2/bin/apachectl start
  httpd:Syntax error on line 60 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_proxy.so into server: /usr/local/apache2/modules/mod_proxy.so: undefined symbol: ajp_send_header
  安装可以参考如下操作
  # /usr/local/apache2/bin/apxs -c -i -a mod_proxy.c proxy_util.c
  # /usr/local/apache2/bin/apxs -c -i -a mod_proxy_ajp.c ajp*.c
  #/usr/local/apache2/bin/apxs -c -i -a mod_proxy_balancer.c mod_proxy_connect.c mod_proxy_http.c
  # ls
  ajp.h         ajp_msg.slo      mod_proxy_ajp.o         mod_proxy_connect.slomod_proxy.slo
  ajp_header.c    ajp_utils.c      mod_proxy_ajp.slo       mod_proxy.dsp          NWGNUmakefile
  ajp_header.h    ajp_utils.lo       mod_proxy_balancer.c    mod_proxy_ftp.c      NWGNUproxy
  ajp_header.lo   ajp_utils.o      mod_proxy_balancer.dspmod_proxy_ftp.dsp      NWGNUproxyajp
  ajp_header.o    ajp_utils.slo      mod_proxy_balancer.la   mod_proxy.h            NWGNUproxybalancer
  ajp_header.sloCHANGES            mod_proxy_balancer.lo   mod_proxy_http.c       NWGNUproxycon
  ajp_link.c      config.m4          mod_proxy_balancer.o    mod_proxy_http.dsp   NWGNUproxyftp
  ajp_link.lo   libproxy.exp       mod_proxy_balancer.slomod_proxy_http.lo      NWGNUproxyhtp
  ajp_link.o      Makefile.in      mod_proxy.c             mod_proxy_http.o       proxy_util.c
  ajp_link.slo    mod_proxy_ajp.c    mod_proxy_connect.c   mod_proxy_http.slo   proxy_util.lo
  ajp_msg.c       mod_proxy_ajp.dspmod_proxy_connect.dsp   mod_proxy.la         proxy_util.o
  ajp_msg.lo      mod_proxy_ajp.la   mod_proxy_connect.lo    mod_proxy.lo         proxy_util.slo
  ajp_msg.o       mod_proxy_ajp.lo   mod_proxy_connect.o   mod_proxy.o
  #
  出错原因应该是少了# /usr/local/apache2/bin/apxs -c -i -a mod_proxy_ajp.c ajp*.c 中的 ajp*.c
  缺少相关联的函数库文件;
  原文链接:http://blog.163.com/herod_xiao/blog/static/87188399201061252952280/

页: [1]
查看完整版本: Apache加载proxy、proxy_ajp、proxy_balancer