Come usare SSH con WordPress

Come usare SSH con WordPress

Utilizzare SSH (acronimo per Secure SHell) con un sito in WordPress può essere uno dei metodi più sicuri, flessibili e convenienti per modificare le impostazioni del sito, soprattutto in caso di crash inaspettati ed errori imprevisti. SSH è un protocollo che funziona interamente a linea di comando, un po’ come avviene per PuTTY, e si tratta in realtà di un SFTP (Secure FTP) “esteso”, visto che possiamo sia scaricare che ricevere file che, soprattutto, inviare comandi specifici seguendo la sintassi Linux.

Che cosa serve per accedere

Per accedere a WordPress in SSH il vostro hosting deve obbligatoriamente mettervi a disposizione questo servizio, e dovrete abilitarlo con una coppia di chiavi pubbliche e privata. Oggi vedremo una bella rassegna di alcuni dei comandi SSH più utilizzati che possono essere sfruttati per WordPress.

Definizione di SSH

SSH è un terminale di comando sicuro e criptato, che vi permette di accedere come amministratori e di prendere controllo del server che sta facendo funzionare WP. Per maggiori informazioni, vedi il post introduttivo su SSH.

Sessione di esempio in SSH

Facciamo un esempio di accesso mediante SSH: come prima cosa trovate l’IP del server del sito in WP, e poi appuntatelo da qualche parte: nell’esempio successivo sarà 123.456.789.123, giusto per capirci. Aprite un terminale di comando su Mac e Linux (oppure aprite PuTTY, se usate Windows), e digitate:

ssh root@123.456.789.123

dove ovviamente 123.456.789.123 dovrà essere rimpiazzato con l’IP effettivo del vostro sito in WP (che potete determinare con questo tool qui). In genere le console SSH, al primo accesso, richiedono di aver installato una chiave SSH valida, cosa che potete fare generandola nel cPanel del vostro server, e poi andate a copiarla in locale nel vostro computer, a seconda del vostro sistema operativo.

Una volta installata, SSH chiederà conferma di connessione e poi vi chiederà la password per accedere: dovrete avere quella di root, in questo caso, visto che stiamo provando ad accedere come root cioè come super-amministratori.  La password non sarà visibile, mentre la digitate, ma arriverà comunque al server dopo che avrete premuto Invio. Se non funziona, vuol dire che avete inserito la password sbagliata quindi controllatela con attenzione (e fate attenzione a non invertire le lettere, ad esempio se la password è pippo79 occhio a non scrivere pippo97).

Dove si trova la cartella di WordPress in SSH?

Se state usando un server Ubuntu, come dovrebbe essere in genere, la cartella di root si trova digitando:

cd /var/www/html

Ed eccovi un esempio di schermata shell SSH remota, tratta dal mio Mac.

Vademecum comandi più utili in SSH / WordPress

Avviare, riavviare e stoppare MySQL e Apache

Una volta entrati, avrete il pieno controllo di WordPress: cosa potete fare? Ad esempio potete riavviare il server Apache:

service apache2 restart

oppure potrete stopparlo (attenzione che il sito non funzionerà se lo fate):

service apache2 restart

per avviare Apache basta scrivere:

service apache2 start

Stessa cosa per il database MySQL:

service mysql restart

server a riavviare, mentre

service mysql stop

server a stopparlo, mentre

service mysql start

server ad avviarlo.

pwd (directory in cui mi trovo)

No, non ha a che vedere con le password (io mi confondo sempre su questa cosa!): in realtà pwd mostra il percorso completo della directory in cui vi trovate in quel momento. Ad esempio qui io mi trovo nella root del mio sito:

ls -la: Equivalente del comando “dir” di MS-DOS

Con ls -la potrete vedere  il contenuto della directory corrente in modo ordinato e coerente.

Alcune varianti utili, in molti casi sono:

  • ls -a mostra anche i file nascosti (è utilissimo per vedere il file htaccess che in genere deve essere nascosto, ad esempio).
  • ls -s -h mostra anche la dimensione di ogni file, in kilobyte

I parametri possono essere eventualmente combinati tra di loro, quindi ad esempio:

ls -sal

cd (vai nella directory indicata)

Uno dei comandi più comuni e semplici è senza dubbio cd : esso serve a fare una cosa molto semplice, ovvero spostarvi in una directory a vostra scelta. come abbiamo visto per WP, salvo esigenze particolari, troverete tutto dentro:

/var/www/html

e per entrarci basta digitare, come abbiamo visto:

cd /var/www/html

qui dentro troverete le cartelle wp-content, wp-admin e wp-include assieme ai file PHP classici (wp-config, ad esempio). Ricordatevi che per funzionare bene, WordPress potrebbe richiedere a volte una revisione dei permessi che devono essere impostati in modo corretto (CHMOD 664 per i file e CHMOD 775 per le directory, vedi qui).

Questo serve per andare nella directory qualunque

cd qualunque

mentre questo serve per andare in un path specifico:

cd in/un/path/specifico

