Per molti programmatori LAMP, il rapporto con la componente server (e la componente Linux) può non essere così scontato. In fondo, i CMS di nuova generazione permettono di eseguire via browser operazioni, come l'aggiornamento del sistema, il backup del database o la manutenzione ordinaria, che fino a pochi anni fa erano possibili solo attraverso la mediazione di strumenti come FTP o SSH.
Tuttavia, conoscere i rumendi della linea di comando, l'approccio nativo dei sistemi Unix-like, può essere utile in svariate situazioni. Di seguito ho raccolto alcuni comandi molto semplici e assolutamente indispensabili, che non dovrebbero mancare nel background di nessun LAMPer. Se ve ne vengono in mente altri segnalaterli nei commenti!
Backup e ripristino del database
mysqldump permette di ottenere un dump (o copia) del database in formato SQL. L'uso è molto semplice:
mysqldump -u DB_USER -p DB_NAME | gzip -9 > db_backup.sql.gz
Prima di prodere vi verrà chiesta la password del database per l'utente DB_USER. gzip ci permette di comprimere l'output di mysqldump e risparmiare spazio disco.
Per ripristinare il database è sufficiente caricare il file dentro mysql. zcat è come cat, ma legge i file compressi.
zcat db_backup.sql.gz | mysql -u DB_USER -p DB_NAME
Trova e sostituisci
Questo comando mi è stato molto utile in diverse situazioni, in pratica consiste del sostituire una stringa con un altra all'interno di uno stream di testo. Per esempio è utile se cambiamo server o dominio ad un sito fatto con WordPress, perché con un solo comando sostituiamo tutti i riferimenti al vecchio dominio con il nuovo.
zcat db_backup.sql.gz | sed -e 's/127.0.0.1/www.domain.tld/g' | gzip -9 > new_db_backup.sql.gz
Dov'è quella funzione?
Ammettiamo di avere una directory con 30 file PHP e di cercare quali chiamano la funzione pippo():
grep -n -i 'pippo(' *.php
In pochi attimi otterremo la lista dei file che contengono pippo( con l'indicazione del numero di riga a cui si trova la stringa.
Mettere a posto i permessi dei file
Una cosa noiosa di Apache è il messaggio Access denied che spesso indica che l'utente con cui è eseguito Apache (tipicamente apache o www-data) non ha i permessi per leggere, scrivere o eseguire il file o la directory che stiamo consultando.
Due semplici comandi eseguiti nella root del sito metteranno a posto tutti i permessi, i cui valori dovranno essere adattati alla situazione locale con particolare attenzione alla sicurezza.
find . -type d -exec chmod 750 {}\\; find . -type f -exec chmod 640 {} \\;
Cancellare i vecchi file
Vogliamo cancellare i file più vecchi di 30 giorni o di 5 minuti? Nessun problema!
find /var/www/store/spool/ -type f -mtime +30 -exec rm -f {} \\; find /var/www/store/cache/ -type f -mmin +5 -exec rm -f {} \\;
Se qualcosa non fosse chiaro ottenere informazioni è molto semplice. Al di là di Google, se avete sotto mano un server Linux digitate man nomecomando (es. man mysqldump) per ottere il manuale del software; in alternativa potete consultare il sito Linuxmanpages.com.
Quelli presentati qui sopra sono una parte molto piccola di cià che è possibile fare da linea di comando come supporto ad una applicazione LAMP, ma già dovrebbero far capire quanto questo approccio sia premiante per la gestione delle risorse e la manutenzione.