Saper installare e configurare un server web con Apache HTTP Server o Nginx, PHP e MySQL è una "skill" fondamentale per molti studenti e professionisti che vogliano lavorare con l'informatica, non fosse altro perché è il pre-requisito per sviluppare siti web in PHP, creare un blog con WordPress, Drupal, Joomla o avviare un'attività di eCommerce con Magento oppure OpenCart, PrestaShop eccetera. Nel corso di questa guida passo-passo vedremo come preparare tutto quanto ed installare Apache HTTP Server o Nginx, MySQL e PHP sul PC con Windows o Linux. Lo scopo è presentare la procedura nel modo più semplice possibile, senza perdersi in micro-configurazioni inizialmente superflue ma anche senza dare nulla per scontato. Ebbene: siamo dunque pronti ad installare e configurare Apache o Nginx, PHP e MySQL partendo da zero.
nota: la trattazione seguente è implicitamente esposta come guida all'installazione di Apache o Nginx, PHP e MySQL su PC o notebook, ma i passaggi sono grossomodo gli stessi anche quando si prepara un "vero" server dedicato o un VPS. Per intenderci: il server di TurboLab.it dal quale viene erogata la presente guida è stato configurato esattamente così.
Passo 1 con Apache: Installare Apache HTTP Server
Apache HTTP Server (chiamato impropriamente solo Apache, per brevità) è il programma che, installato su PC o server, risponde ai client, ovvero ai browser web degli utenti che richiedono una determinata risorsa (pagina, immagine, video, file ecc.).
Per installare Apache sul PC, seguiamo queste guide:
- Installare Apache su Windows: Come installare Apache su Windows 10 e trasformare il PC in un server web: la Guida Definitiva
- Installare Apache su Linux: Guida server web: come installare Apache su Linux (Ubuntu/CentOS)
In caso di problemi con l'avvio del servizio, fare riferimento a questa guida diagnostica:
Passo 1 con Nginx: Installare Nginx
Nginx è un server web alternativo al più conosciuto Apache. Per installare Nginx sul PC, seguiamo questa guida:
» Leggi: Guida Nginx Ubuntu e CentOS: come installare e configurare Nginx su Linux
Nota: sebbene Nginx sia disponibile anche per Windows, è ottimizzato e realmente consigliabile per l'uso in ambienti di produzione solo su server Linux. Per questo motivo, non abbiamo pubblicato una equivalente guida a Nginx su Windows. A chi lavorasse unicamente in ambiente Windows, è altamente consigliabile scegliere Apache HTTP Server.
Passo 2: Installare PHP
PHP è un linguaggio di programmazione che consente di creare siti web dinamici, web API di supporto alle app per dispositivi mobili e molto altro. È necessario anche se vogliamo sfruttare un gestore di contenuti (CMS) già pronto, come WordPress, Joomla o Drupal.
Per installare l'interprete PHP sul PC, le procedure passo per passo sono:
- Installare PHP su Windows: Guida server web: come installare/configurare PHP con Apache su Windows 10
- Installare PHP su Linux: Guida: come installare PHP 8 su Linux (Ubuntu/CentOS)
In ambiente Linux dobbiamo poi configurare il nostro server web per comunicare con PHP. Procediamo a seconda del software che abbiamo scelto:
- Configurare Apache e PHP: Guida Apache e PHP: come attivare/installare PHP-FPM con Apache su Ubuntu/CentOS
- Configurare Nginx e PHP: Guida Nginx e PHP: come attivare/installare PHP-FPM con Nginx su Ubuntu/CentOS
Passo 3: Installare MySQL
MySQL è il popolarissimo database relazionale (RDBMS) gratuito ed open source che, in ambito applicativo/web server, svolge il ruolo di "contenitore" per i dati (account degli utenti, messaggi, articoli, prodotti ecc.).
Per installare MySQL su Windows o Linux, procediamo in questo modo:
- Installare MySQL su Windows: Guida: installare MySQL sul PC Windows
- Installare MySQL su Linux: Guida: come installare MySQL per Linux (Ubuntu/CentOS)
Passo 4: Aprire le porte sul firewall
Se siete arrivati fino a qui con successo, avete configurato un server web completo e funzionante. Ma per renderlo accessibile da tutti, e non solo dal PC locale, dovete aprire le porte usate dal web server sul firewall (la 80
per HTTP e la 443
per HTTPS):
- Aprire le porte di Apache sul firewall di Windows: Guida: come aprire le porte su Windows Firewall
- Aprire le porte di Apache sul firewall di Ubuntu: Guida rapida a ufw - Come attivare/configurare il firewall su Ubuntu Desktop/Server da linea di comando: aprire le porte, bloccare le connessioni e gli indirizzi IP
- Aprire le porte di Apache sul firewall di CentOS: Aprire le porte sul firewall di Linux CentOS - guida rapida a firewalld
Per una guida ai principali numeri di porte, tenete sotto mano anche questa guida:
Passo 5: Visualizzare i siti in rete locale
Dopo aver configurato i programmi ed aver aperto le porte sul firewall, possiamo certamente provare a visualizzare le pagine anche da un altro PC o dispositivo della rete locale (LAN). Per raggiungere lo scopo è sufficiente modificare il file hosts della macchina che desideriamo impiegare come client:
- Modificare file hosts di Windows o Linux: La Grande Guida al file hosts: che cos'è, a cosa serve e come modificarlo per bloccare malware e pagine web indesiderate o sviluppare app e siti in locale (Windows, Linux, Mac, Android)
- Modificare file hosts di Android: Guida definitiva: come modificare il file hosts di Android tramite PC
In particolare, andremo ad inserire qualcosa di simile a:
192.168.0.15 sito1.com www.sito1.com
192.168.0.15 sito2.com www.sito2.com
192.168.0.15 sito3.com www.sito3.com
Dove:
192.168.0.15
: è l'indirizzo IP di rete locale del PC sul quale abbiamo configurato il server websitoXX.com www.sitoXX.com
: sono i nomi (parametro di ApacheServerName
oServerAlias
) dei siti configurati in Apache
Per recuperare l'indirizzo IP di rete locale del server:
- Scoprire l'indirizzo IP con Windows: Trovare il nome, l'indirizzo IP e il MAC address del proprio computer Windows
- Scoprire l'indirizzo IP con Ubuntu: Visualizzare l’indirizzo IP del computer con Ubuntu
- Scoprire l'indirizzo IP con CentOS: Come visualizzare l'indirizzo IP con Linux CentOS
In caso il servizio non rispondesse, tenete sotto mano queste istruzioni:
Passo 6: Inoltrare le porte dal router al PC
Ora che tutto è configurato correttamente, siamo pronti a rendere accessibile il nostro sito da ogni parte del mondo! Per farlo, dobbiamo assicurarci che il nostro router inoltri le richieste dei visitatori al PC sul quale abbiamo installato Apache. La procedura è universalmente nota come "port forwarding", ma, informalmente, si parla di "aprire le porte sul router".
Di nuovo: si tratta della 80 TCP
per HTTP e la 443 TCP
per HTTPS:
» Leggi: Come aprire le porte sul router/modem: la guida definitiva al port forwarding (inoltro delle porte)
Quando tutto sembra essere configurato come da manuale ma il nostro sito continua a non rispondere alle richieste dei client, c'è solo una cosa da fare: armarsi di questa "checklist" e... trovare l'inghippo.
Passo 7: Ottenere un dominio
Per fare in modo che chiunque possa visitare il sito che abbiamo creato ci serve un nome a dominio, tipo turbolab.it
, da digitare nella barra degli indirizzi del browser web. Tanto per iniziare, possiamo usare un servizio di DNS dinamico (DDNS), gratuito e molto comodo quando il sito è erogato dal PC di casa:
» Leggi: Guida a Dynamic DNS (DDNS) con Duck DNS
Durante questa operazione, ricordate sempre che Apache servirà il sito corrispondente al dominio richiesto dal browser solamente se detto dominio è stato puntualmente configurato come parametro di Apache ServerName
oppure ServerAlias
. In tutti gli altri casi, verrà mostrato il sito di default.
Se raggiungiamo quotidianamente un buon numero di visite, siamo pronti a fare sul serio e dare un tono più professionale al progetto. Registriamo dunque un dominio .com oppure .it tramite un fornitore di servizi come Aruba oppure OVH e facciamolo puntare al nostro server web.
Passo 8: Più sicuri con HTTPS
Il sito web che abbiamo preparato fino a qui ha un grosso problema di sicurezza e riservatezza: tutte le informazioni scambiate fra client e server viaggiano "in chiaro" su protocollo HTTP. Questo significa che chiunque riesca ad intercettare il traffico può carpire senza fatica informazioni confidenziali, quali le credenziali di login oppure il numero di carta di credito. La soluzione è semplicissima: basta passare ad HTTPS (SSL/TLS) installando un certificato gratuito:
Dopo aver ottenuto il certificato possiamo modificare la configurazione per far sì che ogni richiesta in HTTP venga automaticamente gestita in HTTPS:
Passo 9: Ottimizzare le prestazioni di Apache
Apache è perfettamente in grado di erogare siti web a molteplici visitatori contemporaneamente. Ma quando il traffico sale, è opportuno metter mano alla configurazione per ottenere performance ottimali. Applichiamo questi semplici trucchi per mettere il turbo al nostro server web senza fatica:
» Leggi: Guida rapida: KeepAlive, MaxClients e altri trucchi facili per velocizzare Apache (httpd)
Passo 10: Indirizzi più gradevoli, grazie a mod_rewrite
mod_rewrite è un modulo per il webserver Apache HTTP Server che consente di effettuare redirect oppure mostrare agli utenti URL più gradevoli, sostituendo miosito.com/articoli.php?categoria=5&articolo=2
con un più pratico e significativo miosito.com/bici/ruote-grandi/
» Leggi: Installare e attivare mod_rewrite su Ubuntu Server, CentOS o Windows (guida Apache HTTP Server)