如何在/ var / www /中使用符号链接配置apache2?


14

我想在Ubuntu(14.04)上设置本地Web服务器。因此,我安装了所有软件以获取LAMP服务器。

问题是我在创建虚拟主机时做错了什么。我想在本地主机上创建不同的子域。例如,site1.localhost和site2.localhost。

在我的/var/www/目录中,我创建了一个符号链接“ site1”,该链接将转到/home/user/Workspaces/site1

在我的Apache error.log文件中,出现以下错误。

[core:error] [pid 12679] [client 127.0.0.1:59006] AH00037: Symbolic link not allowed or link target not accessible: /var/www/site1

在我的apache配置中,我有:

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

因此,我认为文件夹的权限有问题。我在Google上进行搜索,发现有几个人遇到相同的问题,但那里提供的所有答案都无法解决。我将自己的用户名添加到了www-data组中,诸如此类。

因此ls -la /var/www返回:

total 12
drwxrwsr-x  3 user www-data 4096 okt 13 19:08 .
drwxr-xr-x 14 root root     4096 okt  1 22:50 ..
drwxr-xr-x  2 root www-data 4096 okt  1 22:50 html
lrwxrwxrwx  1 root www-data   29 okt 13 19:08 site1 -> /home/user/Workspaces/site1/

ls -la /home/juul/Workspaces/site1返回:

total 24
drwxrwxr-x 4 user www-data 4096 okt 13 18:21 .
drwxrwx--- 3 user user     4096 okt 13 17:31 ..
-rw-rw-r-- 1 user user        0 okt 13 18:21 index.html
drwxrwxr-x 4 user www-data 4096 okt 13 16:12 .metadata
drwxrwxr-x 5 user www-data 4096 okt 13 16:53 Project

希望有人可以帮我解决这个问题:-)

Answers:


5

这些权限阻止apache了您的访问

drwxrwx--- 3 user user     4096 okt 13 17:31 ..

您需要为其他人授予执行权限:

chmod o+x /home/juul/Workspaces/

(也许/home/juul/还有)。


按照@muru的答案,确保所有包含目录都设置了“ x”权限。如果没有,它将永远无法工作
dawez 2015年

3

我在14.04上安装了标准的Apache。没有文件或目录指定“ www-data”。您自己改变了所有这些吗?关于如何设置Web服务器的信息很多,但信息已经过时或完全不正确,因此请注意遵循的人,然后撤消不起作用的信息。

也就是说,“ site1”应该在html目录中,并由您拥有。它实际上并不需要是符号链接;您可以在配置文件中指定其他目录。像这样:

# Add this to the end of the existing 000-default.conf file (after "</VirtualHost>")
<VirtualHost *:80>
    <Directory  /home/user/Workspaces/site1>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
    DocumentRoot /home/user/Workspaces/site1
    ServerName site1
</VirtualHost>

1

解决方案:不允许符号链接或无法访问链接目标:/var/www/html/mySymbolicLink

这显然是权限问题。问题是您的主目录下的html由您的用户拥有,而apache服务器由另一个用户运行,因此无法访问您的主目录。

然后,解决方案是将运行apache的用户添加到您的组中,该用户名通常与您的用户名相同。因此,在我的CentOS框中,我这样做是:

sudo usermod -a -G dev apache

因此,这会将用户apache添加到组dev。现在,我需要授予执行权限。

/home

chmod g+x dev -R

这将仅对组成员授予对我的文件夹的执行权限。就是这样。您需要针对正在运行Web服务器的任何内容修改Apache用户,我相信对于Ubuntu用户而言www-data

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.