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

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

我想在我的 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

希望有人能帮助我:-)

答案1

这些权限阻止apache您访问

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

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

chmod o+x /home/juul/Workspaces/

(或许也是/home/juul/如此)。

答案2

我在 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>

答案3

解决方案:不允许符号链接或无法访问链接目标:/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

相关内容