无法将 module/mod_proxy_wstunnel.so 加载到服务器中

Doe*_*oes 4 mod-proxy websocket apache2.4

最近我需要将 websocket 服务器与 apache2\xef\xbc\x8can 集成,我发现 apache2.4 已支持带有以下模块的 websocket:mod_proxy_wstunnel.\n http://httpd.apache.org/docs/2.4/mod/mod_proxy_wstunnel.html

\n\n

我自己编译了它们,但遇到了问题:

\n\n

httpd: Syntax error on line 122 of /usr/local/apache2/conf/httpd.conf: Cannot load modules/mod_proxy_wstunnel.so into server: /usr/local/apache2/modules/mod_proxy_wstunnel.so: undefined symbol: ap_proxy_release_connection

\n\n
    \n
  • 环境信息:
  • \n
  • 操作系统:centos 6.8
  • \n
  • php:php-7.0.10
  • \n
  • 阿帕奇:httpd-2.4.23
  • \n
\n\n

我的步骤是:

\n\n
    \n
  1. 下载源代码。\n\n
      \n
    • php7 github.com/php/php-src/releases/tag/php-7.0.10
    • \n
    • apache2.4 github.com/apache/httpd/releases/tag/2.4.23
    • \n
  2. \n
  3. 复制到我的工作区并 tar\xef\xbc\x8csay /home\n\n
      \n
    • shell> tar -xjf php-7.0.10.tar.bz2
    • \n
    • shell> tar -xjf httpd-2.4.23.tar.bz2
    • \n
  4. \n
  5. 安装 gcc : yum install gcc
  6. \n
  7. 编译 apache\n\n
      \n
    • 下 apr\xef\xbc\x9aapr-1.5.2.tar.gz apr-util-1.5.4.tar.gz
    • \n
    • 复制到/httpd-2.4.23/srclib
      \ntar -zvf apr-1.5.2.tar.gz tar -zvf apr-util-1.5.4.tar.gz
    • \n
    • 修改文件名:
      apr-1.5.2as apr
      apr-util-1.5.4asapr-util
    • \n
    • 安装 PCR
      \nyum install pcre-devel
    • \n
    • ./configure --enable-so --enable-http --enable-proxy --enable-proxy-http --with-included-apr --enable-proxy-wstunnel
    • \n
    • 制作 && 制作安装
    • \n
    • 设置 apache 服务器 ip\xef\xbc\x9a
      \nshell> vi /usr/local/apache2/conf/httpd.conf\n服务器名称 127.0.0.1
    • \n
  8. \n
  9. 编译 php\n\n
      \n
    • libxml2:
      yum 安装 libxml2-devel
    • \n
    • mkdir /usr/local/php7
    • \n
    • ./configure --prefix=/usr/local/php7 --with-mysqli --enable-mysqlnd --with-mysql-sock=/var/lib/mysql/mysql.sock --with-apxs2=/usr/本地/apache2/bin/apxs
    • \n
    • 制作 && 制作安装
    • \n
    • cp -v ./php.ini-生产 /usr/local/php7/lib/php.ini
    • \n
    • 配置httpd.conf
      \nshell> vi /usr/local/apache2/conf/httpd.conf
      \n<FilesMatch \\.php$>\nSetHandler application/x-httpd-php\n</FilesMatch>
    • \n
  10. \n
  11. enalbe mod_proxy_wstunnel\nshell> vi /usr/local/apache2/conf/httpd.conf
    \nLoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
  12. \n
\n\n

以上是我的步骤。然后我尝试启动我的 apache2 :

\n\n

/usr/local/apache2/bin/apachectl start

\n\n

出现以下错误:

\n\n

httpd: Syntax error on line 122 of /usr/local/apache2/conf/httpd.conf: Cannot load modules/mod_proxy_wstunnel.so into server: /usr/local/apache2/modules/mod_proxy_wstunnel.so: undefined symbol: ap_proxy_release_connection

\n\n

我用谷歌搜索了一下,但找不到一些有用的信息。

\n

小智 5

您需要加载 mod_proxy 以及 mod_proxy_wstunnel。如果您在没有 mod_proxy 的情况下加载底层代理模块 (http/fcgi/ajp/wstunnel),您将收到此错误。

因此,请检查您的配置并确保您有LoadModulemod_proxy 和 mod_proxy_wstunnel 的指令。

您还可以使用 的输出apachectl -M来检查 Apache 正在加载的模块。