Come Velocizzare WordPress Su Dreamhost Con eAccelerator

Dreamhost è un servizio di hosting che sulla carta offre veramente tanto rispetto a quanto costa. Se siete dei nuovi clienti e utilizzate qualche coupon per garantirvi un lauto sconto per il primo anno pagherete a cifre irrisorie un servizio di hosting che in Europa è veramente difficile da trovare. Dal lato pratico qualche controindicazione c’è e si chiama lentezza. I server infatti sono abbastanza sovraffollati, i server web e quelli che ospitano i database MySQL sono su macchine differenti e la server farm è negli USA quindi non proprio dietro l’angolo: tutto questo si traduce in una lentezza che soprattutto per chi visualizza il vostro sito dall’Europa è abbastanza tangibile e fastidiosa.

Per chi utilizza WordPress poi i problemi non sono finiti qui: non è un mistero infatti che il più osannato dei CMS per blog abbia nelle prestazioni il suo tallone di Achille. Le query per accedere al database sono infatti un tantino elevate e dal punto di vista del codice PHP, essendo sviluppato da una community abbastanza eterogenea, non sempre utilizza soluzioni ottimali. Ecco perchè vi ho parlato più volte di plugin che effettuano un lavoro di cache su WordPress (WP-Cache e WP-SuperCache) riducendo al minimo indispensabile le query salvando in formato HTML le pagine web del vostro blog per velocizzarne il caricamento.

Su Dreamhost però vi ricordo che avete a disposizione un accesso SSH e quindi potete velocizzare WordPress installando eAccelerator: alla fine non sarà come essere su un server dedicato o su un vps perchè le risorse sono sempre condivise, però dai benchmark che ci sono in giro ne trarrete sicuramente un immediato beneficio.

eAccelerator, per chi non lo sapesse, è 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 per l’appunto in PHP.

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 eAccelerator
  3. Date i permessi di esecuzione allo script con il comando, ovviamente sostituendo ad installscript il nome del vostro script se lo avete chiamato diversamentechmod +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 eliminaterm -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 eAccelerator

Ora che abbiamo PHP compilato ed installato nel nostro account possiamo installarci eAccelerator 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
  2. Date i permessi di esecuzione allo script con il comando sotto ovviamente se avete chiamato lo script in modo diverso da eacinstall.sh sostituite il nome del vostro script nel comando sotto
    chmod +x eacinstall.sh
  3. Eseguite lo script con il comando sotto ed aspettate che termini l’esecuzione./eacinstall.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[eaccelerator]
    extension="eaccelerator.so"
    eaccelerator.allowed_admin_path="/home/davidesalerno/davidesalerno.net"
    eaccelerator.shm_size="16"
    eaccelerator.cache_dir="/home/davidesalerno/tmp/eaccelerator"
    eaccelerator.enable="1"
    eaccelerator.optimizer="1"
    eaccelerator.check_mtime="1"
    eaccelerator.debug="0"
    eaccelerator.filter=""
    eaccelerator.shm_max="0"
    eaccelerator.shm_ttl="0"
    eaccelerator.shm_prune_period="0"
    eaccelerator.shm_only="0"
    eaccelerator.compress="1"
    eaccelerator.compress_level="9"

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

Avviamo la nostra versione di PHP con eAccelerator

Ora che avete installato la vostra versione di PHP con eAccelerator 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

Bene credo di avervi annoiato abbastanza per oggi anche se spero che queste indicazioni servano per velocizzare la vostra installazione di WordPress su Dreamhost.

2 pensieri riguardo “Come Velocizzare WordPress Su Dreamhost Con eAccelerator

  1. Grazie Ppalli ho corretto i link.

    Per l’errore 500 creda dipenda dal fatto che non sono stati terminati correttamente tutti i processi Fcgi e cgi attivi prima dell’attivazione (scusa il gioco di parole) di eAccelerator.

    Altri possibili motivi sono comunque elencati nel wiki

  2. Ciao,

    Molto interessante peccato che ci deve essere un qualche problema, ho seguito le istruzioni passo passo ma mi provoca un errore 500.
    Quando avrò un po’ più di tempo cerco di trovare dove sta il problema e farò sapere.

    Ci sono alcuni link che non funzionano; quello verso il file d’esempio “php5-wrapper.fcgi” e quello verso lo script “eacinstall.sh”.

Rispondi