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ò...
Usare la shell di Linux: man e whatis
Introduzione alla Shell di Linux
Se ti sei recentemente loggato e ti trovi di fronte alla Shell di Linux, probabilmente ti senti un po' disorientato. È normale, specialmente se è la tua prima volta. Non preoccuparti, questo articolo ti guiderà attraverso alcuni comandi fondamentali per sfruttare al meglio la Shell di Linux. Uno dei più utili è il comando man,...
Muoversi nel file system di Linux: pwd e cd
In questa lezione della nostra Guida a Linux vedremo di prendere un po' di confidenza con alcuni dei comandi fondamentali della shell di Linux: pwd, cd e ls. I primi due comandi vengono trattati insieme in quanto hanno uno scopo comune: muoverci all'interno del file system. Comprendere come utilizzare questi comandi è essenziale per navigare efficacemente nel sistema operativo...
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? In questo articolo approfondiremo il comando ls, uno strumento fondamentale per esplorare il contenuto delle directory in Linux, che...
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 particolare, questa guida si...
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.
IndiceIl comando locateAggiornare l'indice di locateIl comando grepEffettuare ricerche ricorsive con grepUtilizzare grep con...
Linux: creare e cancellare file e directory con 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.
IndiceCreare un file: touchCreare una directory: mkdirCancellare file e directory: rmCancellare directory: rmdir
Creare un file: touch
Spostatevi nella directory in cui volete che il nuovo file venga...
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 in Linux: ln
In questa breve lezione, vedremo come creare link simbolici (alias) a un dato file o a una cartella, in modo che questi appaiano in più luoghi contemporaneamente con nomi (eventualmente) diversi. Per fare tutto ciò, utilizziamo il comando ln (abbreviazione di link).
IndiceCos'è un Link Simbolico?Esempio Pratico: Creare un Link SimbolicoDistinguere Link Simbolici da File RealiUlteriori Opzioni del Comando ln
Cos'è...
Come creare file tar su Linux
Tar è un programma per l'archiviazione molto utilizzato in ambiente Unix e Linux. È 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 creazione di un unico file (archivio) contenente più documenti e cartelle; con il secondo, invece, si intende...
Visualizzare il contenuto di un file in Linux: cat, less, head e tail
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.
Indicecatlessheadtail
cat
Visualizza l'intero contenuto di un file. Si usa così:
cat filename.txt
E' possibile...
Pipeline e Redirezionamenti in Linux
Utilizzando la shell di Linux, puoi gestire in modo efficace l'input e l'output dei tuoi programmi, sfruttando a pieno le potenzialità offerte da questi strumenti. In questa lezione esploreremo dettagliatamente i tre canali standard gestiti dalla shell di Linux e come utilizzare le pipeline e i redirezionamenti per semplificare il tuo lavoro e migliorare l'efficienza del tuo codice.
IndiceI canali...
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 su 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.
IndiceIl comando...
Terminare i processi: kill, killall e nohup – Guida Linux
In questa lezione della nostra Guida a Linux 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...
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.
IndiceCosa sono i permessi?Cartelle, file e permessichmodchown e chgrpchmod, chown, chgrp in modalità ricorsiva
Cosa sono i permessi?
I sistemi Unix-Like (come Linux) sono stati tra i primi ambienti multi-utente e sono...
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.
IndiceI cron jobIl comando...