Недавно я установил 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).
Итак, как мне указать виртуальный хост на символическую ссылку?
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}