在Ubuntu 14.04上安装Apache 2.4.7

5
我有一个问题。 在 Ubuntu 上安装 Apache 2.4.7。 我在目录 /etc/apache2/sites-available/ 中创建了一个文件。
<VirtualHost ooo.net:80>

ServerName ooo.net
ServerAlias www.ooo.net
ServerAdmin webmaster@ooo.net
DocumentRoot /home/user/ooo/

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

在主机中

127.0.0.1   ooo.net
127.0.1.1   pc

我访问了ooo.net并看到以下结果:

禁止访问 您没有权限访问此服务器上的/。 Apache/2.4.7 (Ubuntu) 服务器在本地主机端口80。

我做错了什么?

错误日志 -

[Sat Apr 12 19:30:57.276525 2014] [core:error] [pid 1213:tid 140219565360896] (13)Permission denied: [client 127.0.0.1:37136] AH00035: access to / denied (filesystem path '/home/user/ooo') because search permissions are missing on a component of the path
[Sat Apr 12 19:30:57.539816 2014] [core:error] [pid 1213:tid 140219556968192] (13)Permission denied: [client 127.0.0.1:37136] AH00035: access to /favicon.ico denied (filesystem path '/home/user/ooo') because search permissions are missing on a component of the path

access.log -

127.0.0.1 - - [12/Apr/2014:19:30:57 +0400] "GET / HTTP/1.1" 403 495 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/33.0.1750.152 Chrome/33.0.1750.152 Safari/537.36"
127.0.0.1 - - [12/Apr/2014:19:30:57 +0400] "GET /favicon.ico HTTP/1.1" 403 505 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/33.0.1750.152 Chrome/33.0.1750.152 Safari/537.36"

第一次回答后使用 ls -ltr -


drwxr-sr-x 2 user www-data   4096 апр.  10 20:41 errors
-rwxr-sr-x 1 user www-data   9062 апр.  10 20:41 about.htm
-rwxr-sr-x 1 user www-data   7116 апр.  10 20:41 admin.htm
-rwxr-sr-x 1 user www-data   2884 апр.  10 20:41 admin_art.inc
-rwxr-sr-x 1 user www-data 367112 апр.  10 20:41 ARIAL.TTF
-rwxr-sr-x 1 user www-data   4767 апр.  10 20:41 admin_d2.inc
-rwxr-sr-x 1 user www-data   2958 апр.  10 20:41 admin_exb.inc
-rwxr-sr-x 1 user www-data   2369 апр.  10 20:41 admin_faq.inc
-rwxr-sr-x 1 user www-data   1846 апр.  10 20:41 admin_fbk.inc
-rwxr-sr-x 1 user www-data   1791 апр.  10 20:41 admin_fbk2.inc
-rwxr-sr-x 1 user www-data   2657 апр.  10 20:41 admin_gbk.inc
-rwxr-sr-x 1 user www-data   3881 апр.  10 20:41 admin_frm.inc
-rwxr-sr-x 1 user www-data   2616 апр.  10 20:41 admin_gbl.inc
-rwxr-sr-x 1 user www-data   8197 апр.  10 20:41 admin_img.inc
-rwxr-sr-x 1 user www-data   7352 апр.  10 20:41 admin_new.inc

1
当您在 /home/user/ooo/ 上执行 ls -ltr 命令时,会得到什么结果?此外,请查看 access.log 并发布与您的错误相关的行。 - apesa
-ltr不起作用 -“未知命令”。我在问题中添加了一些细节。 - serezha93
命令是ls -ltr..你需要在前面加上ls,因为它是命令。-ltr部分是参数。它将列出目录和所有权权限。错误日志中有您的详细信息,您缺少对Docroot的正确权限。您的docroot应该归www-data所有。 - apesa
文件夹“ooo”中的所有文件都具有“-rwxr-xr-x”的权限,除了一些包括文件夹(“drwxr-xr-x”)。 - serezha93
信息不足。我保证www-data用户无法访问您的docroot,因为您将其移出了/var/www/并放到了安全的主目录中。您的权限设置不正确。将www-data用户添加到您的用户组中,看看会发生什么。下次请粘贴ls -ltr的输出,仅凭所有者无法解释目录权限。 - apesa
怎么做?'sudo chown www-data:www-data /home/user/ooo'? - serezha93
6个回答

12

问题在于,Apache默认配置从2.4.3版本开始会更严格。默认情况下禁止使用默认文档根目录之外的目录,需要显式启用。请查看:在Ubuntu 13.10上安装Apache Web服务器

基本上您应该添加:

Require all granted

在Directory指令下方的某个地方。


2

如果其他用户遇到相同的问题,请注意:从Ubuntu 14.04开始,如果您在/var/www或/usr/share之外主机虚拟主机,需要将路径添加到/etc/apache2/apache2.conf的白名单中。 在这种情况下,应像这样操作:

<Directory /home/user/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

当然,需要像 @ptheo 建议的那样授予权限。

2
你的Web服务器正在以www-data身份运行。因此,您需要使用以下命令将拥有新文档根目录的用户帐户添加到这个www-data组中。
xxx$ sudo usermod -a -G groupName userName

其中groupname是www-data,userName是你拥有docroot的用户名。

你可以参考这个SO答案,解释了为什么要这样做。

最后,我之前让你执行的ls -ltr命令会提供我需要回答这个问题的所有信息。如果你要问问题,请在被问到时提供所需的细节。

希望这可以帮助你, Pat


我使用以下命令:'$ sudo usermod -a -G www-data user'。其中,user是我的用户名。但是没有任何变化。我在问题详情中添加了ls -ltr。 - serezha93
上面的ls -ltr输出是在用户目录上,不正确。你把你的用户目录chowned成了www-data,而没有任何人的建议。你唯一需要做的就是将你的用户添加到www-data组中。你的/home/user目录应该归你所有。就像我说的,你有一个权限问题,你根本不理解Linux安全性。Apache的安装和运行默认情况下都是正确的,直到你错误地更改了某些东西。由于你将docroot移动到了它的默认位置之外,所以你需要设置正确的权限。你上面的问题与我之前回答并链接的问题相同。 - apesa

1
他们改变了处理文件的方式。默认情况下,Apache 只能访问 /var/www 或 /usr/share 中的文件。我刚把我的文件夹移到了 /usr/share 下,并进行了必要的配置,就这样完成了。在 /var/www/html/index.html 的默认索引文件中还有更多指导信息。希望这可以帮到你。

0

尝试

sudo chown -R www-data:www-data /home/user/ooo

为DocumentRoot赋予正确的权限


0

Ubuntu 终端命令

安装 Apache

sudo apt-get update

sudo apt-get install apache2

/etc/apache2/sites-available$ sudo gedit 000-default.conf

在该文件中,您将找到 <VirtualHost *:80> .</VirtualHost>。在该行内部

<Directory /var/www/html>
           Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
           allow from all
</Directory>

重启Apache。

sudo service apache2 restart`


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接