[顯然我正在以 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 來快取它。該系統是一個虛擬的“水滴”(或虛擬機器)上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
我嘗試搜尋各種帖子,(一些在舊金山)都導致死胡同或完全不同情況的解決方案。
我敢打賭,我做錯了一些非常基本的事情,但我什至已經到了殺死我的機器的地步,從一個乾淨的虛擬機開始,安裝perl 和我需要的模組,然後讓我的應用程序運行,然後安裝BASIC 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)
編輯:好的,我回答得太快了。這不會解決權限問題。你稍等一會兒。
Edit2:好的,重讀我發現您修復了權限問題,所以我的解決方案應該修復無法工作的後端。
答案2
varnish 編譯 vcl 的目錄的權限,Ubuntu 使用 /var/lib/varnish/ 嘗試 chmod 666 -R /var/lib/varnish/
從上面的程式碼來看,您沒有以 root 身分執行,請嘗試以 root 身分或使用 sudo 進行測試。如果有效,那麼權限就是問題。