Volevo chiederti dei metodi di configurazione di PHP / Apache che conosci, i loro pro e contro. Inizierò me stesso:
---------------- PHP come modulo Apache ----------------
Pro : buona velocità poiché non è necessario avviare exe ogni volta, specialmente in modalità mpm-worker . Puoi anche usare vari acceleratori PHP in questa modalità come APC o eAccelerator.
Contro : se si esegue apache in modalità mpm-worker, è possibile che si verifichino problemi di stabilità perché ogni problema tecnico in qualsiasi script php porterà all'instabilità dell'intero pool di thread di quel processo apache. Anche in questa modalità tutti gli script vengono eseguiti per conto dell'utente apache. Questo è negativo per la sicurezza. La configurazione di mpm-worker richiede che PHP sia compilato in modalità thread-safe. Almeno i repository predefiniti CentOS e RedHat non hanno una versione PHP thread-safe, quindi su questi sistemi operativi devi compilare almeno PHP da solo (c'è un modo per attivare worker mpm su Apache). L'uso di binari PHP thread-safe è considerato sperimentale e instabile. Inoltre, molte estensioni PHP non supportano la modalità thread-safe o non sono state testate bene in modalità thread-safe.
---------------- PHP come CGI ----------------
Questa sembra essere la configurazione predefinita più lenta che sembra essere una "truffa" stessa;)
---------------- PHP come CGI tramite mod_suphp ----------------
Pro : suphp consente di eseguire script php per conto del proprietario del file di script. In questo modo è possibile separare in modo sicuro siti diversi sulla stessa macchina. Inoltre, suphp consente di utilizzare diversi file php.ini per host virtuale.
Contro : PHP in modalità CGI significa meno prestazioni. In questa modalità non è possibile utilizzare acceleratori php come APC perché ogni volta che viene generato un nuovo processo per gestire lo script rende inutilizzabile la cache del processo precedente. A proposito, conosci il modo di applicare un acceleratore in questa configurazione? Ho sentito qualcosa sull'uso di shm per la cache bytecode php. Inoltre, in questa modalità non è possibile configurare PHP tramite file .htaccess. Per questo dovrai installare P ECL htscanner se devi impostare varie opzioni per script tramite .htaccess (direttive php_value / php_flag)
---------------- PHP come CGI tramite suexec ----------------
Questa configurazione sembra la stessa di suphp, ma ho sentito che è più lenta e meno sicura. Si applicano quasi gli stessi pro e contro.
---------------- PHP come FastCGI ----------------
Pro : lo standard FastCGI consente al singolo processo php di gestire diversi script prima che il processo php venga interrotto. In questo modo si ottengono prestazioni poiché non è necessario creare un nuovo processo php per ogni script. Puoi anche usare acceleratori PHP in questa configurazione (vedi la sezione contro per commenti). Inoltre, FCGI quasi come suphp consente anche l'esecuzione di processi php per conto di alcuni utenti. mod_fcgid sembra avere il supporto fcgi più completo e la flessibilità per apache.
Contro : l'uso dell'acceleratore php in modalità fastcgi comporterà un elevato consumo di memoria perché ogni processo PHP avrà la propria cache bytecode (a meno che non ci sia un acceleratore che può usare la memoria condivisa per la cache bytecode. Esiste?). FastCGI è anche un po 'complesso da configurare. È necessario creare vari file di configurazione e apportare alcune modifiche alla configurazione.
Sembra che fastcgi sia la configurazione PHP più stabile, sicura, veloce e flessibile, tuttavia, un po 'difficile da configurare. Ma, forse, mi sono perso qualcosa?
I commenti sono benvenuti!