Site icon Tosolini.info

Apache: Mod Pagespeed e Memcached

Nell’articolo odierno vediamo come mettere “il turbo” al nostro sito web. A chi è rivolto questo articolo?

A tutti coloro che dispongono di un server web, dedicato o VPS, e che quindi hanno l’accesso alla shell come super-utente root. Per coloro che non dispongono di questi pre-requisiti dovranno avvalersi a soluzioni diverse, ad esempio come il plugin supercache di WordPress.

Il risultato finale che andremo a raggiungere sarà quello di avere una cache dinamica del nostro sito, quindi in sostanza minor impatto sul server, e una metodica ottimizzazione attraverso la Mod Pagespeed di Google.

Partiamo da quest’ultima. Si tratta di un modulo creato da Google per il webserver Apache2 (esiste anche una versione per Nginx)  che permetterà di fare cose molto interessanti. Tra queste cito in ordine sparso, compressione e ottimizzazione al volo delle immagini, “minificazione” al volo di CSS e Javascript, rimozione (sempre in tempo reale) dei commenti dal codice e non ultimo integrazione con memcached.

In parole povere, attraverso questo software non dovremo preoccuparci di comprimere (minified) CSS e Javascript, così come di non commentare troppo il codice. Per me sono due vantaggi non indifferenti, significa che ogni volta che devo andare a mettere mano sui fogli di stile o su Javascript, non devo ogni volta tirare fuori il sorgente, fare le modifiche, comprimerlo e inviarlo al server. Posso “leggere” il codice direttamente in remoto e modificarlo tanto ci penserà Pagespeed a farlo per me. Stessa cosa per i commenti, molto spesso ci si dimentica di questa o quella modifica, che magari a prima vista sembra assurda. Così invece possiamo commentare senza remora poiché non peserà nulla per gli utenti, e in qualche modo è anche un sistema di blanda sicurezza poiché chi vedrà la pagina senza i commenti avrà difficoltà a capire certe metodiche.

Memcached invece permette di utilizzare la RAM per la gestione degli oggetti (tipicamente php) e questo permette di avere una decisa riduzione sulle richieste verso il DataBase (effettuate appunto da php) che solitamente sono quelle più onerose per il sistema operativo.

In pratica.

Per prima cosa installiamo il modulo Pagespeed di Google. Parto dall’assunto che il vostro server sia una Ubuntu/Debian e sia a 64bit; quindi andremo a collegarci via SSH al server e scarichiamo il modulo per poi installarlo.

cd /tmp
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_amd64.deb
sudo dpk -i mod-pagespeed-beta_current_amd64.deb
sudo apt-get -f install

L’ultima riga permetterà di completare l’installazione che prevede l’inserimento in apt list dei server Google che conterranno eventuali aggiornamenti di mod_pagespeed. Questo ci permetterà di ottenere sempre l’ultima versione del software attraverso il consueto “update & upgrade” del sistema operativo.

a questo punto riavviamo il server Apache: [textmarker color=”000000″]service apache2 restart[/textmarker]

Se non abbiamo ottenuto errori e il server è ripartito possiamo proseguire. Passiamo ad installare Memcached. Fortunatamente questo è un modulo presente nei repository ufficiali per cui daremo semplicemente il comando:

Attenzione che per Ubuntu 18.04 il repository ufficiale che contiene memcached utilizza al momento in cui aggiorno l’articolo una versione buggata, quindi è consigliabile utilizzare l’APT di Ondrej.

# per PHP 7.0
apt install memcached php-memcached

Il metapacchetto riavvierà automaticamente Apache. Per verificare che tutto sia funzionante effettuiamo un controllo sulle connessioni di rete, poiché dovremo avere un nuovo servizio in ascolto sulla porta 11211

ss -tln | grep 11211
LISTEN     0      128    127.0.0.1:11211                    *:*

Ottimo! a questo punto dobbiamo configurare mod_pagespeed affinché utilizzi memcached, e con l’occasione forniamo alcuni parametri extra di cui ho parlato all’inizio dell’articolo. Il file di configurazione è sotto: [textmarker color=”000000″]/etc/apache2/mods-available/pagespeed.conf[/textmarker]

