Jinsi ya kuwezesha HTTP/2 katika Apache kwenye Ubuntu


Tangu kuanzishwa kwa Mtandao Wote wa Ulimwenguni (www), itifaki ya HTTP imebadilika kwa miaka mingi ili kutoa maudhui salama na ya haraka ya kidijitali kupitia mtandao.

Toleo linalotumika sana ni HTTP 1.1 na ingawa lina viboreshaji vya vipengele na uboreshaji wa utendakazi ili kushughulikia mapungufu ya matoleo ya awali, halijafikia vipengele vingine vichache muhimu ambavyo vimeshughulikiwa na HTTP/2.

Itifaki ya HTTP/1.1 imejaa mapungufu yafuatayo ambayo yanaifanya isiwe bora haswa wakati wa kuendesha seva za wavuti zenye trafiki nyingi:

  1. Kuchelewa kupakia kurasa za wavuti kwa sababu ya vichwa virefu vya HTTP.
  2. HTTP/1.1 inaweza kutuma ombi moja tu kwa kila faili kwa kila muunganisho wa TCP.
  3. Kwa kuzingatia kwamba HTTP/1.1 huchakata ombi moja kwa kila muunganisho wa TCP, vivinjari vinalazimika kutuma mafuriko ya miunganisho ya TCP sambamba ili kuchakata maombi kwa wakati mmoja. Hii inasababisha msongamano wa TCP na hatimaye upotevu wa bandwidth na uharibifu wa mtandao.

Matatizo yaliyotajwa hapo juu mara nyingi yalisababisha uharibifu wa utendaji na gharama za juu za matumizi ya bandwidth. HTTP/2 ilikuja kwenye picha kushughulikia matatizo haya na sasa ni ya baadaye kwa itifaki za HTTP.

Inatoa faida zifuatazo:

  1. Mfinyazo wa vichwa ambao hupunguza maombi ya mteja na hivyo kupunguza matumizi ya kipimo data. Matokeo yake ni kasi ya upakiaji wa ukurasa.
  2. Kuongeza maombi kadhaa kupitia muunganisho mmoja wa TCP. Seva na mteja wanaweza kugawanya ombi la HTTP katika fremu nyingi na kuzipanga tena kwa upande mwingine.
  3. Maonyesho ya haraka ya wavuti ambayo kwa hivyo husababisha kiwango bora cha SEO.
  4. Usalama ulioimarishwa kwa kuwa vivinjari vingi vya kawaida hupakia HTTP/2 kupitia HTTPS.
  5. HTTP/2 inachukuliwa kuwa ya kirafiki zaidi kutokana na kipengele cha kubana kwa kichwa.

Hiyo ilisema, tutawasha HTTP/2 kwenye Apache kwenye Ubuntu 20.04 LTS na Ubuntu 18.04 LTS.

Kabla ya kuanza, hakikisha kuwa umewasha HTTPS kwenye seva ya wavuti ya Apache kabla ya kuwezesha HTTP/2. Hii ni kwa sababu vivinjari vyote vya kawaida vya wavuti vinaauni HTTP/2 kupitia HTTPS. Nina jina la kikoa lililoelekezwa kwa mfano kwenye Ubuntu 20.04 ambayo ni cheti cha Wacha Tusimba.

Pia, inashauriwa uwe na Apache 2.4.26 na matoleo ya baadaye kwa seva za uzalishaji zinazonuia kuhama hadi HTTP/2.

Kuangalia toleo la Apache unaloendesha, tekeleza amri:

$ apache2 -v

Kutoka kwa matokeo, unaweza kuona kwamba tunatumia toleo la hivi punde, ambalo ni Apache 2.4.41 wakati wa kuandika nakala hii.

Washa HTTP/2 kwenye Apache Virtual Host

