Guida Linux
L'intento di questa guida è di formare il lettore ad un utilizzo di base del sistema operativo Linux da un punto di vista prettamente pratico. L'obiettivo di questo manuale, più precisamente, è quello di fornire al lettore la conoscenza dei comandi basilari che gli consentano di destreggiarsi, con una certa autonomia, all'interno dell'OS al fine di svolgere le più comuni operazioni di amministrazione di un web server basato su questa tecnologia.
Una Guida a Linux su Mr.Webmaster, infatti, non può che essere finalizzata a formare l'utente all'utilizzo di questo sistema in ambito web: non è nostra intenzione, quindi, formare l'utente all'installazione ed all'utilizzo del sistema in un ottica consumer bensì quello di fornire un valido (e pratico) riferimento a supporro di chi, per hobby o per lavoro, si ritrova ad avere a che fare con un server web (fisico o virtuale) basato su questo tipo di OS.
Il web sempre più nel segno del pinguino
Questa guida (la cui prima versione risale al 2004) si è presto resa necessaria in quanto Linux si è saputo imporre negli anni come il principale sistema operativo in ambito server web scardinando un dominio (quello commerciale di Windows) che sembrava tanto solido quanto indiscutibile.
Il successo di Linux nella grande Rete è testimoniato, inoltre, dalla enorme diffusione di software (Apache, MySQL, Tomcat, ecc.), di linguaggi (PHP su tutti) e di applicativi (si pensi, ad esempio, a WordPress e Joomla) che hanno trovato in Linux e nella sua community il "brodo primordiale" ideale in cui nascere, crescere e diffondersi. Ad oggi possiamo dire senza timore di smentita che la maggior parte dei siti web si basa su LAMP (ovvero sul connubio delle tecnologie Linux, Apache, MySQL e PHP) mentre la diffusione di Windows Server e degli altri "ambienti di produzione" si sta facendo sempre più marginale e circoscritta ad esigenze specifiche.
La vistosa riduzione dei prezzi dei servizi di Housing e la nascita di numerose offerte di server virtuali a basso costo, inoltre, ha moltiplicato in modo esponenziale la diffusione di sistemi indipendenti e, di conseguenza, ha reso indispensabile anche per il "semplice webmaster" avere delle conoscenze di base di amministrazione di sistemi, soprattutto se chiamato a lavorare su progetti web ristretti e senza uno staff strutturato.
Obiettivo della nostra guida a Linux
L'ambito di questa guida è proprio questo: il nostro breve manualetto non ha la presunzione di formare dei veri e propri "aministratori di sistema" (per i quali è certamente necessario un percorso didattico ben più lungo e articolato), ma semplicemente quello di fornire al lettore gli strumenti di base per la gestione quotidiana di un piccolo server Linux.
Nelle lezioni che seguono, infatti, vedremo insieme come accedere al sistema e come compiere le operazioni fondamentali per la gestione ordinaria della nostra macchina utilizzando i principali comandi per l'interazione col filesystem, la gestione degli utenti nonché altre funzionalità basilari.
Come al solito cercheremo di concentrare la nostra attenzione sull'essenziale, usando un linguaggio semplice e fornendo esempi pratici cercando di non lasciare nulla di scontato. Ma prima di addentrarci nella nostra guida ritengo opportuno offrirvi una brevissima panoramica storica sulla nascita e la diffusione di questo OS.
Storia e filosofia di Linux
A scuola mi è sempre piaciuta la storia perchè credo che conoscere il passato ci aiuti a comprendere meglio il presente ed il futuro. Per questo motivo ritengo necessaria questo breve, brevissimo, accenno alla "storia ed alla filosofia di Linux".
Forse non tutti sanno che Linux, a differenza di Windows, non è stato sviluppato da una grossa azienda di software con investimenti milionari, bensì è nato da un singolo programmatore di nome Linus Torvalds (da qui il nome "Linux") che ha iniziato a lavorarci nel 1991, quando ancora era uno studente, partendo dalla modifica di Minix, un sistema operativo Unix-like che però non offriva un adeguato supporto all'architettura i386 a 32 bit che all'epoca era molto popolare.
Ma la grande svolta non è questa. Quella che vi stiamo raccontando, infatti, non è solo la bella storia di "Davide contro Golia", ma è la storia di una scelta coraggiosa e controcorrente.
Il giovane Torvalds, infatti, non ha mai venduto il proprio lavoro, ma ha deciso di condividerlo gratuitamente con chiunque ne fosse interessato distribuendo sotto licenza open-source il codice sorgente frutto di tanta fatica. Il codice del kernel di Linux, infatti, è liberamente distribuito ed è a disposizione di tutti, contrariamente a quello di Windows che è al sicuro nelle casseforti dell'azienda fondata da Bill Gates (da qui la contrapposizione tra open-source e closed-source).
Linus Torvalds ha definito la propria scelta di distribuire il suo lavoro sotto licenza GPL (General Public License) come "la miglior cosa che abbia mai fatto" e sicuramente non si sbaglia nel dirlo: la scelta di regalare tanto lavoro al mondo, infatti, è stata ampiamente ripagata ed è stata, senza dubbio, il fattore primario sul quale si è costruito il successo di Linux.
Questa decisione coraggiosa ha dato vita ad una vastissima comunità (o meglio, a diverse comunità) di programmatori che hanno lavorato insieme (sotto la direzione ed il coordinamento di Torvalds) per migliorare sempre più il sistema operativo che ha continuato ad essere distribuito gratuitamente, sulla base del principio (in netta opposizione a quello del "profitto a tutti i costi" perseguito dalle grandi software house) secondo il quale "la conoscenza è libera ed è di tutti".
Oggi, a distanza di anni, esistono diverse versioni di Linux (dette "distribuzioni") che hanno raggiunto un pieno grado di maturità e sono universalmente considerate valide alternative ai sistemi commerciali. In questi anni, infatti, sono sempre più le aziende, i privati e le istituzioni che hanno abbracciato la filosofia open source del pinguino, confermando che Linux è un sistema operativo non più "sperimentale" o "di confine", come qualcuno lo aveva definito inizialmente, ma una realtà solida, sicura, affermata (oltre che gratuita).
Una curiosità: l'ultima versione oggi disponibile del kernel Linux è costituita da circa 14 milioni di linee di codice (la prima release erano poco più di 150 mila) e, secondo una stima della comunità europea, i costi di sviluppo di questo sistema nell'ambito di un'azienda privata avrebbero superato gli 800 milioni di euro: credo, per concludere, che questi numeri esprimano molto bene la portata del lavoro svolto in seno alla community di Linux e di quanto ciò sia prezioso per tutti.
LAMP: i "fantastici 4" della Rete
Abbiamo già detto di come la gratuità sia stata uno dei motori del successo di Linux, tuttavia pensare che questo OS abbia ottenuto il suo successo solo perchè gratuito sarebbe estremamente sbagliato: i meriti di Linux sono tantissimi in quanto parliamo di un prodotto di altissimo livello in grado di garantire standard di sicurezza ed affidabilità davvero molto elevati.
Al successo di Linux in ambito web, inoltre, hanno contribuito alcuni software che sono nati in seno alla community degli sviluppatori open-source: parliamo di Apache, MySQL e PHP, ovvero degli altri tre strumenti che, insieme a Linux, compongono l'architettura LAMP.
Vediamo brevemente cosa sono:
ApacheE' il web server più utilizzato sui sistemi Linux. Ad oggi è il web-server più utilizzato in Rete essendo riuscito a scavalcare IIS (il web-server di Microsoft) nelle preferenze dei sistemisti di tutto il mondo grazie alla sua affidabilità ed al fatto di essere a codice sorgente libero. Per maggiori informazioni vi suggersico la lettura della nostra guida ad Apache.
PHPE' uno dei principali linguaggi di scripting utilizzati sui siti Web di tutto il mondo. Acerrimo rivale di ASP e ASP.Net di casa Microsoft, oggi PHP è il cuore della stragrande magioranza dei siti web anche grazie alla grandissima diffusione di CMS come WordPress eJoomla che sono costruiti con la sua sintasi. Per approfondire PHP vi suggerisco la lettura della nostra guida completa A PHP.
MySqlE' un database management system (DBMS) di tipo relazionale adatto ad applicazioni caratterizzate da elevati livelli di criticità. Eccellente la combinazione con PHP. Per maggiori informazioni potete leggere la nostra guida a MySQL oppure la guida allo sviluppo di web application con PHP e MySQL.
Installazione di Linux
Come più volte detto questa guida è rivolta a chi desidera sapersi muovere all'interno di un web-server equipaggiato con una distribuzione di Linux. Non rientra tra le finalità di questa guida, quindi, spiegare come procedere all'installazione di Linux: quando si acquista un server dedicato o una VPS, infatti, il sistema ci viene consegnato con l'OS precaricato, pertanto il primo step pratico della nostra guida sarà il login nel sistema.
Prima volta nella shell di Linux: login in locale e da remoto (con SSH) – Guida Linux
In questa prima lezione pratica dedicata al mondo di Linux vedremo come entrare ed uscire dalla Shell (la maggior parte dei sistemi Linux non utilizza un'interfaccia grafica ma comunca con l'utente, appunto, attraverso un prompt di comandi di tipo testuale, la Shell in senso stretto).
Nota: è definita Shell l'interfaccia che consente di impartire istruzioni al computer. La shell può...
La documentazione: man e whatis – Guida Linux
Ti sei loggato e ti trovi di fronte la Shell? E' la prima volta e non sai cosa fare? Beh, puoi sempre dare un'occhiata al "manuale di linux".
Per farlo è sufficiente digitare il comando man seguito dal nome nome del comando su cui volete avere informazioni.
N.B. -
Linux è molto attento a minuscole e maiuscole. Quindi prestate attenzione...
Muoversi nel file system: pwd e cd – Guida Linux
In questa lezione vedremo di prendere un po' di confidenza con alcuni dei comandi fondamentali della shell di Linux: pwd, cd e ls. I primi due comandi comandi vengono trattati insieme in quanto hanno uno scopo comune: muoverci all'interno del file system.
pwd
Il comando pwd (present working directory) chiede alla macchina di indicarci in quale directory ci troviamo. Provate ad...
Vedere il contenuto di una cartella in Linux – il comando ls
Nella lezione precedente abbiamo visto come scoprire la posizione in cui ci troviamo (pwd) e come spostarci tra le directory (cd). Ma cosa contiene la directory in cui ci troviamo? Quali file e quali cartelle sono presenti al suo interno?
Visualizzare il contenuto di una cartella
Per conoscere il contenuto di una cartella su Linux useremo il comando ls (abbreviazione di...
Linux find: cercare tra i file
In questa lezione vedremo come effettuare delle ricerche per trovare file e/o directory all'interno del nostro file system. Per fare ciò Linux dispone di diversi comandi, in questa lezione della nostra guida vedremo come funzionano e a cosa servono i tre principali per la ricerca tra i file del sistema operativo: find, locate e grep.
In questa lezione della nostra...
Linux locate e grep – cercare tra file e cartelle
Nella lezione precedente abbiamo visto come utilizzare il comando find di Linux per effettuare ricerche all'interno del filesystem. In realtà find non è l'unico strumento di ricerca fornito dal sistema operativo. In questa lezione vedremo nel dettaglio come funzionano i comandi locate e grep di Linux.
Il comando locate
Il modo più semplice e veloce per cercare file o directory ci...
Linux: creare e cancellare file e directory: touch, rm, mkdir e rmdir
In questa lezione della nostra Guida Linux vedremo come è possibile creare e cancellare file e directory dalla nostra linea di comando. Vediamo, portanto, di seguito l'utilizzo dei comandi: touch, rm, mkdir e rmdir.
Creare un file: touch
Spostatevi nella directory in cui volete che il nuovo file venga creato ed utilizzate il comando touch seguito dal nome del file che...
Copiare e spostare file e cartelle su Linux: cp e mv
Proseguiamo in questa lezione il nostro viaggio nel file system analizzando altri due utili comandi della shell di Linux, ovvero cp (copy) e mv (move) che ci serviranno rispettivamente per copiare, spostare e rinominare file e/o directory all'interno del nostro sistema operativo.
IndiceIl comando cpCopiare fileCopiare intere directoryLe opzioni del comando cpIl comando mvSpostare fileSpostare una cartellaRinominare file e cartelleLe...
Creare link simbolici verso file e cartelle: ln – Guida Linux
In questa breve lezione vedremo come creare alias (o link simbolici) ad un dato file o ad una data cartella, in modo che questo appaia in più luogi contemporaneamente con nomi (eventualmente) diversi. Per fare tutto ciò utilizziamo il comando ln (abbreviazione di link, appunto).
Facciamo subito un esempio: poniamo di voler creare un link simbolico nella root del nostro...
Come creare file tar su Linux
Tar è un programma per l'archiviazione molto utilizzato in ambiente Unix e Linux. E'bene precisare fin da subito che il termine "archiviazione" deve essere tenuto ben distinto da quello a volte associato di "compressione"; con il primo si intende infatti la creazioni di un unico file (archivio) contenente più documenti e cartelle; con il secondo, invece, si intende un'operazione...
Visualizzare il contenuto di un file: cat, less, head e tail – Guida Linux
Linux prevede diversi comandi per visualizzare il contenuto di un file di testo. In questa lezione passeremo velocemente in rassegna i principali.
Attenzione: i comandi di seguito servono per visualizare il contenuto di un file NON per modificarlo, attività che richiede appositi comandi che vedremo in una delle prossime lezioni.
cat
Visualizza l'intero contenuto di un file. Si usa così:
cat filename.txt
E' possibile...
Pipeline e Redirezionamenti – Guida Linux
La shell di Linux gestisce tutti i programmi avviati attraverso 3 canali standard. Questi tre canali sono:
stdin (stabdard input - file descriptor 0) - è il canale attraverso il quale il programma riceve i dati di ingresso (generalmente questo canale è la tastiera del terminale);
stdout (stabdard output - file descriptor 1) - è il canale attraverso il quale "esce"...
I processi in Linux
In questa lezione introdurremo i processi, cioè le "attività" che vengono create dai diversi comandi all'interno del nostro sistema operativo. E' appena il caso di ricordare che Linux (come molti altri OS) è un sistema multitasking ed è in grado, pertanto, di gestire simultaneamente diversi processi. Prima di proseguire, tuttavia, si rende opportuna qualche precisazione preliminare.
Per prima cosa cercheremo,...
Eseguire processi in background – Guida Linux
Nella lezione precedente della nostra guida Linux abbiamo vista cosa sono i processi ed in che modo vengono generati. Abbiamo visto che i processi di sistema (detti demoni) agiscono in background, cioè senza una interazione diretta con l'utente. Si tratta di processi che godono di una certa autonomia in quanto, appunto, l'interazione con l'utente non è indispensabile affinchè il...
Monitorare i processi: i comandi ps e top – Guida Linux
Linux offre ampia possibilità di gestione dei processi in esecuzione. Abbiamo già visto come mandare un processo in esecuzione "dietro le quinte", come stoppare un processo e come spostarlo da background a foreground. In questa lezione proseguiamo nel nostro percorso alla scoperta di come monitorare i processi nel nostro sistema opertivo attraverso l'analisi dei comandi ps e top.
Il comando...
Terminare i processi: kill, killall e nohup – Guida Linux
In questa lezione vediamo come eliminare un processo o, più correttamente, come terminare un processo in esecuzione.
Come abbiamo detto, quando lanciamo un comando si avvia il corrispondente processo nel sistema. Il processo "resta in vita" sino a quando non ha concluso il suo lavoro oppure non viene terminato dall'utente. In quest'ultimo caso il processo viene interrotto brutalmente senza attendere,...
Linux: creare, modificare ed eliminare utenti e gruppi
Su Linux, come su tutti i sistemi operativi, è possibile creare una molteplicità di utenti in grado di lavorare all'interno del sistema: Linux è un sistema multiuser. Gli utenti, a loro volta, possono essere raggruppati all'interno di gruppi (ciascun utente può partecipare ad uno o più gruppi) caratterizzati da permessi comuni a tutti i membri.
Ad esempio possiamo creare nel...
Gestire i permessi in Linux: chmod, chown, chgrp
Per poter operare su file e cartelle all'interno di Linux è necessario disporre dei necessari permessi. A tal proposito vedremo, nel dettaglio, il funzionamento dei comandi chmod, chown e chgrp.
Cosa sono i permessi?
I sistemi Unix-Like (come Linux) sono stati tra i primi ambienti multi-utente e sono noti per il modo in cui gestiscono i permessi all'interno del filesystem. Ma...
crontab: operazioni pianificate su Linux
Spesso capita di aver la necessità di far partire automaticamente una certa operazione ad un dato momento del giorno o ad un dato giorno della settimana (si pensi, ad esempio, ai processi automatici di backup o di archiviazione dei log). Per fare ciò su Windows utiliziamo l'utilità di pianificazione (Task Scheduler), su Linux utilizzeremo il crontab.
I cron job
Grazie a...