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.

Installare configurare server web: Grande Guida Apache/Nginx, PHP, MySQL Windows Linux

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

Installare configurare server web: Grande Guida Apache/Nginx, PHP, MySQL Windows Linux

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:

In caso di problemi con l'avvio del servizio, fare riferimento a questa guida diagnostica:

» Leggi: Apache (web server): risolvere gli errori The requested operation has failed!, AH00526: Syntax error on line, AH00072: make_sock: could not bind to address 0.0.0.0:80, AH00558: Could not reliably determine the server's fully qualified domain name

Passo 1 con Nginx: Installare Nginx

Installare configurare server web: Grande Guida Apache/Nginx, PHP, MySQL Windows Linux

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

Installare configurare server web: Grande Guida Apache/Nginx, PHP, MySQL Windows Linux

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:

In ambiente Linux dobbiamo poi configurare il nostro server web per comunicare con PHP. Procediamo a seconda del software che abbiamo scelto:

Passo 3: Installare MySQL

Installare configurare server web: Grande Guida Apache/Nginx, PHP, MySQL Windows Linux - mysql logo spotlight

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:

Passo 4: Aprire le porte sul firewall

Installare configurare server web: Grande Guida Apache/Nginx, PHP, MySQL Windows Linux - nmap zenmap spotlight

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):

Per una guida ai principali numeri di porte, tenete sotto mano anche questa guida:

» Leggi: Porta 80 aperta! cosa significa? Guida riepilogativa ai principali numeri di porta TCP per la comunicazione in rete

Passo 5: Visualizzare i siti in rete locale

Installare configurare server web: Grande Guida Apache/Nginx, PHP, MySQL Windows Linux

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:

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 web
  • sitoXX.com www.sitoXX.com: sono i nomi (parametro di Apache ServerName o ServerAlias) dei siti configurati in Apache

Per recuperare l'indirizzo IP di rete locale del server:

In caso il servizio non rispondesse, tenete sotto mano queste istruzioni:

» Leggi: "Impossibile connettersi al computer remoto": cosa fare quando i nostri servizi non rispondono ai client

Passo 6: Inoltrare le porte dal router al PC

Installare configurare server web: Grande Guida Apache/Nginx, PHP, MySQL Windows Linux - guida aprire le porte del router modem spotlight

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.

» Leggi: "Impossibile connettersi al computer remoto": cosa fare quando i nostri servizi non rispondono ai client

Passo 7: Ottenere un dominio

Installare configurare server web: Grande Guida Apache/Nginx, PHP, MySQL Windows Linux

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

Installare configurare server web: Grande Guida Apache/Nginx, PHP, MySQL Windows Linux - rating ssllabs a+ lets encrypt

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:

» Leggi: Come ottenere un certificato HTTPS (SSL/TLS) gratis: la Grande Guida a Let's Encrypt su Linux CentOS/Ubuntu (rating SSL Labs: "A+")

Dopo aver ottenuto il certificato possiamo modificare la configurazione per far sì che ogni richiesta in HTTP venga automaticamente gestita in HTTPS:

» Leggi: Redirect da HTTP a HTTPS con Apache o Nginx su Ubuntu Server, CentOS o Windows - guida e migliore configurazione webserver pronta all'uso

Passo 9: Ottimizzare le prestazioni di Apache

Installare configurare server web: Grande Guida Apache/Nginx, PHP, MySQL Windows Linux

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

Installare configurare server web: Grande Guida Apache/Nginx, PHP, MySQL Windows Linux

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)