CentOs vhost 显示默认 apache 页面

CentOs vhost 显示默认 apache 页面

我使用的是 CentOs 6.2。我想在此服务器上托管 1 个网站。我在 httpd.conf 中创建了一个 vhost。您可以在下面看到设置。

问题是,当我进入域时,我得到的是 apache 默认页面。我已重新启动 httpd 守护进程。有人知道我可能做错了什么吗?

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin helpdesk@***.nl
    DocumentRoot /var/website
    ServerName ***.nl
    #ServerAlias www.***.nl
    ErrorLog logs/***.nl-error_log
    CustomLog logs/***.nl-access_log common
</VirtualHost>

编辑:我检查了日志:访问日志:

77.160.172.88 - - [27/Nov/2012:20:37:10 +0100] "GET / HTTP/1.1" 403 5039
77.160.172.88 - - [27/Nov/2012:20:37:11 +0100] "GET /favicon.ico HTTP/1.1" 403 295

错误日志:

[Mon Nov 26 22:37:46 2012] [error] [client 77.160.172.88] (13)Permission denied: access to /index.php denied
[Mon Nov 26 22:37:46 2012] [error] [client 77.160.172.88] (13)Permission denied: access to /index.html denied
[Mon Nov 26 22:37:46 2012] [error] [client 77.160.172.88] (13)Permission denied: access to /index.html.var denied
[Mon Nov 26 22:37:46 2012] [error] [client 77.160.172.88] (13)Permission denied: access to /favicon.ico denied

权限:

[root@srv2 website]# ls -la
total 17536
drwx------ 10 kvdp kvdp     4096 Nov 26 23:01 .
drwxr-xr-x 20 root root     4096 Nov 26 22:30 ..
-rw-r--r--  1 kvdp kvdp       37 Nov 26 22:31 35a12fb7ab5a.html
-rw-r--r--  1 kvdp kvdp      515 Nov 26 22:31 400.shtml
-rw-r--r--  1 kvdp kvdp      515 Nov 26 22:31 401.shtml
-rw-r--r--  1 kvdp kvdp      515 Nov 26 22:31 403.shtml
-rw-r--r--  1 kvdp kvdp      515 Nov 26 22:31 404.shtml
-rw-r--r--  1 kvdp kvdp      515 Nov 26 22:31 500.shtml
-rw-r--r--  1 kvdp kvdp 17816103 Nov 26 22:41 admin_kvdp.sql
drw-r--r--  2 kvdp kvdp     4096 Nov 26 22:31 _api
drw-r--r-- 13 kvdp kvdp     4096 Nov 26 22:33 beheer
drw-r--r--  2 kvdp kvdp     4096 Nov 26 22:33 cgi-bin
drw-r--r--  2 kvdp kvdp     4096 Nov 26 22:31 _config
-rw-r--r--  1 kvdp kvdp      728 Nov 26 22:31 controller.inc.php
-rw-r--r--  1 kvdp kvdp      813 Nov 26 22:31 controller.view.inc.php
-rw-r--r--  1 kvdp kvdp       53 Nov 26 22:31 google3f6160378ab03426.html
-rw-r--r--  1 kvdp kvdp      611 Nov 26 22:31 .htaccess
-rw-r--r--  1 kvdp kvdp     1978 Nov 26 22:31 index.php
drw-r--r--  3 kvdp kvdp     4096 Nov 26 22:31 _libs
drw-r--r--  6 kvdp kvdp     4096 Nov 26 22:31 _models
-rw-r--r--  1 kvdp kvdp      232 Nov 26 22:31 robots.txt
-rw-r--r--  1 kvdp kvdp       11 Nov 26 22:31 test.php
drw-r--r--  4 kvdp kvdp     4096 Nov 26 22:35 upload
drw-r--r--  5 kvdp kvdp     4096 Nov 26 22:31 _views

答案1

首先检查运行 Apache 的用户帐户是否有权访问您的website文件夹(它还需要遍历路径中其上方的所有文件夹的访问权限):

ps aux | grep httpd

您应该看到类似这样的行:

apache    1336  0.0  1.1 282772  6008 ?        S    03:24   0:00 /usr/sbin/httpd
apache    1338  0.0  1.1 282772  6008 ?        S    03:24   0:00 /usr/sbin/httpd

第一列是需要访问您的文件夹的用户帐户。

如果一切正常,请检查您是否正在运行 SELinux。如果是,您的/var/website目录可能仍处于default_t安全上下文中。使用以下命令进行检查:

ls -Z /var/website

你可能会看到类似这样的内容:

drwxr-xr-x  root root user_u:object_r:default_t        website

如果是这样,您可以使用以下命令更改安全上下文chcon

chcon -Rv --type=httpd_sys_content_t /var/website

或者,您可以禁用 Apache 的 SELinux(以 root 身份):

  1. 编辑/etc/selinux/targeted/booleans并设置httpd_disable_trans为 1。
  2. 运行setsebool httpd_disable_trans 1以确保为当前会话设置了布尔值。
  3. 使用 重新启动 apache service httpd restart

或者,如果这是一个开发服务器并且您不想运行 SELinux,您可以通过将其设置为“宽容”模式(以 root 身份)来有效地禁用它:

  1. 编辑/etc/selinux/config并设置SELINUX等于permissive
  2. 重启。
  3. 运行getenforce以验证 SELinux 是否处于宽容模式。

就你的情况而言,问题出在这一行:

[root@srv2 website]# ls -la
total 17536
drwx------ 10 kvdp kvdp     4096 Nov 26 23:01 .

这意味着只有您的用户帐户 ( kvdp) 才能访问该文件夹。在您的/var/website文件夹中运行以下命令来纠正这种情况:

chmod go+rx .

答案2

这里有几个潜在的问题。就像 Adam 所说的那样,您可能只需要 /var/website 中的一个 index.html 文件。由于这不是默认目录,您可能还需要检查该目录的权限(如果 httpd 进程无法读取其中的文件,您将收到错误页面)。我能想到的最后一件事是,您已将 SELinux 置于强制模式,并且该目录未标有正确的上下文。

答案3

您已经安装了 php5,对吧?如果没有,Apache 将无法提供 PHP 页面,您将返回默认的“欢迎使用 Apache!”页面。

我很久没用过 CentOS 了,所以有点生疏。难道 Web 文件不应该归 Web 服务器用户所有,或者至少应该由 apache 用户读取吗?如果 Web 服务器无法读取文件,那么这也许可以解释您所看到的行为。从您的日志来看,情况确实如此。Web 服务器无法访问您的 Web 目录。

相关内容