我想做import std;
一些std.syslog
。但是,当我重新启动 varnish 时,VCC 编译器失败:
$ sudo service varnish restart
* Stopping HTTP accelerator varnishd [ OK ]
* Starting HTTP accelerator varnishd [fail]
SMA.s0: max size 2048 MB.
Message from VCC-compiler:
Could not load module std
/usr/lib/varnish/vmods/libvmod_std.so
/usr/lib/varnish/vmods/libvmod_std.so: cannot open shared object file: No such file or directory
('input' Line 15 Pos 8)
import std;
-------###-
Running VCC-compiler failed, exit 1
VCL compilation failed
我正在运行 Ubuntu 11.10 和我的 varnish 版本:
$ varnishd -V
varnishd (varnish-3.0.0 revision cbf1284)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2011 Varnish Software AS
这不是std
内置的 VMOD 吗?我该如何解决这个问题?谢谢。
更新:我按照官方网站上的说明将 Varnish 升级到了 3.0.3。但是,我仍然不明白为什么std
3.0.0 中没有这个功能。
答案1
下载最新的 Varnish 源版本 3.0.3 并编译它。安装后,locate libvmod_std.so
确认此模块也已安装。然后,您可以启动 varnish 并使用 来检查它是否与您的新 vcl 一致import std;
。为了进行调试,您可以-d -d
在 文件中的 varnish 启动默认值中添加选项/etc/default/varnish
。查看man vmod_std
有关 varnish 标准模块的更多详细信息。对于我来说,这个版本运行良好。
默认情况下,安装将 vcl 文件放在 下/usr/local/etc/varnish
,将二进制文件放在 下/usr/local/bin/varnish*
,您可以在 中找到 varnishd /usr/bin/
。您需要在 init.d 启动文件中更改以下内容,/etc/init.d/varnish
因为它与通过 apt-get 安装不同。
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/sbin/varnishd
还可以更改 vcl 文件/etc/default/varnish
路径
-f /usr/local/etc/varnish/default.vcl
现在,您应该能够像使用通过 apt-get 安装的 varnish 一样启动和停止新编译的 varnish。
答案2
您能否使用以下命令升级您机器上的清漆:
aptitude upgrade varnish
它应该可以解决问题。如果没有,请评论,我们会尝试找到其他解决方法。
答案3
我最终按照官方网站的说明将Varnish升级到3.0.3:https://www.varnish-cache.org/installation/ubuntu
要使用 varnish-cache.org 存储库,请执行以下操作
curl http://repo.varnish-cache.org/debian/GPG-key.txt | sudo apt-key add -
echo "deb http://repo.varnish-cache.org/ubuntu/ lucid varnish-3.0" | sudo tee -a /etc/apt/sources.list
sudo apt-get update
sudo apt-get install varnish
他们只提供适用于 Ubuntu LTS 版本的软件包,而不是所有中间版本。虽然如此,但(11.10)lucid
运行良好。oneric
将 Varnish 升级到 3.0.3 后,我现在可以正常sudo service varnish reload
工作import std;
。