Ili kuanza, kwanza thibitisha kwamba seva ya tovuti inatumia HTTP/1.1. Unaweza kufanya hivi kwenye kivinjari kwa kufungua sehemu ya zana za msanidi kwenye Google chrome ukitumia mchanganyiko wa Ctrl +SHIFT + I. Bofya kwenye kichupo cha 'Mtandao' na upate safu ya 'Itifaki'.

Ifuatayo, wezesha moduli ya HTTP/2 kwenye Ubuntu kwa kuendesha amri ifuatayo.

$ sudo a2enmod http2

Kisha, tafuta na uhariri faili yako ya seva pangishi ya SSL, ikiwa umewasha HTTPS kwa kutumia Let's Encrypt, faili mpya inaundwa kwa kiambishi tamati cha le-ssl.conf.

$ sudo vim /etc/apache2/sites-enabled/your-domain-name-le-ssl.conf

Weka maagizo hapa chini baada ya lebo ya .

Protocols h2 http/1.1

Ili kuhifadhi mabadiliko, anzisha tena seva ya wavuti ya Apache.

$ sudo systemctl restart apache2

Ili kuangalia ikiwa HTTP/2 imewashwa, leta vichwa vya HTTP kwa kutumia amri ifuatayo ya curl kama onyesho.

$ curl -I --http2 -s https://domain.com/ | grep HTTP

Unapaswa kupata matokeo yaliyoonyeshwa.

HTTP/2 200

Kwenye kivinjari, pakia upya tovuti yako. Kisha rudi kwenye zana za msanidi na uthibitishe HTTP/2 inayoashiriwa na lebo ya h2 kwenye safu wima ya ‘Itifaki’.

Wakati wa kutumia Mod_php Moduli na Apache

Ikiwa unatumia Apache kando ya mod_php moduli, unahitaji kubadili PHP-FPM. Hii ni kwa sababu moduli ya mod_php hutumia moduli ya prefork MPM ambayo haitumiki na HTTP/2. Unahitaji kusanidua MPM ya prefork na ubadilishe hadi moduli ya mpm_event ambayo itaauniwa na HTTP/2.

Ikiwa unatumia moduli ya PHP 7.4 mod_php, kwa mfano, izima kama inavyoonyeshwa:

$ sudo a2dismod php7.4 

Baada ya hapo, zima moduli ya prefork MPM.

$ sudo a2dismod mpm_prefork

Baada ya kulemaza moduli, ifuatayo, wezesha moduli za Tukio MPM, Fast_CGI, na setenvif kama inavyoonyeshwa.

$ sudo a2enmod mpm_event proxy_fcgi setenvif

Sakinisha PHP-FPM kwenye Ubuntu

Ifuatayo, sakinisha na uanze PHP-FPM kama inavyoonyeshwa.

$ sudo apt install php7.4-fpm 
$ sudo systemctl start php7.4-fpm

Kisha wezesha PHP-FPM kuanza wakati wa kuwasha.

$ sudo systemctl enable php7.4-fpm

Ifuatayo, wezesha PHP-FPM kama kidhibiti cha Apache cha PHP na uanze tena seva ya wavuti ya Apache ili mabadiliko yafanyike.

$ sudo a2enconf php7.4-fpm

Washa Usaidizi wa HTTP/2 katika Apache Ubuntu

Kisha wezesha moduli ya HTTP/2 kama hapo awali.

$ sudo a2enmod http2

Anzisha tena Apache ili kusawazisha mabadiliko yote.

$ sudo systemctl restart apache2

Hatimaye, unaweza kujaribu ikiwa seva yako inatumia itifaki ya HTTP/2 kwa kutumia amri ya curl kama inavyoonyeshwa.

$ curl -I --http2 -s https://domain.com/ | grep HTTP

Unaweza pia kuchagua kutumia zana za wasanidi programu kwenye kivinjari cha Google Chrome ili kuthibitisha kama ilivyoandikwa mapema. Tuna hadi mwisho wa mwongozo huu, Tunatumahi umepata maelezo kuwa muhimu na kwamba unaweza kuwezesha HTTP/2 kwa urahisi kwenye Apache.