Varnish无法启动:无法从共享对象映射段:不允许操作

时间:2016-03-09 13:44:04

标签: linux varnish

我在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(使用官方清漆回收)也发生了相同的情况。

你知道我的系统发生了什么吗?

1 个答案:

答案 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选项重新安装此文件系统。