基本 Varnish 4.0 设置似乎不起作用

基本 Varnish 4.0 设置似乎不起作用

[显然我是以 root 身份运行 varnishd 的]

现在,我明白了:

[gideon@mywebsite ~]$ sudo varnishd -f /etc/varnish/default.vcl -s malloc,128m -T 127.0.0.1:2000 -a 0.0.0.0:8000 -d
[sudo] password for gideon: 
Platform: Linux,2.6.32-358.6.2.el6.x86_64,x86_64,-smalloc,-smalloc,-hcritbit
200 284     
-----------------------------
Varnish Cache CLI 1.0
-----------------------------
Linux,2.6.32-358.6.2.el6.x86_64,x86_64,-smalloc,-smalloc,-hcritbit
varnish-3.0.7 revision f544cd8

我有一个非常简单的设置。Perl Webapp 正在运行0.0.0.0:5000,我希望 varnish 缓存它。该系统是一个虚拟“水滴”(或 VM)http://www.digitalocean.com.该机器是CentOS 盒子

里面/etc/sysconfig/varnish/有:

DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -u varnish -g varnish \
             -S /etc/varnish/secret \
             -s malloc,128m"

里面/etc/varnish/default.vcl有:

backend default {
  .host = "0.0.0.0";
  .port = "5000";
}

我尝试了很多方法,但都没有成功。(重启、替代配置等)我可以在 website.com:5000 上正常访问我的应用程序。

这是我使用时得到的结果varnishd

$varnishd -f /etc/varnish/default.vcl 
                    -s malloc,128m -T 127.0.0.1:2000 -a 0.0.0.0:80 -d
Failed to create ./vcl.jAoXC8Rf.c: Permission denied

我尝试搜索各种帖子(一些关于 SF 的帖子),但全部都指向死胡同或针对完全不同情况的解决方案。

我敢打赌,我肯定做错了一些非常基本的事情,但我甚至已经到了关闭机器的地步,从干净的虚拟机启动,安装 perl 和我需要的模块,然后让我的应用程序运行,然后从文档中安装基本的 varnish 设置。我这样做了两次!

任何帮助和指点都将不胜感激。

答案1

backend default {
  .host = "0.0.0.0";
  .port = "5000";
}

这是你的问题。你不能将后端设置为 0.0.0.0。你可能想改用 127.0.0.1。

(0.0.0.0 用于告诉系统监听任何 IP 的连接,但不是有效的连接 IP)

编辑:好吧,我回答得太快了。这不会解决权限问题。请稍等片刻。

编辑2:好的,重读后我发现您已修复权限问题,因此我的解决方案应该可以修复不工作的后端。

答案2

varnish 将 vcl 编译到的目录的权限,Ubuntu 使用 /var/lib/varnish/ 尝试 chmod 666 -R /var/lib/varnish/

从上面的代码可以看出,您没有以 root 身份运行,请尝试以 root 身份测试或使用 sudo。如果成功,则问题出在权限上。

相关内容