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