doc:appunti:linux:sa:apache_php_optimization
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| doc:appunti:linux:sa:apache_php_optimization [2025/02/28 12:24] – [Web Resources] niccolo | doc:appunti:linux:sa:apache_php_optimization [2025/03/31 10:42] (current) – [Metodo chroot] niccolo | ||
|---|---|---|---|
| Line 9: | Line 9: | ||
| I moduli disponibili installati dal pacchetto **apache2** sono **event**, **prefork** e **worker**. | I moduli disponibili installati dal pacchetto **apache2** sono **event**, **prefork** e **worker**. | ||
| + | |||
| + | Per una configurazione Apache + PHP-FPM, il modulo MPM event è la scelta preferita. Offre migliori prestazioni, | ||
| ===== Modulo MPM prefork e mod-php ===== | ===== Modulo MPM prefork e mod-php ===== | ||
| Line 31: | Line 33: | ||
| </ | </ | ||
| - | ===== Modulo MPM (quale?), proxy_fcgi e php-fpm ===== | + | ===== Modulo MPM event, proxy_fcgi e php-fpm ===== |
| - | + | ||
| - | FIXME Quale modulo MPM usare? event oppure worker? | + | |
| Secono le **[[https:// | Secono le **[[https:// | ||
| Line 73: | Line 73: | ||
| systemctl status php8.2-fpm | systemctl status php8.2-fpm | ||
| </ | </ | ||
| + | |||
| + | Infine si cambia il modulo MPM da prefork a event: | ||
| + | |||
| + | < | ||
| + | a2dismod mpm_prefork | ||
| + | a2enmod mpm_event | ||
| + | systemctl restart apache2.service | ||
| + | </ | ||
| + | |||
| + | Controllare che le pagine PHP siano correttamente interpretate e che il modulo MPM event sia effettivamente in uso: | ||
| + | |||
| + | < | ||
| + | apachectl -V | grep ' | ||
| + | Server MPM: event | ||
| + | </ | ||
| + | |||
| === Altri moduli Apache consigliati === | === Altri moduli Apache consigliati === | ||
| Line 149: | Line 165: | ||
| </ | </ | ||
| </ | </ | ||
| + | |||
| + | ===== Segregazione VirtualHost ===== | ||
| + | |||
| + | Su un host che ospita più di un VirtualHost potrebbe essere desiderabile isolare il PHP di un VirtualHost dai file degli altri VirtualHost ed anche dai file dell' | ||
| + | |||
| + | Essenzialmente si può agire con un **chroot** per processo PHP oppure con la direttiva **open_basedir** del PHP. | ||
| + | |||
| + | Il primo metodo è quello formalmente più corretto e sicuro, in quanto il processo PHP sarebbe effettivamente in esecuzione in un ambiente chroot e sarebbe il sistema operativo stesso a impedirgli di accedere fuori dalla propria DocumentRoot. Tuttavia questo metodo comporta **notevoli problemi** perché ad esempio impedisce l' | ||
| + | |||
| + | Il metodo che utilizza la direttiva **open_basedir** invece è più flessibile, ma affida la sicurezza all' | ||
| + | |||
| + | ==== Metodo chroot ==== | ||
| + | |||
| + | Supponiamo che la DocumentRoot di un sito sia **/ | ||
| + | |||
| + | < | ||
| + | [site.example.org] | ||
| + | user = site-example-org | ||
| + | group = site-example-org | ||
| + | |||
| + | ; This PHP-FPM instance is chrooted. | ||
| + | chroot = / | ||
| + | chdir = /www | ||
| + | ; Values set here with php_admin_value belong to this pool only. | ||
| + | ; doc_root: (without chroot would be empty or the Apache DocumentRoot). | ||
| + | php_admin_value[doc_root] = /www | ||
| + | ; cgi.fix_pathinfo: | ||
| + | ; See https:// | ||
| + | php_admin_value[cgi.fix_pathinfo] = 0 | ||
| + | </ | ||
| + | |||
| + | In questo modo si ha un processo **php-fpm** che gira con le credenziali di //user// e //group// indicate e che è chrooted nella directory indicata. | ||
| + | |||
| + | Purtroppo questa soluzione impedisce il corretto funzionamento delle librerie PHP, ad esempio il pacchetto **php-mail** installa i propri file in **/ | ||
| + | |||
| + | Vedere la discussione **[[https:// | ||
| + | |||
| + | ==== Metodo open_basedir ==== | ||
| + | |||
| + | Con la direttiva PHP **open_basedir** si pone un limite a tutte le funzioni PHP che aprono file dal filesystem (ad esempio '' | ||
| + | |||
| + | Ecco quindi come configurare l' | ||
| + | |||
| + | < | ||
| + | [site.example.org] | ||
| + | user = site-example-org | ||
| + | group = site-example-org | ||
| + | php_admin_value[open_basedir] = / | ||
| + | </ | ||
| + | |||
| + | Come si vede è necessario avere l' | ||
| ===== Web Resources ===== | ===== Web Resources ===== | ||
doc/appunti/linux/sa/apache_php_optimization.1740741848.txt.gz · Last modified: by niccolo
