Se o Amazon Linux tiver o SElinux ativado, você pode ter problemas com isso e precisa permitir que o httpd leia os diretórios pessoais do usuário
setsebool httpd_enable_homedirs 1
Eu li sobre esse assunto com tantos recursos, mas ainda estou lutando para acertar isso. Plano de fundo: estou usando uma instância do Amazon EC2 com uma configuração LAMP
Eu tenho este repo no bitbucket que tem vários diretórios: _fixtures
, oldfiles
, psds
, webfiles
. Eu só quero colocar o diretório webfiles
acima da webroot em /var/www/html/
. Eu clonei o repositório para minha pasta pessoal e tentei usar o symlinking com
ln -s /home/myuser/myrepo/webfiles /var/www/html/webfiles
Isso está resultando em um erro de acesso 403 Proibido. Eu tentei chmod
a pasta webfiles pertencente ao grupo apache (então ele teria permissão de leitura), mas isso não ajuda.
Eu também tenho
<VirtualHost *:80>
<Directory "/var/www/html">
allow from all
Options -Indexes FollowSymlinks
AllowOverride All
</Directory>
no meu httpd.conf
para ativar os links simbólicos, mas ainda nada. Qualquer ajuda sobre como eu poderia realizar esta ligação seria apreciada.
EDITAR
Com base em este SO thread + answer , estarei tomando a estratégia de apenas verificar o diretório webfiles
.
EDIT 2
Já faz um tempo, mas apenas pensei em colocar uma nota aqui dizendo que outra solução que eu poderia ter tentado para isso seria clonar o repositório para algum lugar como/var/www/repos/myrepo
e então criar um link simbólico para o diretório webfiles
daí . Seria mais simples, pois é mais provável que as permissões já estejam em vigor para /var/www
.
Se o Amazon Linux tiver o SElinux ativado, você pode ter problemas com isso e precisa permitir que o httpd leia os diretórios pessoais do usuário
setsebool httpd_enable_homedirs 1
Você também precisa de uma instrução de diretório para / home / myuser / myrepo / webfiles:
<Directory "/home/myuser/myrepo/webfiles">
allow from all
Options -Indexes
AllowOverride None
</Directory>
Estou fazendo algo semelhante - com uma instalação de laravel no diretório inicial do usuário ec2, para que, quando eu quiser atualizar o site, eu possa fazê-lo sem permissões de root.
O bit crucial , ou a parte que me prendeu, é que você precisa permitir o acesso de execução de diretório ao diretório pessoal do usuário ec2.
Não fazer isso me causou algum tempo me perguntando por que não estava funcionando.
Para evitar ter que abrir completamente as permissões, adicionei o usuário 'apache' ao grupo 'ec2-user'.
Como root:
usermod -aG ec2-user apache
Aqui está o bit crucial ...
chmod g+x /home/ec2-user
Você não precisa acessar 'read' no directório, apenas execute para abrir o diretório para chegar ao (s) desejado (s) sob ele. Os diretórios no diretório inicial já devem ter 'r' e 'x' para acesso de grupo. Pode ser necessário adicionar acesso de gravação a qualquer cache ou diretórios de log.
Depois disso, você pode configurar as coisas como quiser - no meu caso, é algo como:
cd /var/www
ln -s /home/ec2-user/my_laravel_repo/public my_laravel
Então eu ajustei o meu DocumentRoot para /var/www/my_laravel
, juntamente com links simbólicos e sobreposições, etc.
Por favor, tente abaixo da sintaxe
<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>
Por favor, verifique no padrão httpd.conf ou apache.conf se "AllowOverride" está definido como "None" para o diretório / var / www / html /
Além disso, se os links simbólicos não funcionarem, você pode montar uma pasta em outra pasta como abaixo
mkdir /var/www/html/webfiles
mount -o bind /home/myuser/myrepo/webfiles /var/www/html/webfiles
Como tigran comentou antes, você deve se certificar de que o apache possa realmente ler o diretório de destino.
Nesse caso, / home / myuser / myrepo / webfiles, além dos arquivos da Web serem acessíveis, o apache precisa executar direitos no caminho all (/ home; / home / myuser; / home / myuser / myrepo).
Provavelmente seria melhor se você usasse um diretório fora de sua casa, mas, se quiser, pode abrir permissões.
Tags lamp amazon-ec2 apache-2.2 httpd