Per tornare indietro come si fa? È semplice, basta usare l’operatore speciale ..:

  • cd .. serve a salire di un livello (occhio che lo spazio deve essere presente, tra cd e ..)
  • cd ../plugins se siete dentro /wp-content/themes, vi porta dentro la directory dei plugin
  • cd / vi manderà direttamente nella directory principale.

mkdir

Cosa fa questo comando? Diciamo che mkdir permette di creare una nuova directory, ovviamente nella postazione corrente se non diversamente specificato (per vedere dove ci troviamo, basta digitare pwd seguito da Invio, come abbiamo visto).

Per creare la directory Peppiniello79, scrivete così:

mkdir peppiniello79

Ovviamente questo vale anche per i percorsi: se siete nella root di WP, provate a digitare

mkdir /themes/fighissimo-theme/peppiniello79

ed avrete creato una directory con lo stesso nome di prima, ma dentro al path (ovvero percorso) specifico del theme fighissimo-theme.

rmdir

Questo è un comando da usare con attenzione: cancella la directory, ma in genere funziona soltanto se la directory è vuota. Non c’è un cestino in SSH, per cui attenzione a quello che fate: la cancellazione è irreversibile. per la verità un uso operativo pratico del comando prevede un po’ di opzioni utili, come vedremo tra un attimo. Per cancellare la directory di prova di prima:

rmdir peppiniello79

oppure, nel path:

rmdir /themes/fighissimo-theme/peppiniello79

rm

Serve a cancellare file o directory dal disco, anche qui in modo irreversibile – quindi massima attenzione. Per cancellare una cartella e tutti i file al suo interno (modalità ricorsiva), si usa il parametro -r:

rm -r cartella_da_cancellare

cp

Questo comando, cp, serve ad effettuare la copia dei file o delle cartelle desiderate da un percorso all’altro del disco fisso. Ovviamente dovrete indicare origine e destinazione, come in questo esempio:

cp nomefile_origine /destinazione/

che ovviamente, sempre a partire dalla directory corrente, copia nomefile_origine nella sotto cartella destinazione sempre rispetto alla posizione corrente (pwd). Potete anche copiare il file con un nome diverso per farvi un backup, ad esempio, prima di modificare il file stesso con un editor tipo nano.

cp wp-config.php wp-config.php.bak

Poi ci sono anche alcuni parametri che è il caso di conoscere, in caso possano servire: -R (maiuscolo), ad esempio, serve a copiare ricorsivamente tutti i file da una cartella all’altra.

cp -R cartella_da_copiare_con_tutti_i_file/. cartella_copiata

Un uso classico del comando cp in WordPress è quello di copiare i file del theme padre, ad esempio, all’interno della cartella del theme child per poi effettuare le personalizzazioni del caso.

clear

Se c’è troppa roba nel terminale, ad un certo punto, potete pulirlo senza cancellare nulla, basta scrivere:

clear

seguito dal tasto Invio.

mv

Questo mv. funziona un po’ come cp, solo che questa volta sposta il file invece di copiarlo.

zip

Questo comando è molto utile per comprimere uno o più file, quindi aggiungerli in un archivio con estensione .zip in forma compressa (il che, salvo per file audio e video, occupa meno spazio).

Per esempio:

zip file_compresso.zip file_origine.txt

comprime il file originale file_origine.txt dentro l’archivio file_compresso.zip.

Oppure possiamo scrivere:

zip file_compresso.zip file_origine.txt file_origine2.txt file_origine3.txt file_origine4.txt

copia i 4 file .txt dentro un archivio compresso .zip.

Per creare il file zip di una directory, infine:

zip -r nomearchivio.zip directory

zip può essere usato in modalità sovrascrittura con il parametro -m, per la cronaca.

unzip

Questo comando è utile, all’inverso, per decomprimere un file .zip, quindi vedere il contenuto di un archivio in questo formato e copiarlo all’interno della directory corrente.

Per esempio:

unzip file_compresso1234.zip

decomprime il file e restituire i file originali contenuti dentro l’archivio file_compresso.zip.

tar

Molto simile a zip, tar lavora sugli archivi compressi con estensione .tar.gz, e vi permette di scompattarli e ricompattarli. Ad esempio

tar cvzf archivio.tar.gz directoryname

in modo sostanzialmente simile a zip sebbene con una sintassi leggermente differente. Nello specifico, c serve a comprimere, v serve a visualizzare l’output in modo esplicito (verbose), z serve a comprimere ed f anticipa il fatto che state fornendo un successivo parametro con il nome del file tar.gz. Si può usare la decompressione di un file tar.gz in questi termini, cosa molto comune quando si installano pacchetti di software open source:

tar xvzf archivio.tar.gz

In questo caso la x non indica il tesoro bensì è il comando di estrazione del file, la v è il verbose (mostra tutto quello che succede nell’output), la z serve a far decomprimere e la f serve a specificare il nome dell’archivio.

touch

Questo comando Linux può esservi utile per creare un nuovo file vuoto, da zero:

touch file.txt

Molto utile, ad esempio, per partire dal “foglio bianco” per creare delle funzioni all’interno di un theme child.

