Apache HTTPD – 加载mod_jk模块时出现分段错误

我只是用我的Apache httpd 2.0.52安装设置mod_jk,但现在当我尝试启动Apache时,它有一个分段错误。 我已经检查过,我正在使用针对2.0.x编译的mod_jk。 我也证实了我给LoadModule的path是正确的,文件的权限和所有权与其余的模块是一样的。 当我从httpd.conf中删除mod_jk的“LoadModule”命令时,没有分段错误。

Apache的错误日志中没有显示。 我已经尝试使用service httpd restarthttpd这个模块重新启动服务器。

这些是strace httpd -X返回的最后几行:

 gettimeofday({1292100295, 434487}, NULL) = 0 socket(PF_INET6, SOCK_STREAM, IPPROTO_IP) = -1 EAFNOSUPPORT (Address family not supported by protocol) socket(PF_NETLINK, SOCK_RAW, 0) = 3 bind(3, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0 getsockname(3, {sa_family=AF_NETLINK, pid=22378, groups=00000000}, [12]) = 0 time(NULL) = 1292100295 sendto(3, "\24\0\0\0\26\0\1\3\307\342\3M\0\0\0\0\0\305\333\267", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20 recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"<\0\0\0\24\0\2\0\307\342\3MjW\0\0\2\10\200\376\1\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 664 recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\24\0\0\0\3\0\2\0\307\342\3MjW\0\0\0\0\0\0\1\0\0\0\10\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 20 close(3) = 0 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3 --- SIGSEGV (Segmentation fault) @ 0 (0) --- +++ killed by SIGSEGV +++ Process 22378 detached 

有没有人有类似的问题使用Apache 2.0.52 mod_jk? 我可能会尝试下载并build立Apache服务器和mod_jk的源代码,如果没有发现修复程序。

这是一个预编译的mod_jk,你发现了吗? 如果是这样的话,那么只要抓住mod_jk的最新源代码并编译它就足够简单了,我怀疑这是你的问题所在 – 我已经很多次针对供应商提供的(Red Hat)Apache编译mod_jk而没有segfaults。

确保安装了httpd-devel(Red Hat / CentOS)

将真正的JDK解压到某个path,如/usr/local/jdk1.6.0_18/

从tomcat.apache.org获取“tomcat-connectors”源代码并编译它:

 cd tomcat-connectors-1.2.28-src/native ./configure --with-apxs=/usr/sbin/apxs --with-java=/usr/local/jdk1.6.0_18 --enable-prefork make cp apache-2.0/mod_jk.so /etc/httpd/modules/ 

您的模块现在应该按预期工作。