Velocizzare il proprio server per WordPress

Questa vuole essere una breve guida per chi ha la necessità di velocizzare il proprio server di hosting linux (in questa guida utilizzerò uno dei miei server con CentOS). Velocizzare i siti web ospitati non è legato solo al server, ma naturalmente anche a tanti altri fattori che riguardano i propri siti, che devono essere sviluppati con cura e professionalità. Nel caso di WordPress ci sono tante cose che si possono fare e tanti plugin, questa guida vuole semplicemente essere un buon punto di partenza: lascio a voi sperimentare quale configurazione vada meglio per voi, la fase di test e di verifica continua dei log e delle prestazioni del proprio server è come sempre fondamentale.

PREMESSA: se non siete pratici di server, Linux, console e terminali, questa guida non fa per voi: non è una guida completa, ma una raccolta di suggerimenti e indicazioni per chi mastica almeno un po’ l’argomento. Per questo motivo non è approfondita ma lascio ai link ai siti ufficiali l’onere di descrivervi nel dettaglio tutto quanto, e a questo video tratto dal Wordcamp di Torino del 2016 (cui ho partecipato) in cui viene ben illustrato il quadro generale sull’argomento.

Analisi dei siti

Innazitutto partiamo da uno dei più famosi siti di test online, che ci può dare ottime indicazioni sui siti ospitati sul nostro server: GT Metrix

check website speed

Inserite l’URL del vostro sito e verificate i valori di performance: scorrendo la pagina troverete molte informazioni e suggerimenti utili da attuare. Riuscire a migliorare i valori è il vostro obbiettivo.

In questa guida seguirò questo schema:

Memcached

Serve a ridurre il carico sul database per i siti dinamici come WordPress. Su CentOS si installa così da terminale del proprio server:

yum install libevent-devel
yum install memcached php-pear php-pecl-memcache

Dopodichè si può personalizzare la configurazione:

vi /etc/sysconfig/memcached
PORT="11211" 
USER="memcached" 
MAXCONN="1024" 
CACHESIZE="2048" 
OPTIONS=

ora bisogna finire la configurazione:

chkconfig --levels 235 memcached on
service memcached start

Nginx

E’ un  reverse proxy server, serve a utilizzare in maniera efficiente le risorse di sistema quando si forniscono contenuti statici.

Per installarlo su CentOS:

sudo yum install epel-release
sudo yum install nginx
sudo systemctl start nginx

oppure seguire la guida ufficiale.

GZip

Innazitutto potete verificare se GZip è attivo utilizzando il sito Check GZ Compression o direttamente da terminale:

/etc/init.d/nginx status

Se non è attivo, occorre configurarlo, aprendo il file di configurazione:

vi /etc/nginx/nginx.conf

cercate questa riga di codice:

#gzip on;

e sostituitela con queste:

gzip on;
gzip_comp_level 4;
gzip_http_version 1.0;
gzip_proxied any;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)"

dove “gzip_comp_level 4” indica il livello di compressione richiesto con indice massimo di 9.

Abilitate Gzip:

/usr/local/psa/admin/sbin/nginxmng -e
service nginx restart

Plugin

Si può ora procedere a installare diversi plugin utili sui siti WordPress ospitati sul vostro server (consultate i siti ufficiali per tutte le informazioni sulla loro configurazione avanzata):

Batcache: serve a far sfruttare Memcached al vostro sito.

BJ Lazy Load: velocizza il caricamento della pagina nel browser.

Autoptimize: serve a minimizzare i file JS, CSS e HTML.

WP Super Cache: un potente motore di caching che crea file HTML per velocizzare l’esecuzione del sito. Nelle configurazioni avanzate scegliete inizialmente le opzioni indicate con “raccomandata“.

Verificare supporto TLS1.2 e certificato SSL a SHA-256 Paypal

A molti sviluppatori di ecommerce che utilizzano Paypal sono arrivate nelle ultime settimane le mail di avviso riguardo al prossimo “Aggiornamento sulla sicurezza 2016”, in cui bisogna contattare il proprio fornitore di hosting per verificare il supporto per i certificati di sicurezza SSL a SHA-256 e dei protocolli TrLS 1.2 e HTTP 1.1. La verifica può essere effettuata abbastanza facilmente se avete accesso via SSH al vostro server eseguendo i prossimi step.

Aggiornamento Certificato SSL a SHA-256

Per prima cosa collegatevi via SSH (su Windows potete utiilizzare un classico PuTTY, su Mac il terminale e su Linux la shell) attraverso il comando:

ssh -l root 0.0.0.0

dove al posto di 0.0.0.0 dovete mettere l’IP del vostro server (eventualmente cambiate root con il vostro nome utente con privilegi di amministratore). Dopo aver inserito la password ed essere entrati nel server, digitate il comando:

