Что такое Varnish?
Varnish – это HTTP-ускоритель сервера, особенно полезный для сайтов с высоким трафиком. Он работает путем перенаправления посетителей на статические страницы, и использует сервер только если есть необходимость в активном процессе.
Требования
Прежде чем приступить к выполнению данного руководства, нужно выполнить некоторые предварительные требования. На сервере должны быть установлены пользователь с привилегиями root, а также LEMP stack и WordPress.
Чтобы получить советы и инструкции, читайте следующие руководства:
- Начальная настройка сервера Ubuntu 12.04 (чтобы создать пользователя с привилегиями sudo);
- Установка LEMP stack на сервер Ubuntu 12.04;
- Установка WordPress+nginx на Ubuntu 12.04.
1: Установка Varnish
Выполнив все предварительные требования, приступайте к установке Varnish. Сайт Varnish рекомендует устанавливать пакеты Varnish из репозитория проекта.
Итак, для начала скачайте репозиторий:
sudo curl http://repo.varnish-cache.org/debian/GPG-key.txt | sudo apt-key add -
Далее нужно внести репозиторий в список исходников apt. Откройте файл:
sudo nano /etc/apt/sources.list
Внесите репозиторий varnish в список исходников:
deb http://repo.varnish-cache.org/ubuntu/ lucid varnish-3.0
Сохраните изменения и закройте файл.
В завершение обновите apt-get и установите varnish:
sudo apt-get update
sudo apt-get install varnish libvarnish-dev
2: Настройка Varnish
Когда на сервере установлены nginx и varnish, их нужно настроить, чтобы снизить нагрузку на виртуальный сервер.
Varnish будет обслуживать контент на порту 80, отделяя его от Nginx, который будет работать на порту 8080.
Итак, откройте файл /etc/default/varnish:
sudo nano /etc/default/varnish
Найдите строки под DAEMON_OPTS (раздел Alternative 2) и с помощью флага -а измените номер порта на 80. Должно получиться так:
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"
Это единственное изменение, которое нужно внести в этот файл. Сохраните и закройте его, а затем откройте файл default.vcl:
sudo nano /etc/varnish/default.vcl
Этот файл сообщает varnish о местонахождении контента сайта. Он уже должен указывать на бэкэнд (т.е. nginx) прослушивающий на порту 8080.
WordPress полон различных куки-файлов, которые значительно усложняют кэширование. Чтобы Varnish работал более эффективно, нужно сказать ему удалить все куки, которые не относятся к административной части сайта WordPress.
Кроме того, Varnish должен удалить все куки, которые усложняют кэширование WordPress.
Начало файла default.vcl должно выглядеть так:
[...]
backend default {
.host = "127.0.0.1";
.port = "8080";
}
# Drop any cookies sent to WordPress.
sub vcl_recv {
if (!(req.url ~ "wp-(login|admin)")) {
unset req.http.cookie;
}
}
# Drop any cookies WordPress tries to send back to the client.
sub vcl_fetch {
if (!(req.url ~ "wp-(login|admin)")) {
unset beresp.http.set-cookie;
}
}
[...]
3: Настройка Nginx
Хотя в настройках Varnish уже указано, что Nginx работает на порту 8080, настройки Nginx по умолчанию все еще содержат порт 80. Это нужно исправить.
Откройте файл виртуального хоста, содержащий информацию WordPress. В предыдущем руководстве о WordPress он был назван wordpress:
sudo nano /etc/nginx/sites-available/wordpress
Виртуальный хост нужно также установить на порт 8080; кроме того, он должен быть доступным только с локального хоста. Отредактированная строка имеет такой вид:
[...]
server {
listen 127.0.0.1:8080; ## listen for ipv4; this line is default and implied
[...]
Последнее, что нужно сделать перед запуском varnish, – удалить файл виртуального хоста default:
sudo rm /etc/nginx/sites-enabled/default
При необходимости шаблон можно найти в каталоге sites-available.
4: Перезапуск Varnish и Nginx
Выполнив все вышеописанные действия, перезапустите Varnish и Nginx:
sudo service nginx restart
sudo service varnish restart
Перейдя на свой домен, можно увидеть кэшированную версию Varnish; чтобы просмотреть результаты работы Varnish на данном сервере, используйте команду:
varnishstat