我在CentOS 6.7上安装了epel repo的清漆,并且无法启动以下错误:
Compiled VCL program failed to load:
./vcl.1P9zoqAU.so: failed to map segment from shared object: Operation not permitted
VCL compilation failed
如果我使用varnishd二进制文件,我会在结尾处获得以下行
chdir("/var/lib/varnish/myserver.foo.bar") = 0
open("./vcl.1P9zoqAU.c", O_RDWR|O_CREAT|O_EXCL, 0600) = 3
所以我检查了这个目录上的权限是正确的(加上我用root运行它),我禁用SELinux,重新启动,重新安装...... 首先它发生在清漆2.1.15中,但4.0.3(使用官方清漆回收)也发生了相同的情况。
你知道我的系统发生了什么吗?
答案 0 :(得分:7)
作为varnish启动的一部分,它会生成configuration of it's behaviour的可加载库。这是由varnishd在运行时编译和加载的。这是因为错误而被抱怨的事情:
Compiled VCL program failed to load:
./vcl.1P9zoqAU.so: failed to map segment from shared object: Operation not permitted
VCL compilation failed
即。这是一个失败的dlopen
电话。较新的版本有a slightly more obvious message,其中包含:
dlopen(vcl_boot/vgc.so) = failed to map segment from shared object: Operation not permitted
在这种情况下,放置.so
的目录驻留在使用noexec
选项挂载的文件系统上,导致dlopen
失败。
解决此问题需要使用exec
选项重新安装此文件系统。