Virtuelle Hosts und symbolische Links. Warum kann ich DocumentRoot nicht auf einen symbolischen Link festlegen?

Virtuelle Hosts und symbolische Links. Warum kann ich DocumentRoot nicht auf einen symbolischen Link festlegen?

Ich habe Capistrano vor kurzem auf meinem Server eingerichtet und es funktioniert großartig.
Ich habe meine virtuellen Hosts so geändert, dass sie auf den von Capistrano erstellten symbolischen Link verweisen.
Meine virtuelle Hostdatei:

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

Wenn ich meinen Apache-Server mit neu starte sudo service httpd restart, erhalte ich die folgende Fehlermeldung:

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

Das currentVerzeichnis existiert definitiv. Wenn ich den virtuellen Host so einstelle, dass er auf verweist .../my_app.com/, funktioniert es und zeigt die Standard-Apache-Seite an. Das Problem ist dieser symbolische Link zu current(der aktualisiert wird, wenn ich Anwendungen mit Capistrano bereitstelle).

Ich verwende eine Amazon EC2-Instanz, Apache 2.2 (LAMP).

also, wie richte ich einen virtuellen Host grundsätzlich auf einen symbolischen Link?


Aktualisieren Die Ausgabe von 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

In meinem httpd.conf(Kommentare entfernt):

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

Meine Fehlerprotokolle:

[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/

Die Ausgabe von ls -lfür /var/www/html/my_app.com/releases/20120828223949.

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

Wenn ich den Befehl ausführels -l /var/www/html/my_app.com/current/

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

Sieht aus wie ein toter symbolischer Link ... Wie behebe ich das?

Antwort1

Gemäß meinem Kommentar und Ihrer Antwort sieht es so aus, als ob Ihr currentsymbolischer Link nicht auf ein gültiges Ziel verweist. Entfernen Sie ihn und fügen Sie ihn erneut hinzu:

$ rm -f /var/www/html/my_app.com/current
$ ln -s /var/www/html/my_app.com/{releases/20120828223949,current}

verwandte Informationen