我已经阅读了这么多的资源,但是我仍然在努力做到这一点。 背景:我正在使用带有LAMP设置的Amazon EC2实例
bitbucket上有这个回购有几个目录: _fixtures , oldfiles _fixtures , oldfiles , psds 。 我只想将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)。
如果你使用家庭以外的目录,可能会更好,但是如果你愿意,你可以打开权限。