Hosts virtuais e links simbólicos, por que não posso definir o DocumentRoot como um link simbólico?

4

Recentemente, configurei o Capistrano no meu servidor e ele funciona muito bem.
Mudei meus hosts virtuais para apontar para o link simbólico criado por Capistrano.
Meu arquivo de hosts virtuais:

<VirtualHost *:80>
    DocumentRoot /var/www/html/my_app.com/current
    ServerName my_app.com
    <Directory />
    Options FollowSymLinks
        AllowOverride Indexes
    </Directory>
</VirtualHost>

Quando eu reinicio meu servidor apache usando sudo service httpd restart , recebo o erro:

Warning: DocumentRoot [/var/www/html/my_app.com/current] does not exist

O diretório current definitivamente existe. Quando defino o vhost para apontar para .../my_app.com/ , ele funciona e mostra a página padrão do apache, o problema é esse link simbólico para current (que é atualizado conforme eu implemento aplicativos usando capistrano).

Estou usando uma instância do Amazon ec2, apache 2.2 (LAMP).

Então, basicamente, como eu aponto um host virtual para um link simbólico?

Atualizar A saída de ls-l :
lrwxrwxrwx 1 ec2-user ec2-user   57 Aug 28 22:40 current -> /var/www/html/my_app.com/releases/20120828223437
drwxrwxr-x 3 ec2-user ec2-user 4096 Aug 28 22:40 releases
drwxrwxr-x 6 ec2-user ec2-user 4096 Aug 28 16:01 shared

No meu httpd.conf (comentários retirados):

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride all
    Order allow,deny
    Allow from all
</Directory>

Meus registros de erros:

[Wed Aug 29 00:04:39 2012] [error] [client 87.194.51.136] Symbolic link not allowed or link target not accessible: /var/www/html/my_app.com/current
[Wed Aug 29 00:04:40 2012] [error] [client 128.30.52.73] Symbolic link not allowed or link target not accessible: /var/www/html/my_app.com/current
[Wed Aug 29 00:04:40 2012] [error] [client 87.194.51.136] Symbolic link not allowed or link target not accessible: /var/www/html/my_app.com/current, referer: http://mydomain.com/

A saída de ls -l para /var/www/html/my_app.com/releases/20120828223949 .

drwxrwxr-x 6 ec2-user ec2-user 4096 Aug 28 22:39 20120828223949

Quando eu executo o comando ls -l /var/www/html/my_app.com/current/

ls: cannot access /var/www/html/my_app.com/current/: No such file or directory

Parece um symlink morto ... Como eu corrijo isso?

    
por Anil 29.08.2012 / 01:23

1 resposta

3

Como o meu comentário e o seu acompanhamento, parece que o seu link current não aponta para um destino válido; remova-o e adicione-o novamente:

$ rm -f /var/www/html/my_app.com/current
$ ln -s /var/www/html/my_app.com/{releases/20120828223949,current}
    
por 29.08.2012 / 14:36