Davide Salerno

Come Velocizzare WordPress Su Dreamhost Con APC

All’indomani dell’iWordCamp 2008, dopo aver seguito diversi talk interessanti e aver chiaccherato con diversi geek vi avevo parlato di come velocizzare WordPress su Dreamhost utilizzando eAccelerator che è un’estensione gratuita ed open source per PHP che si occupa di effettuare un lavoro di accelerazione, ottimizzazione e di cache sui vostri script scritti in questo linguaggio. C’è un’altra estensione che effettua un lavoro analogo facilmente installabile anch’essa su Dreamhost che si chiama APC.

APC è l’acronimo di Alternative PHP Cache e può essere considerato l’acceleratore ufficiale di PHP tanto che verrà con ogni probabilità incluso di default nella versione 6 di PHP. I più attenti di voi avranno sicuramente notato che nel precedente articolo c’era un grafico riassuntivo prestazionale e eAccelerator era proprio messo a confronto con APC e i risultati erano quasi indistinguibili.

Vi riporto qui sotto per comodità il risultato del benchmark.

Passiamo ora a vedere come installare APC per dare un’accelerata ai vostri script in PHP. Anche in questo caso sarà necessario collegarsi via SSH per compilarsi prima PHP e poi APC quindi vi riporto di seguito i primi 2 punti della precedente guida per chiarezza.

Collegatevi SSH

Per prima cosa dovrete connettervi via SSH al server web dove è ospitato il vostro blog in WordPress. Se siete utenti Mac potete utilizzare tranquillamente il Terminale (Applicazioni->Utility->Terminale), se siete utenti Linux dopo aver installato OpenSSH potrete allo stesso modo utilizzare la shell, se utilizzate Windows dovrete procurarvi un client SSH tra quelli disponibili in circolazione. Se vi connettete da linea di comando in ogni caso dovrete digitare:

ssh username@yourdomain.com

quindi invio (ovviamente al posto di username dovrete mettere il nome utente abilitato all’accesso ssh e al posto di yourdomain.com il nome del vostro dominio) ed inserire la password di accesso. E’ tutto comunque dettagliatamente descritto nel wiki di Dreamhost anche se è un’operazione semplicissima.

Compilate PHP

La seconda cosa da effettuare è compilarvi PHP. Aspetta, aspetta non scappare: la cosa è molto più semplice di quanto può sembrare e ci puoi riuscire anche tu che non hai mai compilato mai un programma in vita tua. Come al solito c’è una pagina dedicata a tutto ciò nel wiki, l procedura si può riassumere nei seguenti passaggi:

  1. Scaricatevi e trasferite nella home del vostro account questo script di shell (è lo stesso presente nel wiki)
  2. Modificate la riga 14
    export DOMAIN="your.domain.com"

    inserendo il nome del vostro dominio sul quale volete installare PHP ed APC

  3. Date i permessi di esecuzione allo script con il comando, ovviamente sostituendo ad installscript il nome del vostro script se lo avete chiamato diversamente
    chmod +x installscript
  4. Eseguite lo script con il comando sotto ed aspettate che termini l’esecuzione
    ./installscript
  5. Al termine vi verrà segnalato che è stato impossibile cancellare le directory source e dist, non vi preoccupate è normale. Cancellatele con il comando sotto ed aspettate che vengano eliminate
    rm -rf dist/ source/
  6. Copiate il file php.ini nella cartella yourdomain.com/cgi-bin con il comando
    cp php5/etc/php5/yourdomain.com/php.ini yourdomain.com/cgi-bin/php.ini
  7. Createvi un file chiamato php5-wrapper.fcgi con le informazioni che trovate sotto. Per comodità qui potete scaricarne uno già preimpostato: ovviamente sostituite username e yourdomain.com con i vostri dati
    #!/bin/sh
    export PHPRC=/home/username/yourdomain.com/cgi-bin/
    export PHP_FCGI_CHILDREN=3
    exec /home/username/yourdomain.com/cgi-bin/php.cgi

Installiamo APC

