[Очевидно, я запустил 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 кэшировал это. Система является виртуальной"капелька"(или ВМ) на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 и нужные мне модули, затем заставив свое приложение работать, затем установив 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-адрес для подключения)
Редактировать: ладно, я слишком поторопился с ответом. Это не решит проблему с разрешением. Дай мне секунду.
Редактирование 2: хорошо, перечитав, я вижу, что вы исправили проблему с разрешениями, так что мое решение должно исправить неработающий бэкэнд.
решение2
Права доступа к каталогу, в который Varnish компилирует vcl, Ubuntu использует /var/lib/varnish/ Попробуйте chmod 666 -R /var/lib/varnish/
Из вашего кода выше вы не работаете как root, попробуйте протестировать как root или использовать sudo. Если это сработает, то проблема в разрешениях.