Não consigo ligar simbolicamente um diretório em / var / www / html

2

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 .

    
por juuga 31.01.2014 / 09:44

5 respostas

3

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
    
por 31.01.2014 / 10:36
2

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>
    
por 31.01.2014 / 09:48
2

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 01.10.2014 / 08:30
1

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
    
por 31.01.2014 / 10:24
0

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.

    
por 31.01.2014 / 10:41