[Anscheinend habe ich Varnishd als Root ausgeführt]
Jetzt verstehe ich Folgendes:
[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
Ich habe ein SEHR einfaches Setup. Perl Webapp läuft darauf 0.0.0.0:5000
und ich möchte, dass Varnish dies zwischenspeichert. Das System ist ein virtuelles"Tröpfchen"(oder VM) aufhttp://www.digitalocean.comDie Maschine ist einCentOS-Box.
Darin /etc/sysconfig/varnish/
habe ich:
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-u varnish -g varnish \
-S /etc/varnish/secret \
-s malloc,128m"
Darin /etc/varnish/default.vcl
habe ich:
backend default {
.host = "0.0.0.0";
.port = "5000";
}
Ich habe verschiedene Dinge versucht, aber ohne Erfolg. (Neustarts, alternative Konfigurationen usw.). Ich kann unter website.com:5000 problemlos auf meine App zugreifen.
Dies ist, was ich erhalten habe, als ich Folgendes verwendet habe 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
Ich habe versucht, in verschiedenen Posts (einige auf SF) zu suchen, aber alle führten zu Sackgassen oder Lösungen für völlig unterschiedliche Situationen.
Ich wette, ich mache irgendetwas ganz Grundlegendes falsch, aber ich bin sogar so weit gegangen, meine Maschine zu zerstören, indem ich mit einer sauberen VM angefangen habe, Perl und die Module installiert habe, die ich brauche, dann meine App zum Laufen gebracht habe und dann das BASIC Varnish-Setup aus den Dokumenten installiert habe. Das habe ich ZWEIMAL gemacht!
Für jede Hilfe und jeden Hinweis bin ich sehr dankbar.
Antwort1
backend default {
.host = "0.0.0.0";
.port = "5000";
}
Das ist Ihr Problem. Sie können das Backend nicht bei 0.0.0.0 haben. Sie möchten stattdessen wahrscheinlich 127.0.0.1 verwenden.
(0.0.0.0 wird verwendet, um dem System mitzuteilen, dass es auf Verbindungen zu beliebigen IPs warten soll, ist aber keine gültige IP für eine Verbindung.)
Edit: ok, ich habe zu schnell geantwortet. Das wird das Berechtigungsproblem nicht beheben. Gib mir eine Sekunde.
Edit2: ok, beim nochmaligen Lesen sehe ich, dass du das Berechtigungsproblem behoben hast, also sollte meine Lösung das nicht funktionierende Backend reparieren.
Antwort2
Die Berechtigungen für das Verzeichnis, in das Varnish die VCL kompiliert, werden von Ubuntu unter /var/lib/varnish/ verwendet. Versuchen Sie es mit chmod 666 -R /var/lib/varnish/
Laut Ihrem obigen Code führen Sie den Vorgang nicht als Root aus. Versuchen Sie, den Vorgang als Root oder mit sudo zu testen. Wenn das funktioniert, liegt das Problem bei den Berechtigungen.