Назад | Перейти на главную страницу

Виртуальные хосты и символические ссылки, почему я не могу установить DocumentRoot на символическую ссылку?

Недавно я установил Capistrano на свой сервер, и он отлично работает.
Я изменил свои виртуальные хосты, чтобы они указывали на символическую ссылку, созданную Capistrano.
Файл моих виртуальных хостов:

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

Когда я перезапускаю свой сервер Apache, используя sudo service httpd restart, Я получаю сообщение об ошибке:

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

В current каталог определенно существует. Когда я установил vhost, чтобы указать на .../my_app.com/, он работает и показывает страницу apache по умолчанию, проблема в этой символической ссылке на current (который обновляется по мере развертывания приложений с помощью capistrano).

Я использую экземпляр Amazon ec2, apache 2.2 (LAMP).

Итак, как мне указать виртуальный хост на символическую ссылку?


Обновить The output of 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

В моем httpd.conf(комментарии удалены):

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

Мои журналы ошибок:

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

Выход ls -l для /var/www/html/my_app.com/releases/20120828223949.

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

Когда я запускаю команду ls -l /var/www/html/my_app.com/current/

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

Похоже на мертвую символическую ссылку ... Как это исправить?

В соответствии с моим комментарием и вашим продолжением, похоже, что вы current символическая ссылка не указывает на действительную цель; удалите его и снова добавьте:

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