cat

Questo comando è piuttosto semplice ed utile, e permette di mostrare il contenuto di un file qualsiasi direttamente all’interno del terminale. Ad esempio potete testare una cosa del genere:

cd /var/www/html/wp-content/themes/nome-theme

e poi:

cat functions.php

mostra il contenuto del file functions.php del vostro theme. Nell’esempio successivo ho visualizzato il contenuto del file functions.php di un child del theme Zara (vedi qui una lista di theme gratuiti).

grep

Questo è uno dei comandi più usati dagli sviluppatori WordPress ed è anche uno dei più comodi per fare debug: permette di cercare una stringa all’interno di qualsiasi file e, con una piccola aggiunta, di trovare per esempio l’intestazione di una funzione all’interno dell’intera alberatura delle directory. Partiamo dal comando di base:

grep "cosacerco" file.php

che permette di verificare la presenza di cosacerco dentro file.php – i doppi apici sono richiesti dalla sintassi del comando anche in presenza di spazi nella stringa:

grep "cosa cerco" file.php

se usate il parametro -i potete cercare senza badare alla corrispondenza tra maiuscole e minuscole. Se invece usiamo questa sintassi qui:

grep -r -H “cosa cerco”

andremo a cercare in modo ricorsivo, visualizzando il risultato adeguatamente formattato, della stringa cosa cerco, il tutto all’interno di tutti i file presenti nella directory in cui ci troviamo, quindi scansionandola in profondità nelle varie sotto-directory.

head

Il comando headè piuttosto simile a  cat, con la differenza che mostra solo l’inizio del file stesso (prime 10 righe):

head file.txt

tail

Il comando headè piuttosto simile a  cat, con la differenza che mostra solo la fine del file stesso, ovvero le ultime 10 righe di default (utile per analizzare l’ultimo errore prodotto dal log di errore, ad esempio):

tail debug.log

find

A differenza di  grep che cerca nel nome del file,  find cerca nel nome del file la corrispondenza desiderata e ci dice dove si trova quel file:

find . -name "nome file"
find / -name "nome file"

Se mettiamo il punto come qui sopra (.), cerca nella directory corrente; altrimenti se mettiamo lo slash (/) cerca in tutto il filesystem. Il parametro-size eventualmente cerca file di una cerca dimensione specificata.

du

Se avete problemi di spazio su disco, questo è uno dei comandi più utili: Disk Usage permette infatti di verificare quando spazio occupa un file:

du -hk bigfile.zip

mostra la dimensione in kB mentre

du -hm bigfile.zip

fa la stessa cosa in MB.

chmod

Questo comando serve a regolare i permessi da SSH su ogni file, requisito basico per far funzionare WordPress. I tre numerini indicano il livello di accesso consentito, secondo la sintassi Unix. Tipici comandi utili sono i seguenti:

chmod 600 wp-config.php

chmod 755 wp-content/themes
chmod 644 index.php

chmod può essere combinato con il comando find per fare operazioni di routine, come assegnare il permesso 644 ai file ed il permesso 755 alle directory:

find . -type f -print -exec chmod 644 {} \;
find . -type d -print -exec chmod 755 {} \;

Per maggiori informazioni, leggete l’articolo dedicato a chmod e WordPress.

nano

Questo è uno degli editor da terminale che preferisco usare, e che trovo meno contorti e più user-friendly. Permette di avere una sorta di “blocco note” dentro il terminale, anche se si tratta di un editor di testo molto avanzato che si basa su combinazioni di tasti per le operazioni più comuni. Si apre così:

nano file.php

Le combinazioni di tasti di nano più comuni ed usate sono le seguenti:

  • CTRL O: salva le modifiche effettuate (è necessario premere per conferma e sovrascrivere il file, oppure possiamo salvare su un nome di file differente)
  • CTRL X: esci da nano
  • CTRL W: cerca una stringa dentro al file, e portami a quella riga

wget

wget permette di scaricare pacchetti o qualsiasi file su internet che abbia un percorso specifico a disposizione. Per esempio, questo comando permette di scaricare l’immagine :

nella directory corrente del terminale stesso:

wget https://trovalost.it/wp-content/uploads/2014/11/4011227589_7918bfd3b9_wordpress-how-to-300x200.jpg

history

Questo è un comando molto comodo per mostrare lo storico dei comandi precedentemente eseguiti o scritti, in particolare gli ultimi 50 che sono memorizzati nel terminale stesso. Basta scrivere:

history

per visualizzare una lista dei 50 comandi più recenti.

netstat

In questo caso, se scrivete

netstat

vedrete alcuni dettagli tecnici sulla connessione di rete.

exit

Serve ad uscire dal terminale in modo sicuro, chiudendo la sessione di lavoro corrente. Basta scrivere:

exit

seguito dal tasto Invio.

1 voto


Informazioni sull'autore

Salvatore Capolupo

Consulente SEO, ingegnere informatico e fondatore di Trovalost.it, Pagare.online, Lipercubo.it e tanti altri. Di solito passo inosservato e non ne approfitto.