[どうやら私はvarnishdをrootとして実行していたようです]
さて、私はこれを理解しました:
[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 上のものも含む)を検索してみましたが、すべてが行き止まりか、まったく異なる状況に対する解決策に終わりました。
何か基本的な間違いをしているに違いありませんが、マシンを強制終了し、クリーンな VM から始めて、必要な perl とモジュールをインストールし、アプリを動作させてから、ドキュメントから BASIC varnish セットアップをインストールしました。これを 2 回も行いました。
どのようなご助力やご指摘も大変ありがたく思います。
答え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 を使用してみてください。動作する場合は、権限に問題があります。