От както google започнаха да обичат https сайтовете, повече се налага масова инсталация на SSL-и където може. Като цяло освен повече тормоз за сървърите имаме и деградация в скоростта. Хубавото е, че HTTP2 стандарта вече над година и половина се интегрира във всички големи http сървъри и браузъри и поддръжката му достатъчно стабилна. За съжаление debian stable няма пакети които да поддържат HTTP2 в основните http сървъри. Версиите които са ни необходими за да работи HTTP2 са както следва:
- Apache > 2.4.17
- Nginx > 1.9.5
- останалите персонално не ме вълнуват (lighttpd имат евентуално планирано…..)
При мен мешаницата е голяма и според зависи се ползва apache или nginx. Все още не съм си играл да пускам на apache http2 на debian 8 тъй като не ми се е налагало но в backports репото го има така, че няма да е голям проблем. За nginx е вече го играхме няколко пъти. Като цяло стъпките са няколко и относително прости:
- Добавяме nginx официалното репо – в debian весията е 1.6.х 🙄
- Инсталираме си openssl от backports към момента е 1.0.2к – това ни трябва за ALPN подръжката за да може всичко да работи и да е бързичко
- инсталираме си devscripts – тук е момента да споделя че ще си билднем наш пакет защото официалният е компилиран с openssl 1.0.1t при който не работи ALPN и браузърите не му реагират добре и работи http2-то само ако го форсираш
- инкрементираме версията за да не правим hold циганията с пакетите а като има нова версия само да синкенм сорсовете
Нека да започнем стъпка по стъпка
Добавяне на nginx repo
deb http://nginx.org/packages/debian/ codename nginx deb-src http://nginx.org/packages/debian/ codename nginx
Добавяне на openssl 1.0.2k и dev библиотеката в противен случай ще си го билднем пак с 1.0.1t което не ни е целта
echo 'deb http://ftp.debian.org/debian jessie-backports main' | tee /etc/apt/sources.list.d/backports.list apt update && apt install libssl-dev -t jessie-backports
Сега остана да си добавим библиотеките необходими за компилацията на nginx
apt install devscripts apt build-dep nginx mkdir nginx-build cd nginx-build apt-get source nginx
Ако сте работили коректно трябва да имате структура от рода на
~/nginx-build # ll total 1004 drwxr-xr-x 10 root root 4096 Feb 21 18:37 nginx-1.10.3 -rw-r--r-- 1 root root 103508 Jan 31 17:59 nginx_1.10.3-1~jessie.debian.tar.xz -rw-r--r-- 1 root root 1495 Jan 31 17:59 nginx_1.10.3-1~jessie.dsc -rw-r--r-- 1 root root 911509 Jan 31 17:59 nginx_1.10.3.orig.tar.gz
Влизате в папта в която е разархивиран сорса на nginx в моят случай е и nginx-1.10.3 изпълнявате команда с която инкрементирате версията, аз лично предпочитам да добавя 1 към настоящият билд
debchange --newversion 1.10.3-1
След като си добавите changelog-а по избор може да се пристъпи към същинската компилация
debuild -us -uc -i -I -b -j6
Малко разяснение по конфигурацията на командата:
-us -uc казват на скрипта да не „подписва“ .dsc и .changes файловете. -i и -I карат скрипта да игнорира файловете за контрол на версия. -B да се генерира само бинарен пакет. -j както при make с колко паралелни процеса да се компилира 🙂
След като приключи горният процес следва да си инсталираме нашите нови пакети. Ако имате вече инсталиран nginx е добре да го деинсталирате
apt remove nginx nginx-*
Също не лоша идея е да си направите бекъп на nginx папката в /etc. По принцип при ъпгрейд от 1.6.5 към 1.10.3 нямах драми но никога не се знае. Новите пактеи се намират в папката от по горно ниво и следва да се инсталират с команда от рода на:
dpkg -i ../*.deb
Ако всичко е минало гладко ви остава само да си пуснете nginx процеса и да си се конфигурира http2 което вече не е цел на тази статия.