VirtualBox for Apache中的共享文件夹
我的主机是ArchLinux,我在CentOS客户机中运行Apache。我在共享文件夹中有vhost配置和所有站点代码。为了能够将vhost配置放在共享文件夹中,我将共享文件夹装载为apache:apacheVirtualBox for Apache中的共享文件夹,apache,virtualbox,mount,shared-directory,Apache,Virtualbox,Mount,Shared Directory,我的主机是ArchLinux,我在CentOS客户机中运行Apache。我在共享文件夹中有vhost配置和所有站点代码。为了能够将vhost配置放在共享文件夹中,我将共享文件夹装载为apache:apache shared /mnt/shared vboxsf defaults,uid=48,gid=48 0 0 当我在主机中编辑文件时,Apache将始终如一地开始发送带有尾随字符的文件的旧版本。在vim中,它们显示为^@,所以我猜它们是空字符。空字符的数量与我所做更改的数
shared /mnt/shared vboxsf defaults,uid=48,gid=48 0 0
当我在主机中编辑文件时,Apache将始终如一地开始发送带有尾随字符的文件的旧版本。在vim中,它们显示为^@,所以我猜它们是空字符。空字符的数量与我所做更改的数量有关,即使我编辑第一行,空字符也会显示在末尾。如果我要推测的话,这看起来是一个糟糕的差别
如果我停止httpd
,umount
,重新装载,然后启动httpd
,文件看起来很好。只是重新启动httpd没有帮助
如何调试挂载?在
/var/log
中没有任何东西向我扑来,我错了;它发生在其他地方,但我注意到只有.css和.js文件。通过搜索,我找到了一个关于vboxsf和小文件的问题
解决方案是在Apache中设置
EnableSendfile off
在
lighttpd
上,解决方案是在lighttpd.conf
server.network-backend = "writev"
请参阅:以回答特定问题“如何调试挂载”: (以下是根据我刚刚对Virtualbox中的同一个bug引起的问题所做的调查而进行的解释,但使用的是不同的web服务器) 在诊断了Apache如何读取虚拟主机中的文件的问题之后,我将在虚拟主机中使用“strace-p”来记录Apache的系统调用 在扫描时,只请求一个被截断/损坏的文件 仔细的诊断会发现它正确地统计了文件的长度。然后使用sendfile系统调用为其提供服务。基本上确认sendfile的行为不正常,这意味着它一定是虚拟机中的一个bug 搜索“sendfilevirtualbox”会让您找到这些bug
这对我不起作用。但是,如果我在VM上的vim中打开该文件并将其保存为原样,则在将其保存到VM上后,它将工作。还有其他想法吗?为了完整性:在Nginx config中,它是“sendfile off”;您可以将vbox的权限添加到apache2:
uid=48,gid=48
就是这样做的。这与我遇到的问题无关。你可能是英雄的翻版!