虚拟主机和符号链接,为什么我不能将 DocumentRoot 设置为符号链接?

虚拟主机和符号链接,为什么我不能将 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)。

那么基本上,我如何将虚拟主机指向符号链接?


更新 输出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

看起来像是一个死的符号链接...我该如何修复它?

答案1

根据我的评论和您的后续行动,您的current符号链接似乎没有指向有效目标;请删除它并重新添加:

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

相关内容