openssl ciphers -v| grep 256

vi apparirà un elenco di certificati a disposizione, all’interno dei quali potrete verificare se SHA-256 è supportato.

SHA256 paypal TLS 1.2

Aggiornamento TLS 1.2 e HTTP/1.1

Per verificare il supporto TLS 1.2 si può provare da terminale a collegarsi a un qualsiasi sito sul vostro server con il seguente comando:

openssl s_client -connect simonezanella.it:443 -tls1_2

sostituendo a simonezanella.it l’indirizzo del sito che volete testare. Se TLS 1.2 è supportato otterrete come risposta un “Secure Renegotiation IS supported” come mostrato in figura.

test tls 1.2 paypal terminale ssh

 

Cambiare la dimensione delle mailbox da riga di comando su Plesk Odin

L’interfaccia Power User di Plesk Odin non consente l’impostazione dei piani di servizio nè l’impostazione del limite di default della dimensione delle caselle email del server, pertanto in caso di migrazione di domini da altri server ci si ritrova impostata la dimensione precedente, senza possibilità di cambiarla, a meno di non fare l’upgrade della propria licenza.

Tuttavia per modificare la mailbox size di tutte le caselle del server reimpostandole su “unlimited” è sufficiente collegarsi via SSH e scrivere la seguente riga di comando:

mysql -uadmin -p`cat /etc/psa/.psa.shadow` psa -Ne "select name from domains where parentDomainId=0 and webspace_id=0" | while read a; do /usr/local/psa/bin/subscription_settings -u $a -mbox_quota -1; done

Se si vuole impostare un valore specifico basta sostituire il valore dopo “-mbox_quota“, ad esempio con 500M per avere una casella da 500 Megabyte o 1G per 1 Gigabyte

Libreria MCrypt su CentOS 7 con Plesk 12

La libreria MCrypt è necessaria per alcuni CMS molto diffusi, tra i quali ad esempio Magento. Ho scritto una guida tempo fa per installare la libreria su server dotati di CentOS 6, recentemente sono passato a dei nuovi VPS dotati di Plesk e CentOS 7 e ho preferito seguire una via più facile per l’installazione di MCrypt: le nuove versioni di Plesk (dalla 12 in poi) consentono di installare più versioni di PHP, dalla versione 5.4 in poi infatti la libreria MCrypt è disponibile. Se il nostro hosting è ancora impostato su un PHP 5.2 o 5.3 è sufficiente installare le nuove versioni di PHP tramite l’apposito strumento per gli aggiornamenti che trovate in Tools and Settings:

plesk php 5.6

plesk multi php

 

dopodichè potete entrare nella sottoscrizione che necessita della libreria e cambiare facilmente la versione di PHP assegnata:

plesk mcrypt

 

plesk_centos_mcrypt

La procedura è utile anche per CMS, plugin e in generale siti che necessitano il nuovo PHP, e vi consente di non dover installare e configurare nulla via SSH. Provato su Centos 7 e Plesk 12.

500 Internal server error durante l’aggiornamento del database di WordPress

500-internal-server-error

Un errore durante l’aggiornamento all’ultima versione di WordPress (4.2.1) mi ha causato un grosso problema su un sito: nel dettaglio provando ad accedere alla bacheca di amministrazione compare il  messaggio (tipico dopo gli aggiornamenti più importanti di WordPress):

E’ richiesto l’aggiornamento del database:
WordPress è stato aggiornato! Prima di proseguire, dobbiamo aggiornare il database alla nuova versione.

e dopo aver lanciato l’aggiornamento, il server restituisce dopo un po’ di minuti l’errore “500 Internal Server Error”. Il tutto si ripete ad ogni tentativo di aggiornamento, rendendo impossibile accedere alla bacheca di WordPress.

Dopo aver consultato a fondo la guida di WordPress, l’unica soluzione trovata (nella rete si trovano diverse guide, ma sono quasi tutte legate a WordPress installati su hosting commerciali tipo Aruba)  è stata  modificare manualmente nel database la versione del database corrente.  Se avete accesso al pannello di gestione del database del vostro sito (tipicamente phpMyAdmin o simili), dovete cercare nella tabella wp_options il campo db_version:

wordpress-500-server-error

il valore numerico sostituendolo con il valore che trovate a questa pagina, in cui si trovano i codici relativi alla versione del database rapportati alla versione corrente di WordPress (ovvero quella cui avete aggiornato prima dell’errore).

forzare upgrade database wordpress

Dopo aver effettuato la modifica, WordPress ha ripreso a funzionare perfettamente, sono stati provati ulteriori aggiornamenti di WordPress, temi e plugin con successo.

Versione di WordPress pre-aggiornamento: 4.2 Italiano

Versione dell’aggiornamento: 4.2.1 Italiano