我无法将目录符号链接到/ var / www / html

我已经阅读了这么多的资源,但是我仍然在努力做到这一点。 背景:我正在使用带有LAMP设置的Amazon EC2实例

bitbucket上有这个回购有几个目录: _fixturesoldfiles _fixturesoldfilespsds 。 我只想将webfiles目录放在/var/www/html/的webroot上面。 我克隆了回购到我的家庭文件夹,我已经试过符号链接

 ln -s /home/myuser/myrepo/webfiles /var/www/html/webfiles 

这导致403禁止访问错误。 我已经尝试了chmod的webfiles文件夹属于阿帕奇组(所以它会有读取权限),但这并没有帮助。

我也有

 <VirtualHost *:80> <Directory "/var/www/html"> allow from all Options -Indexes FollowSymlinks AllowOverride All </Directory> 

在我的httpd.conf中启用符号链接,但是还是什么都没有。 任何帮助我如何能够完成这个链接,将不胜感激。

编辑

基于这个SO线程+答案,我将采取只检出webfiles目录的策略。

编辑2

这已经有一段时间了,但是我想在这里放一个便条,说另外一个解决scheme,我可以尝试将这个repo克隆到/var/www/repos/myrepo ,然后从那里符号链接webfiles目录。 这将会更简单,因为权限更可能已经到位/var/www

如果您的Amazon Linux启用了SElinux,则可能会遇到麻烦,需要允许httpd读取用户的主目录

  setsebool httpd_enable_homedirs 1 

您还需要/ home / myuser / myrepo / webfiles的目录语句:

 <Directory "/home/myuser/myrepo/webfiles"> allow from all Options -Indexes AllowOverride None </Directory> 

我正在做类似的事情 – 在ec2-user的主目录中安装laravel,这样当我想更新站点时,我可以在没有root权限的情况下进行安装。

关键的一点,或者让我陷入困境的部分是,你需要允许目录执行访问ec2用户的主目录。

不这样做导致我相当一段时间想知道为什么它不工作。

为了避免完全打开权限,我把“apache”用户添加到“ec2-user”组中。

作为根:

 usermod -aG ec2-user apache 

这是关键的一点…

 chmod g+x /home/ec2-user 

您不需要directroy上的“读取”权限,只需执行,即可打开目录以访问您想要的目录。 主目录下的目录应该已经具有用于组访问的“r”和“x”。 您可能需要将写入权限添加到任何caching或日志目录。

之后,你可以设置你想要的东西 – 在我的情况是这样的:

 cd /var/www ln -s /home/ec2-user/my_laravel_repo/public my_laravel 

然后我调整我的DocumentRoot到/var/www/my_laravel ,同时允许符号链接和覆盖等

请尝试下面的语法

 <Directory "/var/www/html"> Options -Indexes FollowSymLinks MultiViews AllowOverride All Allow from all </Directory> <Directory "/home/myuser/myrepo/webfiles"> Options -Indexes FollowSymLinks MultiViews AllowOverride All Allow from all </Directory> 

如果/ var / www / html /目录下的“AllowOverride”设置为“None”,请检查默认的httpd.conf或apache.conf。

另外如果符号链接不工作,你可以挂载一个文件夹到另一个文件夹如下

 mkdir /var/www/html/webfiles mount -o bind /home/myuser/myrepo/webfiles /var/www/html/webfiles 

正如Tigran评论之前,你必须确保Apache可以实际读取目标目录。

在这种情况下,/ home / myuser / myrepo / webfiles,除了web文件是可访问的,apache需要在所有path上执行权限(/ home; / home / myuser; / home / myuser / myrepo)。

如果你使用家庭以外的目录,可能会更好,但是如果你愿意,你可以打开权限。