Apache HTTP安装故障排除指南

安装Apache HTTP服务器总是很有趣。几天前,我在CentOS虚拟机上遇到了多个错误

我觉得把它们整理起来作为参考可能会有帮助。

找不到APR

[root@chandan httpd-2.4.25]# ./configure --enable-ssl
checking for chosen layout... Apache
checking for working mkdir -p... yes
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
configure: 
configure: 配置Apache Portable Runtime库...
configure: 
checking for APR... no
configure: error: 找不到APR。请阅读文档。
[root@chandan httpd-2.4.25]#

APR代表“Apache Portable Runtime”,在编译源代码时需要。如果你和我处于同样的情况,以下方法将对你有所帮助。

首先,你需要安装APR。

  • 使用wget下载最新版本的APR
wget https://www-eu.apache.org/dist/apr/apr-1.6.3.tar.gz .
  • 解压下载的文件
gunzip -c apr-1.6.3.tar.gz | tar xvf -
  • 它会创建一个名为“apr-1.6.3”的新文件夹
  • 进入该文件夹并使用configure命令进行编译
./configure

这将需要几秒钟的时间,一旦完成,你将得到一个提示(确保没有错误)。

  • 最后一步是使用make命令进行安装
make
make install

完成后,我尝试安装Apache,又遇到了另一个错误。

找不到APR-util

[root@chandan httpd-2.4.25]# ./configure --enable-ssl --enable-so
checking for chosen layout... Apache
checking for working mkdir -p... yes
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
configure: 
configure: 配置Apache Portable Runtime库...
configure: 
checking for APR... yes
  setting CC to "gcc"
  setting CPP to "gcc -E"
  setting CFLAGS to " -g -O2 -pthread"
  setting CPPFLAGS to " -DLINUX -D_REENTRANT -D_GNU_SOURCE"
  setting LDFLAGS to " "
configure: 
configure: 配置Apache Portable Runtime Utility库...
configure: 
checking for APR-util... no
configure: error: 找不到APR-util。请阅读文档。
[root@chandan httpd-2.4.25]#

如果你也遇到了“找不到APR-util”错误,那么你需要安装以下内容

  • 下载最新的APR-util源代码
wget https://www-eu.apache.org/dist/apr/apr-util-1.6.1.tar.gz .
  • 解压下载的gz文件
gunzip -c apr-util-1.6.1.tar.gz | tar xvf -
  • 进入新创建的文件夹“apr-util-1.6.1”,并使用以下命令进行安装
./configure --with-apr=/usr/local/apr/bin/apr-1-config
make
make install

再次尝试安装Apache,又遇到了另一个错误。

找不到pcre-config的libpcre

我得到了以下错误。

checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for gcc option to accept ISO C99... -std=gnu99
checking for pcre-config... false
configure: error: 找不到pcre-config的libpcre。需要PCRE,可以从http://pcre.org/获取

PCRE代表Perl兼容正则表达式,这个错误有一个简单的解决方案。您只需安装pcre-devel软件包。

yum install pcre-devel

还没有结束,下一次尝试中出现了与OpenSSL相关的另一个错误。

OpenSSL版本太旧

检查是否启用mod_slotmem_plain...否
检查是否启用mod_ssl...检查依赖项
检查OpenSSL...检查用户提供的OpenSSL基目录... ./configure: line 25426: cd: /usr/bin/openssl: 不是目录
/root/httpd-2.4.25
  添加"-I/root/httpd-2.4.25/include"到CPPFLAGS
  将MOD_CFLAGS设置为"-I/root/httpd-2.4.25/include"
  将ab_CFLAGS设置为"-I/root/httpd-2.4.25/include"
  添加"-L/root/httpd-2.4.25/lib"到LDFLAGS
  将MOD_LDFLAGS设置为"-L/root/httpd-2.4.25/lib"
检查OpenSSL版本是否>= 0.9.8a...失败
configure: 警告: OpenSSL版本太旧
否
检查是否启用mod_ssl... configure: 错误: 由于先决条件失败,无法构建mod_ssl
[root@chandan httpd-2.4.25]#

首先要确保安装了最新版本的OpenSSL,这在我的情况下是必需的,所以我需要安装开发包,并且没有问题。

yum install openssl-devel

xml/apr_xml.c:35:19: 致命错误: expat.h: 没有那个文件或目录

在编译APR时,我遇到了这个错误。

[root@instance-1 apr-util-1.6.1]# make
make[1]: 进入目录“/opt/temp/apr-util-1.6.1”
/bin/sh /usr/local/apr/build-1/libtool --silent --mode=compile gcc -g -O2 -pthread   -DHAVE_CONFIG_H  -DLINUX -D_REENTRANT -D_GNU_SOURCE   -I/opt/temp/apr-util-1.6.1/include -I/opt/temp/apr-util-1.6.1/include/private  -I/usr/local/apr/include/apr-1    -o xml/apr_xml.lo -c xml/apr_xml.c && touch xml/apr_xml.lo
xml/apr_xml.c:35:19: 致命错误: expat.h: 没有那个文件或目录
 #include 
                   ^
编译终止。
make[1]: *** [xml/apr_xml.lo] 错误 1

如果您遇到此错误,可以通过安装expat-devel软件包来解决。

yum install expat-devel

configure: 错误: 在$PATH中找不到可接受的C编译器

C编译器未找到是任何软件构建的典型问题,您可以通过安装编译器来解决此问题。

yum install gcc

nghttp2版本太旧

这是特定于您尝试install Apache with HTTP/2时的情况。您将收到以下错误。

检查是否启用mod_http2...检查依赖项
检查OpenSSL...(已缓存)是
  将MOD_LDFLAGS设置为“  -lssl -lcrypto -lrt -lcrypt -lpthread”
  将MOD_CFLAGS设置为“ ”
  将MOD_CPPFLAGS设置为“-DH2_OPENSSL”
检查nghttp2...检查用户提供的nghttp2基目录...没有
检查pkg-config...检查nghttp2版本是否>=1.2.1...失败
configure: 警告: nghttp2版本太旧
否
检查是否启用mod_http2...configure: 错误: 由于先决条件失败,无法构建mod_http2

如果是这样,您可以通过以下方式安装nghttp2来解决。

  • here下载nghttp2的最新版本
wget https://github.com/nghttp2/nghttp2/releases/download/v1.37.0/nghttp2-1.37.0.tar.gz
  • 解压下载的文件
tar -xvf nghttp2-1.37.0.tar.gz
  • 它将创建一个新文件夹,进入其中并运行以下命令
./configure
make
make install

完成后没有错误,再次运行带有HTTP2的Apache源代码构建。应该没问题。

最后,我成功安装了Apache。如果您有兴趣了解Apache HTTP服务器管理,请查看此online course

类似文章