Ora che abbiamo PHP compilato ed installato nel nostro account possiamo installarci APC in modo molto simile a quanto abbiamo fatto con PHP. Ecco i passaggi salienti, la procedura completa come al solito è presente nel wiki di Dreamhost.

  1. Scaricatevi e trasferite nella cartella home del vostro account questo script di shell avendo cura di rinominarlo con estensione .sh
  2. Date i permessi di esecuzione allo script con il comando sotto ovviamente se avete chiamato lo script in modo diverso da APC_install.sh sostituite il nome del vostro script nel comando sotto
    chmod +x APC_install.sh
  3. Eseguite lo script con il comando sotto ed aspettate che termini l’esecuzione
    ./APC_install.sh
  4. Andate a modificare il file php.ini che se avete seguito le indicazioni sopra dovrebbe trovarsi nella directory
    /home/username/yourdomain.com/cgi-bin/php.ini
  5. Trovate le righe
    ; Directory in which the loadable extensions (modules) reside.
    extension_dir = "./"
  6. Sostituitele con
    ; Directory in which the loadable extensions (modules) reside.
    extension_dir = "/home/username/php5/lib/php/extensions"
  7. Al termine del file andate invece ad inserire le seguenti righe
    [apc]
    extension="apc.so"
    apc.enabled=1
    apc.shm_segments=1
    apc.shm_size=16
    apc.ttl=7200
    apc.user_ttl=7200
    apc.num_files_hint=1024
    apc.mmap_file_mask=/home/username/tmp/apc.XXXXXX
    apc.enable_cli=1

Bene anche APC è installato, ora non ci resta che avviare il tutto.

Avviamo la nostra versione di PHP con APC

Ora che avete installato la vostra versione di PHP con APC come estensione non vi resterà che avviare il tutto. Per una questione di ottimizzazione delle prestazioni avvieremo PHP come processo fcgi (fast-cgi) e non semplicemente come processo cgi: dovete però aver attivato nel vostro pannello di controllo di Dreamhost l’apposita opzione che vi permette di avere PHP come processo fcgi per il dominio in questione (quello su cui abbiamo lavorato finora).

Fatto questo dovrete andare a modificare il file .htaccess che trovate nella posizione

yourdomain.com/.htaccess

aggiungendo le seguenti righe

Options +ExecCGI
AddHandler fastcgi-script fcg fcgi fpl
AddHandler php5-fastcgi .php
Action php5-fastcgi /php5-wrapper.fcgi

Fatto ciò tutto dovrebbe funzionare. Se riscontrate dei problemi fate riferimento come al solito al wiki di Dreamhost. Una cosa molto comune che potrebbe causarvi dei malfunzionamenti è il fatto che non avete terminato tutti i processi fcgi prima di avviare la vostra versione di PHP com processo fcgi. Vi ricordo che per terminare un processo da shell si usa il comando kill -9 PID dove PID è l’ID del processo che volete uccidere che vi restituisce il comando ps aux.

Per esempio se avete come risposta al comando ps aux

[dinar]$ ps aux
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
user    682  0.0  0.1 17180 6148 ?        Ss   15:27   0:00 /dh/cgi-system/php5.cgi
user  21117  0.1  0.3 23872 11924 ?       S    15:27   0:00 /dh/cgi-system/php5.cgi
user   7576  0.0  0.3 23872 11920 ?       S    15:27   0:00 /dh/cgi-system/php5.cgi
user  23783  0.5  0.0  2632 1500 pts/7    S    15:30   0:00 -bash
user  20840  0.0  0.0  2488  860 pts/7    R+   15:30   0:00 ps aux

Per terminare il primo processo, quello con PID 682 dovete dare il comando

kill -9 682

Personalmente tra i due acceleratori, non essendoci una sostanziale differenza a livello prestazionale, preferisco eAccelerator in quanto ha un consumo a livello di memoria leggermente inferiore e quindi su un hosting condiviso come Dreamhost la cosa è da tenere seriamente in considerazione per una convivenza senza attriti con gli altri clienti presenti sul vostro stesso server.

Anche in questo caso credo di avervi tediato a sufficienza, forse anche troppo, ora sono curioso di avere dei vostri riscontri: utilizzate uno dei due acceleratori? Quale? Se siete anche vuoi su Dreamhost o in generale su hosting condiviso notate la differenza?

Exit mobile version