←
XAMPP: Apache, Server e Protocollo HTTP
home / miscellaneous /
Lucio Paolo Asciolla
Senior Full Stack Developer

Apache è un popolare programma open-source multipiattaforma che viene fatto girare, normalmente, sui web server; si occupa dell'accettazione delle richieste HTTP generate dagli utenti di Internet e dell'invio delle informazioni desiderate sotto forma di file e pagine Web.
Apache è attivamente sviluppato da Apache Software Foundation.
Tra le aziende di alto profilo che utilizzano Apache annoveriamo Cisco, IBM, Salesforce, General Electric, Adobe, VMware, Xerox, LinkedIn, Facebook, Hewlett-Packard, AT & T, Siemens, eBay e molte altre.
Oltre ad essere popolare è anche uno dei più vecchi software per i server web.
La prima versione risale al 1995 e la maggior parte dei servizi di hosting continuano ad utilizzarlo ancora oggi.
Apache quindi si occupa di controllare ciò che accade dietro le quinte nella comunicazione tra il server e client e nello specifico di servire e gestire i file in esso contenuti.
Nel web i client (browsers) utilizzano il protocollo HTTP per comunicare con i server.
Questo protocollo serve a regolare:
Il protocollo HTTP contiene diversi metodi di richiesta.
Tra i più comuni e più utilizzati nell'ambito dello sviluppo web abbiamo: GET, POST e HEAD.
Questo metodo per inviare una richiesta, esiste dagli inizi del World Wide Web e svolge la funzione di richiedere una risorsa, come ad esempio un file HTML ad un server.
Digitando l’URL www.example.com nella barra di ricerca del vostro browser, questi si mette in collegamento con il server web e gli invia una richiesta di tipo GET:
GET /index.php
Questo è possibile perché il software Apache, gestore delle richieste al server, sa che, alla digitazione di un preciso domino dovrà recarsi in una determinata root e restituire il primo file rinominato index.html/index.php ecc.
Possiamo quindi intuire che la richiesta GET dell'esempio qui sopra è intrinseca alla digitazione del dominio.
Alla richiesta GET possono essere allegate, in coda, sotto forma di "Query String", informazioni aggiuntive da far elaborare al server.
Le "Query String" seguono una particolare sintassi:
| ? | La stringa della query si apre con un “?” |
| nome=valore | Ogni parametro passato nella richiesta viene indicato sotto forma di coppia nome=valore |
| & | In caso di più parametri essi sono uniti tra loro con "&" |
GET /search?platform=Windows&category=office
Le QueyString sono molto utilizzate nella programmazione Back-end e nei linguaggi come PHP ecc.
Molti caratteri speciali possono avere un significato specifico motivo per il quale prima di essere passati al server devono essere codificati.
GET/search?thema=che%20cos%E2%80%99%C3%A8%20HTTP
I linguaggi di programmazione come Javascript e php hanno metodi specifici per la codifica e decodifica delle QueryString.
POST è un alternativa a GET e rappresenta sempre un metodo per inviare una richiesta al server.
Nel caso in cui le informazioni da inviare siano più impegnative e/o con carattere di riservatezza, dovremmo utilizzare il metodo POST.
A differenza del metodo GET, le cui informazioni sono passate tramite URL e quindi visibili alla totalità del pubblico, il metodo POST "contiene" tali informazioni nell' header HTTP.
Gli headers HTTP non sono altro che l'insieme delle informazioni prodotte dall'interazione tra il browser del client, che invia delle richieste, ed il server, che le raccoglie e invia delle risorse in risposta ad esse.
Alcuni esempi di informazioni contenute in un header HTTP:
Esistono due tipi di HeaderHTTP.
Uno per le richieste ed uno per le risposte:
| Request Header HTTP | informazioni relative e contenute nella richieste al server |
| Response Header HTTP | informazioni relative e contenute nella risposta dal server |
Il metodo HEAD serve a richiedere l’header di risposta, o Response Header, senza però che il file venga inviato immediatamente in risposta. Questo torna particolarmente utile e sensato, nel caso in cui a essere trasmessi siano file di grandi dimensioni. Grazie alla richiesta HEAD il client riceve per prima cosa l’informazione sulle dimensioni del file, così da poter decidere se ricevere il file oppure no.
Approfondimenti e risorse sul web
https://www.ionos.it/digitalguide/hosting/tecniche-hosting/richiesta-http/
Un server, computer di rete, è un dispositivo con al suo interno un programma (es. Apache) che gestisce ed elabora le richieste da parte di un client.
Nel World Wide Web , ad esempio, un server web è un computer, remoto e collegato in rete, che utilizza il protocollo HTTP per inviare pagine web ad un altro computer, detto client, quando richieste.
Sebbene esista una grande complessità alla base del funzionamento di un server web, il lavoro di base di tutti i server web è quello di accettare richieste dai client e inviare la risposta a tale richiesta.
Il server web Apache dispone di moduli che aggiungono ulteriori funzioni al software, come MPM (la gestione di modalità multi-processing) o mod_ssl per abilitare il supporto SSL v3 e TLS.
Alcune caratteristiche comuni di Apache comprendono:
Un server ad esempio è in grado di interpretare il codice PHP delle nostre pagine web perché il server ha al suo interno un modulo/estensione aggiuntiva in gradi di effettuare l'interpretazione di tale codice.
In buona sostanza all'interno di un server Apache è installato un'engine machine che si occupa di elaborare tali istruzioni.

