Giunsa Pag-enable ang HTTP/2 sa Apache sa Ubuntu


Sukad sa pagsugod sa World Wide Web (www), ang HTTP protocol nag-uswag sa daghang mga tuig aron maghatag luwas ug paspas nga digital nga sulud sa internet.

Ang labing kaylap nga gigamit nga bersyon mao ang HTTP 1.1 ug samtang kini nagputos sa mga pagpauswag sa mga bahin ug pag-optimize sa pasundayag aron matubag ang mga kakulangan sa mga naunang bersyon, kulang kini sa pipila ka ubang mga hinungdanon nga bahin nga gitubag sa HTTP/2.

Ang HTTP/1.1 nga protocol puno sa mosunod nga mga kakulian nga naghimo niini nga dili kaayo maayo ilabi na kung nagdagan sa taas nga trapiko sa mga web server:

  1. Paglangay sa pagkarga sa mga panid sa web tungod sa taas nga mga ulohan sa HTTP.
  2. Ang HTTP/1.1 kay makapadala lang ug usa ka hangyo para sa matag file kada koneksyon sa TCP.
  3. Tungod kay giproseso sa HTTP/1.1 ang usa ka hangyo alang sa matag koneksyon sa TCP, ang mga browser napugos sa pagpadala ug usa ka baha sa parehas nga koneksyon sa TCP aron dungan nga maproseso ang mga hangyo. Nagdala kini sa paghuot sa TCP ug sa katapusan pag-usik sa bandwidth ug pagkadaot sa network.

Ang nahisgutan sa ibabaw nga mga problema kanunay nga misangpot sa pagkadaot sa pasundayag ug taas nga gasto sa overhead sa paggamit sa bandwidth. Ang HTTP/2 mianhi sa hulagway aron matubag kini nga mga problema ug mao na ang umaabot alang sa mga protocol sa HTTP.

Kini nagtanyag sa mosunod nga mga bentaha:

  1. Ang header compression nga nagpamenos sa mga hangyo sa kliyente ug sa ingon nagpaubos sa konsumo sa bandwidth. Ang resulta nga epekto mao ang paspas nga pagkarga sa panid.
  2. Pag-multipleks sa daghang mga hangyo sa usa ka koneksyon sa TCP. Ang server ug ang kliyente mahimong mabungkag ang usa ka HTTP nga hangyo ngadto sa daghang mga frame ug igrupo kini pag-usab sa pikas tumoy.
  3. Mas paspas nga mga pasundayag sa web nga misangpot sa mas maayong ranggo sa SEO.
  4. Gipauswag nga seguridad tungod kay kadaghanan sa mga mainstream nga browser nagkarga sa HTTP/2 sa HTTPS.
  5. Ang HTTP/2 gikonsiderar nga mas mobile-friendly salamat sa header compression feature.

Ingon niana, atong palihokon ang HTTP/2 sa Apache sa Ubuntu 20.04 LTS ug Ubuntu 18.04 LTS.

Sa dili pa magsugod, siguroha nga imong mahimo ang HTTPS sa Apache webserver sa dili pa ma-enable ang HTTP/2. Kini tungod kay ang tanan nga mainstream web browser nagsuporta sa HTTP/2 sa HTTPS. Naa koy domain name nga gitumong sa usa ka pananglitan sa Ubuntu 20.04 nga Let's Encrypt certificate.

Usab, kini girekomendar nga ikaw adunay Apache 2.4.26 ug sa ulahi nga mga bersyon alang sa mga server sa produksiyon nga nagtinguha sa paghimo sa pagbalhin ngadto sa HTTP/2.

Aron masusi ang bersyon sa Apache nga imong gipadagan, ipatuman ang sugo:

$ apache2 -v

Gikan sa output, imong makita nga kami naggamit sa pinakabag-o nga bersyon, nga mao ang Apache 2.4.41 sa panahon sa pagsulat niini nga artikulo.

I-enable ang HTTP/2 sa Apache Virtual Host

Aron makasugod, kumpirmahi una nga ang webserver nagpadagan sa HTTP/1.1. Mahimo nimo kini sa usa ka browser pinaagi sa pag-abli sa seksyon sa mga himan sa developer sa Google chrome gamit ang Ctrl +SHIFT + I nga kombinasyon. Pag-klik sa tab nga 'Network' ug pangitaa ang kolum nga 'Protocol'.

Sunod, i-enable ang HTTP/2 module sa Ubuntu pinaagi sa pagpadagan sa mosunod nga command.

$ sudo a2enmod http2

Sunod, pangitaa ug i-edit ang imong SSL virtual host file, kung imong gipagana ang HTTPS gamit ang Let's Encrypt, usa ka bag-ong file ang gihimo nga adunay le-ssl.conf suffix.

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

Isulod ang direktiba sa ubos pagkahuman sa tag.

Protocols h2 http/1.1

Aron matipigan ang mga pagbag-o, i-restart ang Apache webserver.

$ sudo systemctl restart apache2

Aron masusi kung gi-enable ba ang HTTP/2, kuhaa ang mga header sa HTTP gamit ang mosunod nga curl command as show.

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

Kinahanglan nimo makuha ang output nga gipakita.

HTTP/2 200

Sa browser, i-reload ang imong site. Dayon balik sa mga himan sa developer ug kumpirmahi ang HTTP/2 nga gipaila sa h2 label sa 'Protocol' column.

Kung Gigamit ang Mod_php Module sa Apache

Kung nagdagan ka sa Apache kauban ang mod_php module, kinahanglan nimo nga mobalhin sa PHP-FPM. Kini tungod kay ang mod_php module naggamit sa prefork MPM module nga wala gisuportahan sa HTTP/2. Kinahanglan nimong i-uninstall ang prefork MPM ug ibalhin sa mpm_event module nga suportahan sa HTTP/2.

Kung gigamit nimo ang PHP 7.4 mod_php module, pananglitan, pag-disable kini sama sa gipakita:

$ sudo a2dismod php7.4 

Pagkahuman, i-disable ang prefork MPM module.

$ sudo a2dismod mpm_prefork

Human ma-disable ang mga module, sunod, i-enable ang Event MPM, Fast_CGI, ug setenvif modules sama sa gipakita.

$ sudo a2enmod mpm_event proxy_fcgi setenvif

I-install ang PHP-FPM sa Ubuntu

Sunod, i-install ug sugdi ang PHP-FPM sama sa gipakita.

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

Dayon i-enable ang PHP-FPM nga magsugod sa boot time.

$ sudo systemctl enable php7.4-fpm

Sunod, i-enable ang PHP-FPM isip Apache's PHP handler ug i-restart ang Apache webserver alang sa mga pagbag-o nga mahimo.

$ sudo a2enconf php7.4-fpm

I-enable ang HTTP/2 Support sa Apache Ubuntu

Dayon i-enable ang HTTP/2 module sama kaniadto.

$ sudo a2enmod http2

I-restart ang Apache aron ma-synchronize ang tanan nga mga pagbag-o.

$ sudo systemctl restart apache2

Sa katapusan, mahimo nimong sulayan kung ang imong server naggamit sa HTTP/2 protocol gamit ang curl command sama sa gipakita.

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

Mahimo ka usab nga mopili sa paggamit sa mga himan sa developer sa browser sa Google Chrome aron mapamatud-an sama sa nauna nga nadokumento. Kinahanglan namon nga matapos kini nga giya, Kami nanghinaut nga imong nakit-an ang kasayuran nga bililhon ug nga mahimo nimo nga komportable ang HTTP/2 sa Apache nga dali.