WordPress è un famosissimo CMS alla base di moltissimi siti web oramai. Nato per creare e gestire blog (come InformaticaLab), grazie alla sua flessibilità viene utilizzato anche per la realizzazione di siti vetrina o come sistema di backend per applicazioni.
Il problema principale di utilizzare un software dinamico come wordpress è che richiedono manutenzione periodica.
Un sito vetrina come ad esempio il sito di un tabaccaio, viene spesso creato per essere in “sola lettura”, ovvero non prevede frequenti aggiornamenti di contenuti. Questo ci porta inevitabilmente a dimenticare la necessaria manutenzione, come ad esempio l’aggiornamento dei plugins o del core di WordPress.
Non aggiornare un sistema vulnerabile, porta inevitabilmente all’exploiting da parte di un malintenzionato.
Ospitando poi multipli siti sullo stesso hosting, se non abbiamo previsto un sistema di utenti o di permessi efficace potremmo ritrovarci in guai seri.
Solo per questo motivo secondo me, vale la pena l’idea di considerare WP-CLI: un tool da linea di comando creato dagli autori di WordPress (Automattic) che fra le varie funzionalità consente di aggiornare plugin, core e temi.
Come installare il tool
L’installazione è molto facile e indolore. Scarichiamo il file phar:
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
Verifichiamo che sia stato scaricato correttamente:
php wp-cli.phar --info
E lo spostiamo in una posizione raggiungibile dal nostro path. Per installarlo per tutti gli utenti ad esempio:
chmod +x wp-cli.phar sudo mv wp-cli.phar /usr/local/bin/wp
Comandi utili
Di comandi ce ne sono parecchi. Alcuni dei comandi che mi sono tornati utili finora sono:
wp core download
: per scaricare l’ultima versione di wordpress, già unzippata e pronta per l’installazione.wp core install --url=example.com --title=Example --admin_user=supervisor --admin_password=strongpassword --admin_email=info@example.com
: Per installare wordpresswp core update
: Aggiorna l’installazione di WordPress all’ultima versionewp plugin list
: Lista i plugins installatiwp plugin update --all
: Aggiorna tutti i pluginwp core verify-checksums
: Per verificare che i nostri file siano integri.
Tenere le installazioni aggiornate
Visto che abbiamo questa fantastica cli, potrebbe essere utile creare un file bash per tenere aggiornate tutte le installazioni (core e plugins) sul nostro hosting.
Ecco un esempio di script in bash che potrebbe fare al caso nostro:
#!/bin/bash updateWp () { DIR=$1 pushd . cd $DIR/public_html if $(wp core is-installed 2> /dev/null); then echo "Updating: " $DIR wp core update wp plugin update --all wp theme update --all fi popd } for dir in * do updateWp $dir done
Con esecuzione:
/var/www /var/www Updating: informaticalab.com Success: WordPress is up to date. Enabling Maintenance mode... Downloading update from https://downloads.wordpress.org/plugin/wordpress-seo.8.1.zip... Unpacking the update... Installing the latest version... Removing the old version of the plugin... Plugin updated successfully. Disabling Maintenance mode... +---------------+-------------+-------------+---------+ | name | old_version | new_version | status | +---------------+-------------+-------------+---------+ | wordpress-seo | 8.0 | 8.1 | Updated | +---------------+-------------+-------------+---------+ Success: Updated 1 of 1 plugins.
L’ideale sarebbe quindi di prendere questo script e inserirlo all’interno di un cronjob, ed eseguirlo quotidianamente.
Caveat
- WordPress ha una funziona di auto aggiornamento del core (disattivabile dall’utente), ma non mi pare ci sia per i plugins solitamente la parte più vulnerabile di un’instanza WordPress.
- Aggiornare WordPress potrebbe portare a problemi di incompatibilità con plugin o temi. Per siti non aggiornati da un bel po’.
- Lo script dovrebbe essere eseguito dal proprietario dell’installazione (e non da root o altri utenti). Dovrebbe essere possibile modificare lo script per includere questa funzionalità.
Articolo molto molto interessante complimenti!