Lezione
1. Premessa
Web server e siti web. Manuale pratico in stile How To 1
Una guida prati per creare web server e siti web.
Questa primo manuale guida attraverso i fondamentali: l’installazione di un web server LAMP, la sua messa in funzione e la pubblicazione di un CMS fino alla creazione del certificato per l’HTTPS con Let’s Encrypt.
Le parti ti teoria, oltre a offrire i primi elementi necessari di teoria, offrono una visione più ampia sulle altre tecnologie e sulle possibili configurazioni.
Una guida indispensabile per chi è agli inizi, per chi desidera fare da se e per chi intende imparare seriamente queste tecnologie.
1. Premessa
In questo manuale iniziamo a esplorare l’allestimento di un server sito con l’obiettivo di esplorarlo a tutto campo.
Iniziamo proprio dall’installazione fisica del software Apache HTTP Server, il più noto e usato web server del mondo. A seguire vedremo subito come aggiungere e usare il PHP. Anche in questo caso è il linguaggio di scripting per siti web più usato al mondo. Completiamo l’ambiente con l’installazione del RDBMS MariaDB. Anche questo database è il più usato nelle applicazioni web. Con questo ambiente completo di web hosting (un servizio LAMP in tutta regola) passeremo a eseguire l’installazione dei due CMS più noti: Joomla e WordPress.
Da qui passiamo ad alcuni passi di teoria-pratica: il backup per salvare i nostri siti e le nostre web application in ambiente LAMP. Quindi capiamo dove sono i log generati dal web server per esplorarli e accenneremo alle soluzioni disponibili per analizzarli ed esplorarli.
Chiuderemo con una veloce rassegna delle compliance normative (GDPR, cookies, ecc…), le altre principali tecnologie web, java con gli Application Server. Quindi chiuderemo con un accenno alle tecnologie di casa Microsoft IIS e .NET.
Con questo primo manuale raggiungeremo una competenza base per l’allestimento (o l’acquisto) di un serve LAMP semplice e la pubblicazione di un CMS. Insomma: avremo una infarinatura su tutto quello che serve.
I manuali che seguiranno completeranno i temi qui accennati, dando una trattazione completa per raggiungere livelli di competenza da web master e da sistemista internet.
1.1. Panoramica
Nel procede sull’itinerario sopra indicato ci guiderà un obiettivo preciso:
-
avere un ambiente LAMP con le seguenti caratteristiche:
-
OS: Ubuntu Server 22.04 LTS
-
hostname: www.example.com
-
IP: 10.10.10.200
-
web server: Apache 2.4
-
Linguaggio: PHP 8.1
-
Database: MariaDB 10.6
-
Connessione: SSH
-
-
sito web:
-
fare una pagina manualmente
-
fare un’installazione base di PhpMyAdmin
-
fare un’installazione base di Joomla 5
-
fare un’installazione base di WordPress 6.x
-
-
completamenti:
-
imparare a creare un certificato HTTPS con Let’s Encrypt
-
capire come si acquista un dominio, un hosting e un server virtuale
-
avere una prima conoscenza delle cache e delle principali tecnologie alternative a LAMP.
-
1.2. Concetti base
I seguenti concetti li troveremo sviluppati nelle pagine di questa guida. Per un migliore apprendimento è opportuno acquisirne una prima comprensione da subito
-
CMS: acronimo di Content Management System. Si tratta di una tipologia precisa di software impiegato per creare siti web. Spesso confuso con i sistemi di blog in realtà sono due soluzioni diverse, anche se simili.
-
FQDN: acronimo di Fully Qualified Domain Name, fa riferimento ai nomi internet correttamente registrati su un DNS.
-
Hosting: concetto generico che fa riferimento all’ospitare una risorsa per la rete. Potrebbe essere un server, un sito, un servizio…
Spesso si intende il “web hosting”, ovvero un ambiente hardware-software in internet idoneo a contenere e far funzionare un sito web. -
LAMP: acronimo di Linux, Apache, MySQL o MariaDB, Perl PHP Python, indica una precisa architettura per ospitare siti web normalmente di tipo dinamico. È la tipologia di web hosting più usata.
-
LEMP: acronimo di Linux, Nginx, MySQL o MariaDB, Perl PHP Python Uguale all’ambiente LAMP usa, come software di web server, Nginx al posto di Apache.
-
(R)DBMS: famiglia di software che gestiscono database.
Gli DBMS gestiscono database non relazionali. Gli RDMS gestiscono database relazionali.
Programmi di queste famiglie sono: MySQL, MariaDB, PostgreSQL, SQL Server.
- Server: concetto generico che indica un computer o un server che fornisce servizi. Al nostro scopo accenniamo ai seguenti server
- Apache HTTP Server: software di web server. Senza dubbio ancora il più usato ed il noto;
- Nginx: software di web server. Molto più giovane di Apache vanta di essere molto veloce;
- Web Server: normalmente si riferisce al computer che esplica questo servizio. Può indicare, però, anche il solo software che offre questo servizio.
- TCP/IP: si tratta del protocollo usato da internet per permettere la comunicazione. In realtà si tratta di un insieme di protocolli, ovvero di regole che permettono agli apparati di rete di funzionare automaticamente.
Al nostro scopo vanno menzionati HTTP e HTTPS: due protocolli che normalmente viaggiano sopra il TCP/IP e trasportano le pagine web ed i loro contenuti multimediali.
1.3. Architettura di un sistema Web
Il web è concepito come un sistema server-client:
-
il device client inoltra la richiesta di una pagina ad un server;
-
il server risponde restituendo quella pagina.
L
Figura 1: Architettura di principio di un web server semplice
a pagina coincide con un file HTML presente su una specifica directory. Se il file non esiste il server risponde con un errore convenzionale. Ad esempio se non esiste il path o il file richiesto otteniamo un errore 404 (la grafica varia molto a seconda delle impostazioni fatte dal web designer).
Q
Figura 2: Schermate di esempio per l’errore 404
uesta architettura di principio ha un limite molto importante: se usiamo dei file HTML per creare le pagine significa che queste sono statiche. Pertanto non è possibile creare form, interrogare un database, generare pagine dinamiche che restituiscono le previsioni del tempo, né creare web TV o radio TV.
Questi limiti si superano, restando sempre nell’architettura di principio, mettendo un linguaggio a monte del webserver. In questo modo il web server passa la pagina richiesta al linguaggio, il quale elabora quanto riceve e restituisce una risposta sotto forma di pagina HTML.
I
Figura 3: Architettura di principio di un web server con un linguaggio
n questa configurazione la soluzione più popolare del web è l’abbinata PHP con MySQL o MariaDB in ambiente Linux, nota anche come LAMP.
1.4. Prepariamo il server
I capitoli che seguono ipotizzano che operiamo su un server di tipo Ubuntu Server 22.04 LTS (cf.: https://www.ubuntu-it.org ).
Non è scopo di questo manuale formare all’installazione e a una corretta configurazione. Per questo obbiettivo si rimanda alle guide online o ala fruizione di un corso ad hoc.
Le indicazioni e le istruzioni che seguono mirano a dotare ciascuno dell’ambiente di riferimento usato dal capitolo 2 in avanti.
Per chi desidera approfondire l’installazione e la parte sistemistica di un web server Ubuntu può far riferimento alle guide:
-
Installazione
https://wiki.ubuntu-it.org/Installazione -
Installazione > Installare Ubuntu > Nuovo Installer
https://wiki.ubuntu-it.org/Installazione/InstallareUbuntu/NuovoInstaller -
Ubuntu Server how-to guides
https://ubuntu.com/server/docs/how-to -
How to Install Ubuntu 24.04 (Noble Numbat) Minimal Server
https://www.howtoforge.com/tutorial/ubuntu-24-04-minimal-server/
Per avere un server atto allo scopo didattico di queste pagine possiamo scegliere tra:
-
impiegare un vecchio computer dismesso;
-
creare una VM (Macchina Virtuale) sul nostro computer tramite un hypervisor come
-
VirtualBox,
https://www.virtualbox.org -
VMware Workstation,
https://www.vmware.com/products/desktop-hypervisor.html -
Parallels,
https://www.parallels.com
-
-
acquistare da un provider un server virtuale.
L’ultima ipotesi, per chi ha un primo approccio a questo mondo, può essere eccessiva anche se parliamo assolutamente di piccoli costi.
Un VM è una via percorribile per tutti, anche totalmente senza costi, gestibile da tutti gli hardware recenti, ma comporta un po’ di complicazioni per l’utente.
Per chi recupera un vecchio computer (ma non troppo vecchio) è una nobile azione anche di riciclaggio.
L’installazione, in linea di principio, è semplice:
-
si scarica il file ISO di Ubuntu
-
si scrive il file su un DVD o un pendrive.
Nel caso realizziamo un VM basta rendere disponibile il vile all’hypervisor; -
si avvia la macchina fisica dal supporto creato dal file ISO.
Nel caso di macchina virtuale basta farla avviare dal file ISO; -
dopo l’avvio c’è una procedura guida che provvede prima a chiedere le informazioni necessarie, poi a installare Ubuntu.
Durante la prima fase di raccolta delle informazioni fondamentali è importante impostare l’IP 10.10.10.200, impostare la username webadmin e documentare subito la password impostata e selezionare l’installazione del server OpenSSH; -
al termine dell’installazione verrà chiesto il riavvio.
Finita la fase di installazione è importate fare subito un’operazione di aggiornamento:
-
colleghiamoci al server appena creato o dalla console o via SSH;
-
autentichiamoci con l’utente impostato durante l’installazione;
-
dal terminale diamo il seguente comando di aggiornamento
sudo apt update
NB: il comando sudo richiede una password. Quella da inserire è la password dell’utente webadmin
-
diamo il comando per applicare gli aggiornamenti disponibili
sudo apt full-upgrade
Simo pronti per procedere.