2

我的 Apache Web 服务器的安装路径是/usr/local/apache2.

我使用apachectl start命令启动服务器,当我输入localhost我的 Web 浏览器时,它会显示一个由 CentOS 提供支持的 Apache 2 测试页面,而不是index.htmlin /usr/local/apache2/htdocs. 有谁知道这其中的原因?

我的系统中还有两个conf.d文件。一个在/etc/httpd/conf,另一个在/usr/local/apache2/conf(我安装 Apache 的地方)。这有什么原因吗?请帮忙

4

1 回答 1

5

首先,我猜你已经从源代码构建了 apache - 这样做有什么具体原因吗?我通常会发现,如果您使用标准分发包或使用其他 repos 中的新包(如果您需要更高版本),系统会更易于管理。

如果您没有特别需要使用本地构建的 apache,我建议您删除它,然后使用普通的 CentOS 存储库安装 apache。

接下来(或者首先,如果您使用本地构建的 apache),运行:httpd -V

例如,我的一个系统返回:

[me@here ~]# httpd -V
Server version: Apache/2.2.3
Server built:   Jun  6 2012 10:00:36
Server's Module Magic Number: 20051115:3
Server loaded:  APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture:   32-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

输出会告诉你它真正的配置文件在哪里,在这种情况下是 /etc/httpd/conf/httpd.conf - 这样你就会知道哪个配置是实际使用的。

一旦您知道正在使用哪些配置文件,您就可以检查它们以查看文档根目录的位置 - 它可能在/var/www/html/而不是/usr/local/apache2/htdocs或几乎在任何地方。

当您知道文档根目录在哪里时,请检查并确保 apache 可以读取文件和目录(或者任何运行 apache 的用户 - 第一列ps aux | grep httpd会告诉您)

接下来检查日志文件,通常/var/log/httpd/error_log还有系统登录/var/log/messages/var/log/secure

最后,如果您运行的是启用了 SELinux 的最新 CentOS,并且您自己构建了 apache,那么您几乎肯定会陷入痛苦的世界。您可以尝试getenforce查看 SELinux 是否处于活动状态,并setenforce 0禁用它(用于测试)。

于 2013-05-09T05:42:57.767 回答