Как установить Varnish + Apache2 на Ubuntu 16
- 20 Октября 2016
- Volodymyr Hodiak
- Администрирование
- 7466
Varnish — это гибкий инструмент для ускорения работы сервера. Не буду писать много текста о нем, этой информации более чем достаточно в интернете.
Здесь я опишу процесс установки, проблемы, которые могут возникнуть и их решения.
Ставим Apache2
sudo apt-get update sudo apt-get install apache2
Для теста переходим по http://localhost. Открылась стандартная заглушка, значит дальше.
Ставим Varnish
sudo apt-get install varnish
Настройка Varnish
Мы настроим связь с Apache2 по следующему алгоритму: Varnish слушает 80 порт, а зв'связь с Apache2 осуществляется через 81 порт.
Откроем файл конфигурации
nano /etc/default/varnish
Меняем:
DAEMON_OPTS="-a :6081 \ -T localhost:6082 \ -f /etc/varnish/default.vcl \ -S /etc/varnish/secret \ -t 120 \ -s malloc,256m"
На:
DAEMON_OPTS="-a :80 \ -T localhost:6082 \ -f /etc/varnish/default.vcl \ -S /etc/varnish/secret \ -t 120 \ -s malloc,256m"
Теперь нужно изменить конфигурацию Varnish VCL.
nano /etc/varnish/default.vcl
backend default { .host = "127.0.0.1"; .port = "81"; }
Базовые настройки Varnish завершена.
Настройки Apache2
Нам нужно указать Apache2 чтобы слушал 81 порт.
sudo nano /etc/apache2/ports.conf
Меняем дефолтный 80 порт на 81.
NameVirtualHost 127.0.0.1:81 Listen 127.0.0.1:81
Осталось изменить виртуальный хост. Для этой статьи я создал новый дроплет в DigitalOcean, поэтому здесь дефолтный хост (000-default.conf). Если у вас есть другие хосты, не забудьте поменять настройки и в них.
nano /etc/apache2/sites-enabled/000-default.conf
Меняем порт:
...
Все. Осталось перезагрузить Apache2 и Varnish, чтобы задействовать конфиги.
sudo service apache2 restart sudo service varnish restart
И проверить результат.
Если у вас возникла ошибка ERR_CONNECTION_REFUSED, не страшно. Сперва посмотрим, какие порты использует Varnish
ps aux | grep vcache
vcache 15569 0.0 0.7 125044 7816 ? Ss 08:20 0:00 /usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m vcache 15581 0.0 9.3 272012 94900 ? Sl 08:20 0:00 /usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
Мы видим, что порт 6081 до сих пор задействован. Проблему я нашел в этом файле:
nano /lib/systemd/system/varnish.service
Меняем
[...] ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m [...]
на
[...] ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m [...]
Опять перезапуск сервисов
systemctl daemon-reload systemctl restart apache2.service systemctl restart varnish.service
Можно посмотреть статистику работы командой:
varnishstat
И финальный тест:
curl -I http://sever_ip
HTTP/1.1 200 OK [...] Content-Type: text/html X-Varnish: 32771 Age: 0 Via: 1.1 varnish-v4 [...]