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

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

我已经在很多资源中阅读了有关这个主题的内容,但我仍然在努力使其正确。背景:我正在使用带有 LAMP 设置的 Amazon EC2 实例

我在 bitbucket 上有这个 repo,它有几个目录:,,,_fixtures。我只想将目录放在 webroot 上方。我已将 repo 克隆到我的主文件夹,并尝试使用符号链接oldfilespsdswebfileswebfiles/var/www/html/

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

这会导致 403 禁止访问错误。我尝试将chmodwebfiles 文件夹归 apache 组所有(这样它就有读取权限),但这没有帮助。

我也有

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

在我的 中httpd.conf启用符号链接,但仍然没有结果。如能就如何完成此链接提供任何帮助,我将不胜感激。

编辑

基于此 SO 线程+答案我将采取仅检查目录的策略webfiles

编辑2

已经有一段时间了,但我只是想在这里留言,说一下我可以尝试的另一个解决方案是将 repo 克隆到某个地方/var/www/repos/myrepo,然后webfiles从那里符号链接目录。这会更简单,因为权限很可能已经到位/var/www

答案1

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

 setsebool httpd_enable_homedirs 1

答案2

您还需要 /home/myuser/myrepo/webfiles 的目录声明:

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

答案3

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

至关重要的位,或者让我卡住的部分是您需要允许目录执行访问 ec2 用户的主目录。

不这样做导致我花了很长时间才知道为什么它不起作用。

为了避免必须完全开放权限,我将“apache”用户添加到“ec2-user”组。

以 root 身份:

usermod -aG ec2-user apache

这里是至关重要的少量 ...

chmod g+x /home/ec2-user

您不需要对目录具有“读取”权限,只需执行即可打开目录并获取其下您想要的目录。主目录下的目录应该已经具有“r”和“x”的组访问权限。您可能需要添加对任何缓存或日志目录的写入权限。

之后,你就可以按照自己的意愿设置了——就我的情况来说,它是这样的:

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

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

答案4

正如 tigran 之前评论的那样,您必须确保 apache 确实可以读取目标目录。

在这种情况下,/home/myuser/myrepo/webfiles,除了 webfiles 可访问之外,apache 还需要在所有路径上执行权限(/home;/home/myuser;/home/myuser/myrepo)。

如果您使用家外的目录可能会更好,但如果您愿意,您可以开放权限。

相关内容