Installer HTTP/2
a2enmod http2
systemctl restart apache2
Je ne vais pas vous faire un cours sur Installer HTTP/2, renseignez-vous...
et rajoutez Protocols h2 http/1.1 dans vos virtual hosts (dans la config du https (443) et surtout pas dans le http:
<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        ServerName www.example.com
        ServerAlias example.com
        DocumentRoot /var/www/example.com
        <Directory />
                Require all denied
                Options -Indexes -Includes -ExecCGI -FollowSymlinks
        </Directory>
        <Directory /var/www/example.com>
                Require all granted
                Options -Indexes -Includes -ExecCGI +FollowSymlinks
        </Directory>
        ErrorLog /var/log/apache2/example.com.log
        # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
        LogLevel warn
        CustomLog /var/log/apache2/access.log combined
        Protocols h2 http/1.1
        SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
a2enmod http2
systemctl restart apache2
Tester HTTP/2
Testez avec par exemple: https://tools.keycdn.com/http2-test
si cela ne fonctionne pas c'est peut être que par défaut Apache utilise le module MPM prefork (Multi-Processing Module prefork module)
donc:
Installer PHP’s FPM package :
aptitude install php7.3-fpmActivez certains modules :
a2enmod proxy_fcgi setenvifActivez PHP’s FPM :
a2enconf php7.3-fpmDésactivez MPM prefork :
a2dismod php7.3 mpm_preforkActivez le module MPM event module, comme substitut à prefork :
a2enmod mpm_eventredémarrez apache
systemctl restart apache2Autres réglages
Dans ma première tentative de mettre en place php7.3-fpm, apache plantait souvent, et j'avais ceci dans mes logs:
 server reached pm.max_children setting (5), consider raising it
Du coup j'ai paramétré ceci:
pm.max_children = 50
J'avoue ne pas savoir trop quoi mettre comme valeur...pour plus d'info:
https://serverfault.com/questions/479443/php5-fpm-server-reached-pm-max-children
https://myshell.co.uk/blog/2012/07/adjusting-child-processes-for-php-fpm-nginx/
Et pour redémarrer php-fpm automatiquement:
emergency_restart_threshold=3
emergency_restart_interval=1m
process_control_timeout=5s
Cela veut dire si 3 PHP-FPM child process se terminent avec SIGSEGV ou SIGBUS (c.-à-d. Crash) dans l'intervalle d'1 minute, PHP-FPM est censé redémarrer automatiquement. Les child process attendent 5 secondes avant de réagir aux signaux du master.
Sources:
- https://serverfault.com/questions/575457/constantly-have-to-reload-php-fpm
- https://www.php.net/manual/en/install.fpm.configuration.php
Et pour initialiser tous ces changements de configuration:
service php7.3-fpm restart