Apriamo il file con il nostro editor a linea di comando (esempio nano) e modifichiamo.

Ci assicuriamo che la prima riga non commetata sia: ModPagespeed on
Decommentiamo la riga: ModPagespeedMemcachedServers localhost:11211
Aggiungiamo prima del tag di chiusura /ifModule quanto segue:

ModPagespeedEnableFilters remove_comments
ModPagespeedEnableFilters prioritize_critical_css
ModPagespeedEnableFilters lazyload_images,inline_preview_images,insert_image_dimensions
ModPagespeedEnableFilters resize_mobile_images,insert_image_dimensions

In generale date uno sguardo alle altre moltissime opzioni, poiché a seconda dei casi potrebbero aiutarvi. Una volta terminato salviamo il file e diamo un riavvio al server web Apache2: [textmarker color=”000000″]service apache2 restart[/textmarker]

Verifichiamo che il sito sia ancora visibile senza errori. Per avere un ulteriore verifica possiamo chiedere via linea di comando:

echo stats | nc 127.0.0.1 11211

che ci ritornerà un sacco di parametri relativi alle operazioni di cache.

Dalla versione PHP 7.x la parte sottostante non è più necessaria. Lascio per chi ha versioni più vecchie, nel caso rientrate nelle versioni aggiornate andate direttamente al capitolo successivo.

Rimane da agganciare PHP, effettuando la modifica nel php.ini che si troverà, a seconda delle versioni dello stesso, sotto /etc/php + numero versione oppure sotto /etc/php5.0 per certe versioni del modulo 5. Una volta individuato quello che state utilizzando, nella sotto cartella apache2 troverete il file php.ini.

Lo apriamo con l’editor e andiamo a cercare la voce sessions.save_handler che andrà modificata come segue:

session.save_handler = memcached
session.save_path = "127.0.0.1:11211″

Salviamo tutto e andiamo ad effettuare un altro riavvio di Apache2. A questo punto abbiamo il nostro sito full cache, navigando dovremo renderci conto di una maggiore velocità.

Statistiche e gestione cache.

Pagespeed permette anche di visionare le statistiche ed effettuare una purge (svuotamento) della cache, a livello di pagina o di intero sistema. All’interno del file di configurazione pagespeed.conf che abbiamo modificato in precedenza, possiamo aggiungere verso la fine, il nostro IP di accesso. Sconsiglio di aprirlo a tutti gli IP poiché ci sono informazioni non vitali, ma di sicuro interesse per un eventuale attaccante.

<Location /pagespeed_admin>
        Order allow,deny
        Allow from localhost
        Allow from 127.0.0.1
        Allow from xxx.xxx.xxx.xxx
</Location>

sostituite xxx con il vostro indirizzo IP pubblico. E’ anche possibile fornire una classe di indirizzi. A questo punto è necessario un reload di apache: [textmarker color=”000000″]service apache2 reload[/textmarker]

e quindi collegarsi via browser alla pagina http://MIO-INDIRIZZO-IP/pagespeed_admin/ da cui sarà molto utile visionare i messaggi di errore, spesso dovuti a problemi di accessibilità ai file da parte di apache, poiché questi sono stati creati da un utente con privilegi maggiori del web server. Per tutti quelli che riuscite a trovare sarà necessario cambiare la proprietà del file assegnandola all’utente www-data.

Non secondario poi la possibilità di svuotare la cache attraverso un purge, nella sezione “Caches”. Cito questo perché è molto probabile che se in seguito andate a modificare qualche parametro del vostro foglio di stile non vedrete nessuna modifica fino a quando la cache relativa alla pagina non sarà scaduta e quindi rigenerata con le modifiche. Per non aspettare (in media per default ci vogliono 24 ore) possiamo andare a svuotare la cache attraverso la funzione di purge sulla pagina di amministrazione.

In definitiva si tratta di un sistema molto utile, una volta utilizzato non solo il sito andrà più veloce, ma avrete anche maggiore punteggio nei vari tool forniti da Google (analytics e console) poiché moltissimi dei loro suggerimenti sono proprio attuati da pagespeed.

Exit mobile version