我最近在我的服务器上安装了 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}