
Recentemente configurei o Capistrano no meu servidor e 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 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 current
diretório definitivamente existe. Quando configuro 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 implanto aplicativos usando capistrano).
Estou usando uma instância do Amazon EC2, Apache 2.2 (LAMP).
então, basicamente, como 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
Nos meus 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
for /var/www/html/my_app.com/releases/20120828223949
.
drwxrwxr-x 6 ec2-user ec2-user 4096 Aug 28 22:39 20120828223949
Quando executo o comandols -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 link simbólico morto... Como faço para corrigir isso?
Responder1
De acordo com meu comentário e seu acompanhamento, parece que seu current
link simbólico não aponta para um alvo 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}