Server applications
Quando un browser web carica una pagina da un sito, in realtà si connette a un computer remoto e richiede una specifica informazione. In questo scenario, il computer che esegue il browser viene chiamato client e il computer remoto viene chiamato server.
Il computer server, che può essere un normale computer desktop o hardware specializzato, ha bisogno di un programma specifico per gestire ogni tipo di informazioni che fornirà. Per quanto riguarda le pagine Web, la maggior parte dei server in tutto il mondo distribuiscono programmi server open source. Questo particolare programma server è chiamato server HTTP (Hyper Text Transfer Protocol) e quelli più popolari sono Apache, Nginx e lighttpd.
Anche le pagine web semplici possono attivare molte richieste, che possono essere file ordinari, chiamati contenuti statici, o contenuti dinamici resi da varie fonti. Il ruolo di un server HTTP è quello di raccogliere e inviare tutti i dati richiesti al browser, che poi organizza il contenuto come definito dal documento HTML ricevuto (Hyper Text Markup Language) e altri file di supporto. Pertanto, il rendering di una pagina Web comporta operazioni eseguite sul lato server e operazioni eseguite sul lato client. Entrambe le parti possono utilizzare script personalizzati per eseguire attività specifiche. Sul lato server HTTP, è abbastanza comune usare il linguaggio di scripting PHP. JavaScript è il linguaggio di scripting utilizzato sul lato client (il browser web).
I programmi server possono fornire tutti i tipi di informazioni. Non è raro avere un programma server che richiede informazioni fornite da altri programmi server. Questo è il caso in cui un server HTTP richiede informazioni fornite da un server di database.
Ad esempio, quando viene richiesta una pagina dinamica, il server HTTP in genere interroga un database per raccogliere le informazioni richieste e inviare il contenuto dinamico al client. In modo analogo, quando un utente si registra su un sito web, il server HTTP raccoglie i dati inviati dal client e li memorizza in un database.
Un database è un insieme organizzato di informazioni. Un server di database memorizza i contenuti in modo formattato, rendendo possibile leggere, scrivere e collegare grandi quantità di dati in grande velocità e affidabilità. I server di database open source sono utilizzati in molte applicazioni, non solo su Internet. Anche le applicazioni locali possono archiviare i dati collegandosi a un server di database locale. Il tipo più comune di database è il database relazionale, in cui i dati sono organizzati in tabelle predefinite. I database relazionali open source più popolari sono MariaDB (originato da MySQL) e PostgreSQL.
Condivisione dei dati
Nelle reti locali, come quelle che si trovano negli uffici o nelle case, è auspicabile che i computer non solo siano in grado di accedere a Internet, ma siano anche in grado di comunicare tra loro, dove a volte un computer funziona da server e a volte lo stesso computer da client. Ciò è necessario quando si desidera accedere a file su un altro computer della rete — ad esempio, accedere a un file memorizzato su un computer desktop da un dispositivo portatile — senza il fastidio di copiarlo su un’unità USB o simili.
Tra le macchine Linux, viene spesso utilizzato NFS (Network File System). Il protocollo NFS è il modo standard per condividere file system in reti dotate solo di macchine Unix/Linux. Con NFS, un computer può condividere una o più directory con computer specifici della rete, in modo che possano leggere e scrivere file in queste directory. NFS può anche essere utilizzato per condividere l’albero di directory di un intero sistema operativo con i client che lo utilizzeranno per l’avvio. Questi computer, chiamati thin client, sono spesso utilizzati in reti di grandi dimensioni per evitare la manutenzione di ogni singolo sistema operativo su ogni macchina.
Se ci sono altri tipi di sistemi operativi collegati alla rete, si consiglia di utilizzare un protocollo di condivisione dei dati che possa essere compreso da tutti loro. Questo requisito viene soddisfatto da Samba, il quale implementa un protocollo per la condivisione di file sulla rete originariamente creato per il sistema operativo Windows. Ad oggi Samba è compatibile con tutti i principali sistemi operativi, dove i computer della rete locale possono condividere file e stampanti.
Su alcune reti locali, l’autorizzazione concessa al momento del login su una workstation è concessa da un server centrale, chiamato controller di dominio, che gestisce l’accesso a varie risorse locali e remote. Il controller di dominio è un servizio fornito da Active Directory di Microsoft. Le workstation Linux possono associarsi a un controller di dominio utilizzando Samba o un sottosistema di autenticazione chiamato SSSD. A partire dalla versione 4, Samba può funzionare anche come controller di dominio su reti eterogenee.
Se l’obiettivo è quello di implementare una soluzione di cloud computing in grado di fornire vari metodi di condivisione dei dati basati sul web, dovrebbero essere prese in considerazione due alternative: ownCloud e Nextcloud. I due progetti sono molto simili perché Nextcloud è uno spin-off di ownCloud, che non è insolito tra i progetti open source. Tali spin-off sono solitamente chiamati “fork”. Entrambi offrono le stesse caratteristiche di base: condivisione e sincronizzazione dei file, spazi di lavoro collaborativi, calendario, contatti e posta, tutto attraverso interfacce desktop, mobile e web. Nextcloud fornisce anche audio/video conferenze private, mentre ownCloud è più focalizzata sulla condivisione di file e l’integrazione con software di terze parti. Molte altre funzionalità sono fornite come plugin che possono essere attivati in seguito, se necessario.
Sia ownCloud che Nextcloud offrono anche una versione a pagamento con funzionalità aggiuntive e supporto esteso. Ciò che li rende diversi da altre soluzioni commerciali è la possibilità di installare Nextcloud o ownCloud su un server privato, gratuitamente, evitando di conservare dati sensibili su un server sconosciuto. Poiché tutti i servizi dipendono dalla comunicazione HTTP e sono scritti in PHP, l’installazione deve essere eseguita su un server web configurato in precedenza, come Apache. Se si considera di installare ownCloud o Nextcloud sul proprio server, assicurarsi di abilitare anche HTTPS per crittografare tutte le connessioni al cloud.
Amministrazione di rete
La comunicazione tra computer è possibile solo se la rete funziona correttamente. Normalmente, la configurazione di rete viene eseguita da un insieme di programmi in esecuzione sul router, responsabili della configurazione e del controllo della disponibilità della rete. A tal fine, vengono utilizzati due servizi di rete di base: DHCP (Dynamic Host Configuration Protocol) e DNS (Domain Name System).
DHCP è responsabile dell’assegnazione di un indirizzo IP all’host quando un cavo di rete e collegato a un router o quando il dispositivo entra in una rete wireless. Quando ci si connette a Internet, il server DHCP dell’ISP fornisce un indirizzo IP al dispositivo richiedente. Un server DHCP è molto utile anche nelle reti locali, per fornire automaticamente indirizzi IP a tutti i dispositivi connessi. Se DHCP non è configurato o se non funziona correttamente, si necessita di configurare manualmente l’indirizzo IP di ogni dispositivo connesso alla rete, operazione non pratica su reti di grandi dimensioni o piccole dimensioni, ecco perché la maggior parte dei router di rete dispone di un server DHCP preconfigurato per impostazione predefinita.
L’indirizzo IP è necessario per comunicare con un altro dispositivo su una rete. Gli esseri umani sono molto più propensi a ricordare un indirizzo come www.lpi.org, piuttosto che un numero IP come 203.0.113.165. Il nome di dominio di per sé, tuttavia, non è sufficiente per stabilire la comunicazione attraverso la rete. Questo è il motivo per cui il nome di dominio deve essere tradotto in un indirizzo IP da un server DNS. L’indirizzo IP del server DNS viene fornito dal server DHCP dell’ISP e viene utilizzato da tutti i sistemi connessi per tradurre i nomi di dominio in indirizzi IP.
Le impostazioni DHCP e DNS possono essere modificate inserendo l’interfaccia web fornita dal router. Ad esempio, è possibile limitare l’assegnazione IP solo a dispositivi noti o associare un indirizzo IP fisso a macchine specifiche. È anche possibile modificare il server DNS predefinito fornito dall’ISP. Alcuni server DNS di terze parti, come quelli forniti da Google o OpenDNS, possono talvolta fornire risposte più rapide e funzionalità aggiuntive.