Всем доброго дня! Столкнулся с проблемой, когда нужно установить Varnish на drupal 6. Я читал, что его нужно устанавливать с pressflow, но уже есть готовый сайт на друпале - т.к. сносить сайт и заново строить из за pressflow сейчас не вижу абсолютно никакого смысла. Другая проблема. На сервере varnish установлен, но к модулю не могу подключить - пишет - The Varnish control terminal is not responding at 127.0.0.1 on port 8080. Не могу подключить, т.к. pressflow не стоит или другая причина? Необходим взгляд, кто уже работал с varnish! Где копать?
Комментарии
Сносить Друпал, чтобы поставить Прессфлоу не нужно. Можно заменить исходники Друпала исходниками Прессфлоу и сайт должен продолжать работать корректно. Могут быть проблемы с некоторыми модулями, которые используют сессии для анонимов, но они все устраняемы.
Можно использовать Варниш и без Прессфлоу, только тогда надо будет найти свой способ на уровне Варниша отличать авторизованного юзера от неавторизованного. В случае с Прсессфлоу это можно сделать по наличию/отсутствию куки SESS* у юзера (Прессфлоу не создает сессии анонимам). Вы можете, например, написать свой модуль, который будет авторизованным юзерам класть спец куку и в конфиге Варниша цепляться за эту куку. Вот тут: http://romka.eu/blog/keshirovanie-na-drupal-sayte-sravnenie-effektivnost... я подробнее об этом писал.
Читал ваши статьи про кэширование drupal 6 при помощи varnish + pressflow; drupal, varnish и pressflow и т.д. Я кстати вам оставил последний коммент - вычитал в книге по "разработке управления сайтом", что можно установить и boost и varnish одновременно. Мне сейчас главное настроить varnish + drupal 6. Написание модулей - это интересный вариант, но на данный момент - это нужно сделать быстро и как можно качественней.
Т.е. вы хотите сказать, что varnish будет полноценно работать(или вообще работать), если лишить анонимных пользователей создавать сессии? Если это так, то я видел модуль, который исключает сессии для анонимусов http://drupal.org/project/no_anon - но он мне кажется сомнительным, т.к. еще находится в dev версии(пока на сайт не рискую ставить) Буду еще смотреть. Если есть еще у кого-то идеи, то можно решить для многих этот вопрос, которые не оптимизированы в случае с обычной сборкой друпала, но я использую сборку commons-6.22.
Варниш кеширует данные согласно своему конфигу, то есть настроить его можно как угодно, при желании он может быть использован и для кеширования для авторизованных юзеров, просто для анонимов это сделать гораздо проще, так как всем анонимам можно отдавать одну и ту же закешированную страницу, а у зарегистрированных пользователей кеш может быть разным.
Для того чтобы Варниш начал кешировать данные для анонимов его нужно научить отличать анонимного юзера от авторизованного. В случае с Прессфлоу это сделать легко, так как отличием анонима от не анонима является кука SESS*. В случае если используется чистый Друпал, нужно искать другой способ отличать анонима от не анонима. Резать сессии не обязательно, можно написать небольшой модуль, который на hook_user на действие login будет ставить свою спец куку, а на действие logout удалять ее. Тогда в этом вот примере конфига в секции
set req.http.Cookie = regsub(req.http.Cookie, "^(.*)$", "; \1");
set req.http.Cookie = regsuball(req.http.Cookie, "; +", ";");
set req.http.Cookie = regsuball(req.http.Cookie, ";(SESS[a-z0-9]|xyz+)=", "; \1=");
set req.http.Cookie = regsuball(req.http.Cookie, ";[^ ][^;]*", "");
set req.http.Cookie = regsuball(req.http.Cookie, "^[; ]+|[; ]+$", "");
if (req.http.Cookie == "") {
unset req.http.Cookie;
}
else {
return (pass);
}
}
Нужно будет заменить "SESS[a-z0-9]" на имя вашей куки.
Странно, что такой модуль еще не придумали - ведь varnish насколько я знаю очень хорош в своем роде.
Но это получается не та же оптимизация, что и в случае с pressflow. Что если с pressflow скопировать на свой сайт куку SESS и как-то попытаться оптимизировать. Стоит ли пытаться двигаться в этом направлении или же модуль более надежнее вариант?
Не вижу смысла что-то отдельное вытаскивать из Прессфлоу. Он имеет много оптимизаций, помимо интеграции с Варнишем, посмотреть их можно тут: https://pressflow.atlassian.net/wiki/display/PF/Comparison+-+Pressflow+v.... И правильнее или решиться перейти на него, или поступить как я предложил в комментарии выше: написать свой модуль для того чтобы по кукам отличать анонимов от авторизованных юзеров. Правильнее это, как минимум, потому, что код в Прессфлоу, который отвечает за сессии находится в ядре и если вы что-то перенесете из ядра Прессфлоу в ядро Друпала, то у вас в итоге получится и не Прессфлоу, и не Друпал и полученный гибрид вам придется поддерживать самостоятельно, то есть с выходом нового ядра Друпала вам на него нужно будет накладывать свои патчи. В случае со своим самописным модулем — обновление ядра Друпала на повлечет за собой переписывание кода этого модуля.