【发布时间】:2016-06-23 22:18:45
【问题描述】:
我在 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
如果我 strace 清漆二进制文件,我会在最后得到以下几行
chdir("/var/lib/varnish/myserver.foo.bar") = 0
open("./vcl.1P9zoqAU.c", O_RDWR|O_CREAT|O_EXCL, 0600) = 3
所以我检查了这个目录的权限是否正确(而且我使用 root 运行它),我禁用了 SELinux,重新启动,重新安装...... 首先它发生在 varnish 2.1.15 上,但同样发生在 4.0.3 上(使用官方 varnish repo)。
你知道我的系统发生了什么吗?
【问题讨论】:
-
你能检查以确保文件系统没有被
noexec挂载吗? -
天哪,这就是原因......你能解释一下(在主题答案中)为什么 noexec 选项会影响基本的 open() 操作吗?据我了解,varnish 现在正尝试在 C 中构建 vcl 配置,以便可以将其加载到内存中。我不确定这里的 noexec 在哪里干扰。感谢您的帮助