Як встановити Varnish + Apache2 на Ubuntu 16
- 20 Жовтня 2016
- Volodymyr Hodiak
- Адміністрування
- 7450
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 [...]