我已经在很多资源中阅读了有关这个主题的内容,但我仍然在努力使其正确。背景:我正在使用带有 LAMP 设置的 Amazon EC2 实例
我在 bitbucket 上有这个 repo,它有几个目录:,,,_fixtures
。我只想将目录放在 webroot 上方。我已将 repo 克隆到我的主文件夹,并尝试使用符号链接oldfiles
psds
webfiles
webfiles
/var/www/html/
ln -s /home/myuser/myrepo/webfiles /var/www/html/webfiles
这会导致 403 禁止访问错误。我尝试将chmod
webfiles 文件夹归 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)。
如果您使用家外的目录可能会更好,但如果您愿意,您可以开放权限。