Я читал об этом на очень многих ресурсах, но все еще пытаюсь понять это правильно. Справочная информация: я использую экземпляр Amazon EC2 с настройкой LAMP
У меня есть это репо на битбакете, в котором есть несколько каталогов: _fixtures
, oldfiles
, psds
, webfiles
. Я только хочу разместить webfiles
каталог над корневым веб-каталогом в /var/www/html/
. Я клонировал репо в свою домашнюю папку и пробовал создать символическую ссылку с помощью
ln -s /home/myuser/myrepo/webfiles /var/www/html/webfiles
Это приводит к ошибке 403 Forbidden access. я пробовал chmod
папка webfiles должна принадлежать группе apache (чтобы у нее было разрешение на чтение), но это не помогает.
у меня тоже есть
<VirtualHost *:80>
<Directory "/var/www/html">
allow from all
Options -Indexes FollowSymlinks
AllowOverride All
</Directory>
в моем httpd.conf
чтобы включить символические ссылки, но все равно ничего. Любая помощь в том, как я могу выполнить эту ссылку, была бы оценена.
РЕДАКТИРОВАТЬ
На основе эта тема SO + ответ Я буду придерживаться стратегии просто проверить webfiles
каталог.
РЕДАКТИРОВАТЬ 2
Прошло какое-то время, но я просто подумал, что оставлю здесь заметку, говоря, что другое решение, которое я мог бы попробовать для этого, - это клонировать репо где-то вроде /var/www/repos/myrepo
а затем создать символическую ссылку webfiles
каталог оттуда. Было бы проще, поскольку разрешения, скорее всего, уже существуют для /var/www
.
Если в Amazon Linux включен SElinux, у вас могут быть проблемы с этим, и вам нужно разрешить httpd читать домашние каталоги пользователей.
setsebool httpd_enable_homedirs 1
Я делаю нечто подобное - с установкой laravel в домашнем каталоге пользователя ec2, чтобы, когда я хочу обновить сайт, я мог сделать это без прав root.
В ключевой bit, или часть, которая заставила меня застрять, заключалась в том, что вам нужно разрешить доступ на выполнение каталога к домашнему каталогу пользователя 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
наряду с разрешением символических ссылок и переопределений и т. д.
Вам также понадобится инструкция каталога для / home / myuser / myrepo / webfiles:
<Directory "/home/myuser/myrepo/webfiles">
allow from all
Options -Indexes
AllowOverride None
</Directory>
Пожалуйста, попробуйте синтаксис ниже
<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>
Проверьте по умолчанию httpd.conf или apache.conf, если "AllowOverride" имеет значение "None" для каталога / var / www / html /
Также, если символические ссылки не работают, вы можете подключить одну папку к другой папке, как показано ниже.
mkdir /var/www/html/webfiles
mount -o bind /home/myuser/myrepo/webfiles /var/www/html/webfiles
Как прокомментировал Тигран, вы должны убедиться, что apache действительно может читать каталог назначения.
В этом случае / home / myuser / myrepo / webfiles, помимо того, что веб-файлы доступны для apache, необходимы права на выполнение по всему пути (/ home; / home / myuser; / home / myuser / myrepo).
Вероятно, было бы лучше, если бы вы использовали каталог за пределами вашего дома, но при желании вы можете открыть разрешения.