PHP Handlers: DSO vs CGI vs suPHP vs FastCGI

Logo PHP
PHP Handlers: DSO (mod_php) vs. CGI vs. suPHP vs. FastCGI

PHP Handlers: DSO (mod_php) vs. CGI vs. suPHP vs. FastCGI! Volete sapere le differenze tra questi handler PHP (Gestori PHP)? Continuate a leggere questo articolo…

Per quanto siano importanti questi handlers (gestori) PHP, molto spesso non vengono approfonditi nemmeno dai webmaster più all’avanguardia. Sembrano complicati, ma in realtà non è poi così difficile capire il loro funzionamento. Non dovete per forza approfondire la loro scienza nello specifico, ma se avete intenzione di creare un sito web serio dovete almeno conoscere le loro basi.

Usando il giusto handler PHP otterremo più velocità per il nostro sito web e avremo anche la possibilità di risparmiare sulla memoria del nostro server, spendendo quindi anche meno soldi per il nostro piano di hosting. Vi invito quindi a prendervi qualche minuto per leggere questo articolo in modo da saperne di più.

Che cosa sono i PHP Handlers (Gestori PHP)?

Per avere un sito web in PHP abbiamo bisogno di un server che interpreti il codice PHP e che restituisca ai visitatori le pagine web già interpretate. Il server interpreta il codice basandosi sulla libreria che si sta utilizzando, ad esempio PHP 5 o PHP 7. Un handler PHP in pratica carica le librerie per far sì che queste possano essere utilizzate per l’interpretazione da parte del server. Questi gestori determinano come viene caricato e utilizzato il PHP sul server.

Esistono molti gestori che possono essere utilizzati per caricare il PHP: mod_ruid2 (NON RECENSITO IN QUESTO ARTICOLO – fate una ricerca sul web per saperne di più), CGI, DSO (mod_php), SuPHP, & FastCGI. Ogni handler gestisce le librerie in base a differenti implementazioni e file di utilizzo. Ogni file e ogni implementazione influenza le prestazioni di Apache, determinando come Apache deve servire il codice PHP delle pagine web.

E’ molto importante per le prestazioni del proprio server scegliere l’handler PHP più adatto al nostro ambiente. Selezionare il giusto handler PHP è importante ugualmente alla selezione della versione di PHP da utilizzare. Non necessariamente un handler è migliore di un altro. Dipende dal proprio setup o ambiente, di che tipo di cache abbiamo bisogno, di quali moduli ci servono, etc.

  • Nota: E’ possibile assegnare differenti handler PHP per ogni versione di PHP. Ad esempio, la versione 5 può essere gestita da CGI e nello stesso tempo la versione 7 può essere gestita da DSO.

Come cambiare l’handler

Per cambiare il gestore PHP possiamo agire dal nostro pannello cPanel. E’ molto semplice e richiede solo qualche secondo. Entrate in WHM (WebHost Manager) e andate in: Main >> Service Configuration >> Configure PHP and SuExec (Generale -> Configurazione servizi -> Gestione PHP e SuExec).

Selezionate l’handler PHP che preferite dal menu a tendina e poi premete su “Save New Configuration” (Salva Nuova Configurazione).

  • Nota: Se non vedete l’handler che avete scelto nel menu a tendina, ciò può significare che questo deve essere prima compilato sul server. Potete usare “Easy Apache” per farlo.

Lista PHP handlers

DSO (mod_php)

DSO è anche conosciuto come mod_php. DSO sta per: Dynamic Shared Object. E’ una vecchia configurazione, ma questo handler è spesso considerato come quello più veloce. Il PHP funziona come modulo di Apache. Questo significa che gli script in PHP funzioneranno con l’utente Apache, ovvero con l’utente “nobody”.

DSO ha due svantaggi. Per prima cosa, tutti i file creati da PHP avranno come proprietario “nobody”. Non saranno leggibili dal web. I siti web che hanno la necessità di caricare dei file file attraverso PHP si troveranno ad avere dei problemi relativi ai permessi. Questo succede spesso con gli utenti di WordPress che utilizzano l’interfaccia per caricare i file o che utilizzano la funzione per aggiornare automaticamente il software. Queste cose non funzioneranno se si ha DSO.

Il secondo svantaggio riguarda la sicurezza. I file creati, come già detto, sono intestati a “nobody”. Se un hacker trova un exploit nei vostri script in PHP potrebbe inserire un file che ha gli stessi privilegi dei file importanti, i quali sono sempre intestati a nobody. Questo da la possibilità di modificare anche i file al di fuori di quello specifico account utente. Questo diventa un grosso problema per chi fa reselling o per chi semplicemente hosta sul proprio server dei siti web di terzi. In caso di exploit, non sarete l’unico utente ad essere in pericolo. In ogni caso, se sul server c’è un solo account (o se tutti gli account sono utilizzati dalla stessa persona) allora DSO potrebbe essere la vostra scelta. I benefici a livello di velocità di DSO sono indiscutibili.

Un’ottima soluzione per prevenire questi attacchi sopra citati è quella di tenere i propri software sempre aggiornati. Controllate con gli sviluppatori dei vostri script PHP per restare sempre al passo con le ultime novità. Se invece siete gli unici ad essere hostati sul vostro server, questa procedura di aggiornamento non dovrebbe essere un grosso problema, dato che rientra nella vostra routine giornaliera. Se invece fate reselling di spazio web, è impossibile pretendere che tutti gli utenti sul server abbiano sempre tutti i loro software aggiornati alle ultime versioni.

