- Włączenie modułu apache2 http2
- Zmiany w virtual hosts
- Zmiany w PHP
Sprawdź wersję Apache (powinna być ≥ 2.4.17):
# apache2 -v
Włącz moduły http2 i ssl
# a2enmod http2 # a2enmod ssl
Skonfiguruj Virtual Host dla HTTPS
<VirtualHost *:443> # ... istniejące ustawienia SSL ... # Włącz HTTP/2 Protocols h2 http/1.1 # Zalecane ustawienia SSL dla kompatybilności z HTTP/2 SSLEngine on SSLCertificateFile /ścieżka/do/certyfikatu.crt SSLCertificateKeyFile /ścieżka/do/klucza.key SSLCipherSuite EECDH+CHACHA20:EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 </VirtualHost>
Sprawdź MPM (Multi-Processing Module)
HTTP/2 wymaga użycia MPM event nie prefork
# apachectl -M | grep mpm mpm_prefork_module (shared)
a2dismod mpm_prefork a2enmod mpm_event
Uwaga: Jeśli używasz mod_php (np. dla PHP), musisz przejść na php-fpm, ponieważ mod_php nie jest kompatybilny z MPM event.
# apt install php8.4-fpm
# a2dismod php8.4 # Wyłącza moduł mod_php
Włącza wymagane moduły Apache2
# a2enmod proxy_fcgi setenvif # a2enconf php8.4-fpm # Tworzy konfigurację dla FPM
# ls - l /etc/apache2/conf-available/php8.4-fpm.conf # plik konfig.
Skonfiguruj Apache do współpracy z php-fpm:
Edytuj konfigurację Twojego hosta wirtualnego (np. /etc/apache2/sites-available/example.conf
) i dodaj:
<FilesMatch "\.php$"> SetHandler "proxy:unix:/run/php/php8.4-fpm.sock|fcgi://localhost" </FilesMatch>
lub dodaj globalną konfigurację w /etc/apache2/conf-available/php8.4-fpm.conf
:
<IfModule proxy_fcgi_module> <FilesMatch "\.php$"> SetHandler "proxy:unix:/run/php/php8.4-fpm.sock|fcgi://localhost/" </FilesMatch> </IfModule>
Restart usług
# systemctl restart apache2 php8.4-fpm
Testy php-fpm i http2
# systemctl status php8.4-fpm phpinfo(); exit; # w skrypcie
# curl -I --http2 -k https://twoja-domena.pl
Pliki konfiguracyjne
/etc/php/8.4/fpm/pool.d/www.conf # FPM np.pm.max_children
,pm.start_servers
/etc/php/8.4/fpm/php.ini # zamiast w /etc/php/8.4/apache2/php.ini