XAMPP è una distribuzione Apache gratuita multipiattaforma per creare un server web in locale.
XAMPP è composto da Apache HTTP Server, MySQL (o MariaDB), PHP e Perl.
La X all'inizio sta ad indicare che è multipiattaforma ed è infatti compatibile con i sistemi operativi Windows, Linux, Mac e Solaris.
XAMPP viene utilizzato per creare un web hosting in locale, sul proprio computer; XAMPP è una distribuzione facile da installare che premette di eseguire operazioni come eseguire codice PHP, interrogare un database ecc., operazioni che normalmente non sarebbe possibile eseguire se non su un hosting web online.
Per questo motivo è particolarmente usato per scopi di testing nella programmazione web.
Una volta installato XAMPP avremo accesso a XAMPP Control Panel.

Questo pannello di controllo ci consente di gestire/avviare i moduli di tutte le estensioni di funzionalità installate sul nostro web hosting locale.
Note: Ad ogni modifica sostanziale è opportuno stoppare i moduli/processi avviati per riavviarli nuvamente in modo da vedere effettive le modifiche effettuate.
All'interno del Control Panel troviamo:

Se scriviamo nel nostro browser nel campo degli indirizzi "locahost" questo punterà alla cartella "dashboard" della nostra installazione.
In realtà la sua root è la seguente:
C:\xampp\htdocs\dashboard

Questo è possibile in quanto durante l'installazione del software nel file host del nostro pc è stata inserita questa istruzione
127.0.0.1 localhost
127.0.0.1 è un indirizzo IP particolare che identifica il proprio computer ed è quello che viene definito localhost. Attraverso questo indirizzo il computer, all'interno di una rete, può contattare se stesso attraverso un client.

localhost è quindi un alias di 127.0.0.1
Se proviamo ad associare nel file host del nostro pc l' IP 127.0.0.1 identificativo del nostro computer ad un qualsiasi dominio questo punterà sempre alla cartella /dashboard/ di xampp, ovvero al suo pannello di controllo.
Questo perchè è Apache che alla richiesta di tale IP sa che dovrà sempre mostrare questa "pagina".
127.0.0.1 www.sitoprova.it
La cartella "htdocs" funge come la cartella "public_html" su un web hosting online.
Potremmo quindi creare nuove cartelle, al suo interno, per l'installazione di siti interni raggiungibili mediante l'url:
localhost/cartellasito/
Un alternativa alla creazione di cartelle del tipo "localhost/cartellasito/" è utilizzare i "Vistual Host".
Attraverso i Virtual Host è possibile suddividere un server in più host,
il che significa ospitare più siti sulla stessa macchina.
E' esattamente quello che avviene anche sui servizi di hosting online scegliamo se acquistare un hosting con server-condiviso o un hosting con server-dedicato.
Un server-condiviso ospita più siti e quindi più virtual-host.
Un server-dedicato ospita un singolo sito non ha quindi virtual-host.
Per utilizzare questa funzionalità dovremo prima effettuare delle operazioni:
Per abilitare i Virtual Host dovremo individuare il seguente file:
C:\xampp\apache\conf\httpd.conf
All'interno del file dobbiamo ricercare la seguente direttiva:
# Virtual hosts Include conf/extra/httpd-vhosts.conf
Dobbiamo verificare l'assenza o rimuovere il "#" davanti "Include conf/extra/httpd-vhosts.conf"
Allo stesso modo, sempre nello stesso file, dobbiamo verificare che il modulo mod_rewrite sia abilitato
LoadModule rewrite_module modules/mod_rewrite.so
Ricerchiamo questa volta il file:
C:\xampp\apache\conf\extra\httpd-vhosts.conf
All'interno del file avremo già degli esempi disabilitati

Possiamo utilizzare uno degli esempi per impostare un nuovo VHost
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/luxampp"
ServerName luxampp.com
ServerAlias www.luxampp.com
</VirtualHost>
Per il nostro scopo de-commenteremo solo i tag di apertura e chiusura <VirtualHost> e le istruzioni "DocumentRoot" e "ServerName".
I tag di apertura e chiusura "<VirtualHost>" indicano la creazione di un nuovo VHOST. All'interno del tag di apertura indichiamo l'IP e la porta da cui accettare la richiesta. Quindi, stiamo dicendo di accettare solo le richieste che provengono dall' IP della nostra macchina locale (con "*:80" avremmo indicato di accettare le richieste da qualunque IP);
La porta è definita all'interno del XAMPP Controll Panel:

ServerName indicano il nome del server (dominio)
DocumentRoot indica il percorso di dove è posizionato il contenuto del nostro sito.

Infine dobbiamo modificare il file host del nostro pc presente al seguente percorso:
C:\Windows\System32\drivers\etc\hosts
Aggiungiamo una nuova istruzione dopo tutte le righe
127.0.0.1 www.luxampp.it luxampp.it
Stiamo cosi indicando che quando viene effettuata una richiesta a "luxampp.it" deve risolvere questa richiesta nell'indirizzo IP 127.0.0.1
Note: le modifiche al file host devono essere effettuate con i permessi di Amministratore.
Risorse sul web