Ubuntu ve Debian’da Apache Web Sunucusunda HTTP/2 Nasıl Etkinleştirilir

Share

Hypertext Transfer Protocol Version 2 (HTTP/2), 2015 yılında RFC 7540’ta bir IETF standardı olarak yayınlanan HTTP protokolünün en son sürümüdür. Protokolün odak noktası performanstır; özellikle, son kullanıcı tarafından algılanan gecikme, ağ ve sunucu kaynak kullanımı. Ana hedeflerden biri, tarayıcılardan bir Web sitesine tek bir bağlantının kullanılmasına izin vermektir. Protokol geriye dönük olarak uyumludur, bu nedenle HTTP yöntemleri, durum kodları ve anlam bilgisi, protokolün önceki sürümleriyle aynıdır. Apache, 2.4.17 sürümünden beri HTTP/2 desteğine sahiptir. Bu öğreticide, zaten çalışan bir TLS yapılandırmanız olduğunu ve seçtiğiniz Linux dağıtımınızda gerekli Apache sürümünün kurulu olduğunu ve Let’s Encrypt’i nasıl kullanacağınızı veya nasıl yapacağınızı bildiğinizi varsayacağım. kendinden imzalı bir sertifika yayınlayın.

Bu öğretici Debian 10, Debian 9, Ubuntu 20.04 LTS ve Ubuntu 18.04 LTS üzerinde test edilmiştir.

Önkoşullar

Apache’de HTTP/2’yi etkinleştirmek için aşağıdaki gereksinimleri karşılamanız gerekir:

İlk olarak, sunucunuzda HTTPS’yi etkinleştirmeniz gerekir. Tüm büyük tarayıcılar, yalnızca HTTPS üzerinden HTTP/2 kullanımına izin verir. Ayrıca, modern şifre paketleriyle TLS protokol sürümü >= 1.2 gereklidir.
Ardından, HTTP/2 bu sürüm ve sonrasında desteklendiğinden Apache 2.4.17 veya üstünü çalıştırdığınızdan emin olun.
Ayrıca, istemcinizin/tarayıcınızın gerçekten HTTP/2’yi desteklediğinden emin olun.

mod_php modülünü devre dışı bırakın

Bir sonraki adımda Apache MPM modülünü mpm_event’e geçirmeden önce, eski mod_php modunu devre dışı bırakmamız ve onu daha modern PHP-FPM moduyla değiştirmemiz gerekecek. Komutlar her İşletim sistemi sürümü için farklılık gösterir, lütfen kurulu sisteminize uyanları kullanın.

Ubuntu 20.04 LTS

sudo apt-get install php7.4-fpm
sudo a2dismod php7.4
sudo a2enconf php7.4-fpm
sudo a2enmod proxy_fcgi

Debian 10

sudo apt-get install php7.3-fpm
sudo a2dismod php7.3
sudo a2enconf php7.3-fpm
sudo a2enmod proxy_fcgi

HTTP/2 ile uyumlu bir Apache MPM’yi etkinleştirin

Varsayılan olarak, Apache prefork MPM’yi kullanır. Bu MPM, HTTP/2 ile uyumlu değil, bu yüzden onu daha modern mpm_event modülüyle değiştirmemiz gerekecek.

İlk önce mpm_prefork modülünü devre dışı bırakıyoruz:

sudo a2dismod mpm_prefork

Ardından mpm_event modülünü etkinleştiriyoruz:

sudo a2enmod mpm_event

Apache’de HTTP/2 desteğini etkinleştirin

HTTP/2’nin Apache üzerinde çalışmasını sağlamak için SSL ve HTTP/2 modüllerini etkinleştirmeniz ve yüklemeniz gerekir. Bunu yapmak için terminalinizde aşağıdakileri çalıştırabilirsiniz:
sudo a2enmod ssl
ve daha sonra
sudo a2enmod http2
Bu yeni modülleri etkinleştirmek için şunları çalıştırmanız gerekir:
sudo systemctl restart apache2

Gerekli Apache modüllerini etkinleştirip yükledikten sonra, Apache yapılandırma dizininize gidin ve Apache yapılandırmasını düzenleyin.

Apache web sunucunuzda HTTP/2’yi etkinleştirmek için genel Apache yapılandırmanıza veya belirli bir sanal ana bilgisayarın içine aşağıdakilerden birini ekleyin.

Protocols h2 http/1.1

Bazı sanal konaklarda HTTP/2’yi etkinleştirmek için kullanılabilecek minimum sanal sunucu yapılandırması aşağıda verilmiştir:

  ServerName example.com
  ServerAlias www.example.com
  DocumentRoot /var/www/public_html/example.com
  SSLEngine on
  SSLCertificateKeyFile /path/to/private.pem
  SSLCertificateFile /path/to/cert.pem
  SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
  Protocols h2 http/1.1

Sunucunuzun HTTP/2’yi destekleyip desteklemediğini kontrol etmek için tarayıcı geliştirme araçlarınızı kullanabilirsiniz. Aşağıdakiler, https://example.com etki alanında HTTP/2’yi çalışırken gösteren Google Chrome ve Apple Safari tarayıcılarından alınan ekran görüntüleridir.

Ubuntu ve Debian'da Apache Web Sunucusunda HTTP/2 Nasıl Etkinleştirilir