我使用的是 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 身份):
- 编辑
/etc/selinux/targeted/booleans
并设置httpd_disable_trans
为 1。 - 运行
setsebool httpd_disable_trans 1
以确保为当前会话设置了布尔值。 - 使用 重新启动 apache
service httpd restart
。
或者,如果这是一个开发服务器并且您不想运行 SELinux,您可以通过将其设置为“宽容”模式(以 root 身份)来有效地禁用它:
- 编辑
/etc/selinux/config
并设置SELINUX
等于permissive
。 - 重启。
- 运行
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 目录。