DSO utilizza pochissima CPU e questo si riflette con una maggior velocità di caricamento delle pagine web sul server.

CGI

CGI sta per: Common Gateway Interface. L’handler CGI fa funzionare PHP come un modulo di CGI, invece che come un modulo di Apache. Anche CGI fa funzionare i processi di PHP con l’utente Apache “nobody”. Se si ha suEXEC abilitato, con CGI possiamo comunque visualizzare l’utente che sta inviando la richiesta.

Il metodo CGI è inteso come un handler sostitutivo per quando non è possibile utilizzare DSO. Stando infatti alla documentazione ufficiale di cPanel, questo metodo non è né più sicuro né più veloce rispetto a DSO, ed è indifferente se si ha abilitato suEXEC o se lo si ha disabilitato.

http://docs.cpanel.net/twiki/bin/view/AllDocumentation/WHMDocs/MorePhphandlers

SuPHP

SuPHP sta per: Single user PHP. SuPHP fa funzionare il PHP come un modulo CGI. Si differenzia da CGI in quanto gli script che vengono richiamati dalle pagine web funzionano con l’utente alle quali sono state assegnate, invece che a “nobody” (di default in DSO/CGI). SuPHP è solitamente il gestore PHP più utilizzato. E’ anche suggerito da cPanel, dato che rende possibile visualizzare qual’è l’utente dell’account che utilizza lo script PHP.

SuPHP è ottimo se si utilizza sul proprio sito uno strumento per caricare dei file (ad esempio un aggiornatore automatico o un installatore per temi/plugin su WordPress). I file avranno i giusti permessi e il giusto proprietario. Le funzioni di upload di WordPress non funzioneranno correttamente se non si utilizza SuPHP o FastCGI.

SuPHP inoltre offre un’ulteriore misura di sicurezza; i file che non sono assegnati a uno specifico account (oppure all’account root) non sono eseguibili. Anche i file che hanno i permessi settati per essere scritti da tutti non saranno eseguibili. Questo significa che se un account viene compromesso, gli altri account non saranno infetti dagli script malevoli presenti sul server.

Lo svantaggio di SuPHP è che per funzionare richiede molta memoria a livello di CPU. Inoltre, con SuPHP NON E’ POSSIBILE utilizzare Opcode Cache (con Xcache o APC). Si consiglia di installare un plugin di caching per ovviare a questo problema. Se vedete che il vostro server soffre nell’utilizzo della CPU allora dovete considerare di passare a DSO o a FastCGI.

Nota: se passate sia a SuPHP o a FastCGI, dovrete aggiornare i permessi dei file e le loro proprietà (appartenenza). Leggete questo articolo (in inglese) per saperne di più: http://boomshadow.net/tech/fixes/fixperms-script/

FastCGI

FastCGI (anche detto: mod_fcgid o FCGI) è una variante di CGI con una migliore performance. Ha i benefici di sicurezza/proprietà di SuPHP in quanto gli script PHP funzionano con l’account di cPanel specificato invece che con l’account di Apache “nobody”. La cosa ottima di FastCGI è che ottimizza la performance della CPU e visualizza le pagine con una velocità simile a quella di DSO. Permette di utilizzare Opcode Cache (con eAccelerator o APC), i quali migliorano ancora la velocità di caricamento delle pagine web.

La svantaggio di FastCGI: richiede molta memoria per funzionare. Questo dipende dal fatto che FastCGI invece di creare un processo PHP ogni volta che viene richiesto (come in SuPHP), mantiene una connessione persistente aperta in background… e grazie a ciò è possibile l’utilizzo dei software Opcode di Caching.

Se volete i benefici di sicurezza/proprietà di SuPHP e potete permettervi un maggior utilizzo di memoria (questo significa che al momento avete un utilizzo relativamente basso di memoria sul server), allora potete considerare di utilizzare FastCGI come vostro handler.

Grafico di Confronto

DSOCGISuPHPFastCGI
Basso utilizzo di CPU
Basso utilizzo di Memoria
Utilizza PHP con il proprietario del sito invece che con Apache

solo con suEXEC
Buona sicurezza

Note speciali per Utenti WordPress

Se utilizzate WordPress per il vostro sito web, per favore considerate le seguenti:

  • Le funzioni che richiedono l’upload di file sul server (come Auto-aggiornamenti o Installatori di Temi/Plugin) NON funzioneranno se PHP non viene caricato come modulo CGI. Questo significa che funzioneranno SOLO con SuPHP e FastCGI. Questo assicura che i file vengano caricati con i giusti permessi e con la giusta proprietà relativa all’utente cPanel in uso.
  • Le piattaforme CMS come WordPress richiedono un carico CPU abbastanza alto. Si consiglia di installare un plugin di caching come WP Super Cache o W3 Total Cache, specialmente se si sta utilizzando SuPHP. Se vedete che il vostro server soffre in utilizzo di CPU, potete considerare di passare a DSO o a FastCGI.

Note sull’articolo

Questo articolo è stato originalmente scritto per: ServInt KnowledgeBase da Jacob “Boom Shadow” Tirey.

Articolo tradotto e riadattato da Klayz.com. Si ringrazia Jacob “Boom Shadow” Tirey per i permessi di traduzione dell’articolo sopra esposto.
Articolo originale (lingua inglese): DSO (mod_php) vs. CGI vs. suPHP vs. FastCGI.

 
2 Kudos
Non ti
muovere!

Condividi il Post