Se Apache ti è sempre sembrato una scatola nera, è ora di imparare cosa sta succedendo dietro le quinte!
Apache è il server web più popolare disponibile.
Il lavoro di un server web consiste essenzialmente nell'accettare richieste dai clienti e inviare risposte a tali richieste. Un server Web ottiene un URL, lo traduce in un nome file (per richieste statiche) e lo rimanda su Internet dal disco locale, o lo traduce in un nome di programma (per richieste dinamiche), lo esegue e quindi invia l'output di quel programma su Internet alla parte richiedente. Se per qualsiasi motivo, il server Web non è stato in grado di elaborare e completare la richiesta, restituisce invece un messaggio di errore. La parola, web server, può riferirsi alla macchina (computer / hardware) stessa o al software che riceve richieste e invia risposte.
Apache è il server web più popolare (dopo di che arriva Microsoft IIS) disponibile. Le ragioni della sua popolarità, per citarne alcuni, sono:
Funzionalità che non è necessario o che si desidera può essere facilmente rimosso.
Il server Apache HTTP è un software (o programma) che viene eseguito in background con un sistema operativo appropriato, che supporta il multitasking e fornisce servizi ad altre applicazioni che si collegano ad esso, come i browser Web client. È stato inizialmente sviluppato per funzionare con i sistemi operativi Linux / Unix, ma in seguito è stato adattato per funzionare con altri sistemi, inclusi Windows e Mac. Viene chiamato il binario Apache in esecuzione su UNIX HTTPd (abbreviazione di daemon HTTP), e in Win32 viene chiamato apache.exe.
Installare Apache su Linux richiede un po 'di abilità di programmazione (anche se non è troppo difficile). L'installazione su una piattaforma Windows è semplice, in quanto è possibile eseguirla tramite un'interfaccia utente grafica.
Il nucleo originale di Apache è piuttosto semplice e contiene un numero limitato di funzioni. Il suo potere deriva piuttosto dalle funzionalità aggiunte introdotte attraverso molti moduli che sono scritti da programmatori e possono essere installati per estendere le capacità del server. Per aggiungere un nuovo modulo, tutto ciò che devi fare è installarlo e riavviare il server Apache. Funzionalità che non è necessario o che si desidera rimuovere facilmente può essere considerata una buona pratica in quanto mantiene il server piccolo e leggero, si avvia più rapidamente, consuma meno risorse di sistema e memoria e rende il server meno soggetto a falle nella sicurezza. Il server Apache supporta anche moduli di terze parti, alcuni dei quali sono stati aggiunti ad Apache 2 come funzionalità permanenti. Il server Apache si integra molto facilmente con altre applicazioni open source, come PHP e MySQL, rendendolo ancora più potente di quanto non sia già.
Un server Web nella sua forma più semplice è un computer con un software speciale e una connessione Internet che consente di collegarsi ad altri dispositivi.
Ogni dispositivo connesso a una rete ha un indirizzo IP attraverso il quale gli altri si connettono e comunicano con esso. Questo indirizzo IP è un po 'come un normale indirizzo di cui hai bisogno nella vita reale per chiamare o visitare qualsiasi tuo contatto. Se non avessero un indirizzo, non sapresti come chiamarli o raggiungerli. Gli indirizzi IP hanno lo stesso identico scopo. Se un dispositivo non ne aveva uno, le altre macchine sulla stessa rete non saprebbero come raggiungerlo.
Il server Apache offre un numero di servizi che i clienti potrebbero utilizzare. Questi servizi vengono offerti utilizzando vari protocolli attraverso diverse porte e includono: protocollo di trasferimento ipertestuale (HTTP), in genere tramite la porta 80, semplice protocollo di trasferimento della posta (SMTP), in genere attraverso la porta 25, Domain Name Service (DNS) per mappare i nomi di dominio in i loro corrispondenti indirizzi IP, genearlly attraverso la porta 53, e il protocollo di trasferimento file (FTP) per il caricamento e il download di file, solitamente tramite la porta 21.
Il ruolo principale di Apache riguarda la comunicazione sulle reti e utilizza il protocollo TCP / IP (Transmission Control Protocol / Internet Protocol che consente ai dispositivi con indirizzi IP all'interno della stessa rete di comunicare tra loro).
Il protocollo TCP / IP è un insieme di regole che definiscono il modo in cui i client eseguono le richieste e il modo in cui i server rispondono e determinano il modo in cui i dati vengono trasmessi, consegnati, ricevuti e riconosciuti.
Il server Apache è configurato per l'esecuzione di file di configurazione, in cui vengono aggiunte le direttive per controllarne il comportamento. In stato di inattività, Apache ascolta gli indirizzi IP identificati nel suo file di configurazione (HTTPd.conf). Ogni volta che riceve una richiesta, analizza le intestazioni, applica le regole specificate per essa nel file di configurazione e agisce.
Ma un server può ospitare molti siti Web, non solo uno, anche se, al mondo esterno, sembrano separati gli uni dagli altri. Per raggiungere questo obiettivo, a ciascuno di questi siti Web deve essere assegnato un nome diverso, anche se tutti quelli mappano alla fine sulla stessa macchina. Questo si ottiene usando ciò che è noto come host virtuale.
Dal momento che gli indirizzi IP sono difficili da ricordare, noi, come visitatori di siti specifici, di solito digitiamo i rispettivi nomi di dominio nella casella dell'indirizzo URL sul nostro browser. Il browser si collega quindi a un server DNS, che traduce i nomi di dominio nei loro indirizzi IP. Il browser prende quindi l'indirizzo IP restituito e si connette ad esso. Il browser invia anche a Ospite intestazione con la richiesta in modo che, se il server ospita più siti, saprà quale servire.
Ad esempio, digitando www.google.com nel campo dell'indirizzo del tuo browser potresti inviare la seguente richiesta al server a quell'indirizzo IP:
Host GET / HTTP / 1.1: www.google.com
La prima riga contiene diverse informazioni. Primo, c'è il metodo (in questo caso è un GET), l'URI, che specifica quale pagina deve essere recuperata o quale programma da eseguire (in questo caso è la directory radice indicata da /), e infine c'è il Versione HTTP (che in questo caso è HTTP 1.1).
HTTP è un protocollo stateless di richiesta / risposta.
HTTP è un protocollo stateless di richiesta / risposta. È un insieme di regole che regolano la comunicazione tra un client e il server. Il client (di solito, ma non necessariamente un browser Web) effettua una richiesta, il server restituisce una risposta e la comunicazione si interrompe. Il server non attende ulteriori comunicazioni, come nel caso di altri protocolli che rimangono in attesa dopo che la richiesta è scaduta.
Se la richiesta ha esito positivo, il server restituisce un 200 codice di stato (che indica che la pagina è stata trovata), le intestazioni di risposta, insieme ai dati richiesti. L'intestazione di risposta di un server Apache potrebbe essere simile alla seguente:
HTTP / 1.1 200 OK Data: dom, 10 giu 2012 19:19:21 GMT Server: Apache scade: mercoledì 11 gennaio 1984 05:00:00 GMT Cache-Control: no-cache, must-revalidate, max-age = 0 Pragma: no-cache Last-Modified: dom, 10 giu 2012 19:19:21 GMT Vary: Accept-Encoding, User-Agent Content-Type: text / html; charset = UTF-8 Content-Length: 7560
La prima riga nell'intestazione della risposta è la riga di stato. Contiene la versione HTTP e il codice di stato. Seguirà la data successiva e quindi alcune informazioni sul server host e sui dati recuperati. Il Tipo di contenuto
intestazione consente al client di conoscere il tipo di dati recuperati in modo che sappia come gestirlo. Content-Length
consente al client di conoscere la dimensione del corpo della risposta. Se la richiesta non è andata a buon fine, il client riceve un codice di errore e un messaggio, come la seguente intestazione di risposta in caso di errore di pagina non trovata:
HTTP / 1.1 404 non trovato
TCP / IP è in realtà due protocolli costruiti uno sull'altro.
TCP / IP è in realtà due protocolli costruiti uno sull'altro. Il protocollo IP è responsabile del trasferimento dei dati da un punto a un altro. Prende i dati da trasferire tra i due punti, li divide in pacchetti più piccoli, collega gli indirizzi di origine e destinazione a ciascun pacchetto e trasferisce i dati.
TCP gestisce la parte che include stabilire la connessione tra le due parti, assicurandosi che i dati arrivino a destinazione, curando qualsiasi perdita di dati e gestendo il recupero dei dati.
Una volta ricevuto un messaggio, la parte di destinazione invia un Riconosciuto (ACK) messaggio all'host di invio se tutto va bene, notificando l'arrivo dei dati. Se qualcosa va storto, come il verificarsi di una situazione di perdita di dati, la destinazione invia invece un messaggio NAK (Not Acknowledged), notificando l'host mittente del problema e informandolo della necessità di inviare nuovamente il pacchetto di dati.
Come discusso in precedenza, Apache offre molti servizi, ai quali i clienti potrebbero voler connettersi, utilizzare o beneficiare. TCP gestisce ciascun servizio in modo che sia accessibile attraverso una particolare porta per distinguere tra i vari servizi. In questo modo, garantisce che ogni singola interfaccia (o host) possa offrire più servizi. Quindi, quando un client si connette a un host, passa il numero di porta insieme all'indirizzo IP. I browser utilizzano il protocollo HTTP che per impostazione predefinita utilizza la porta 80, quindi non c'è bisogno di ulteriori specifiche.
L'immagine seguente è una foto istantanea del mio software FTP (WinScp). Come puoi vedere, per FTP il mio server non solo devo fornire l'indirizzo IP (o in alternativa digitare il nome del dominio), ma devo anche specificare il numero di porta che il mio server fornisce attraverso il servizio. Nel caso di FTP, il numero di porta è 21. Nel caso di SFTP (FTP sicuro), il numero di porta è 22.
Sotto UNIX, un elenco di servizi offerti con i loro rispettivi numeri di porta può essere trovato nel file / etc / services. Il seguente comando mostrerà il contenuto del file:
più / etc / servizi
Di seguito è uno screenshot che mostra una parte del file. Come puoi vedere, i servizi sono elencati nella prima colonna, seguiti dal numero di porta a cui accedere e dal nome del protocollo utilizzato dal servizio.
Sotto Windows il file si chiama Servizi e può essere trovato in C: \ WINNT \ system32 \ drivers \ etc \
Per preservare le risorse di sistema, UNIX gestisce molti dei suoi servizi tramite il demone Internet.
Per preservare le risorse di sistema, UNIX gestisce molti dei suoi servizi attraverso il demone internet (inetd), al contrario di un demone in esecuzione costante. Il inetd è un super server che ascolta le varie porte e gestisce le richieste di connessione mentre le riceve iniziando una nuova copia del daemon appropriato (programma). La nuova copia del programma quindi prende da lì e lavora con il client, e INTED torna ad ascoltare le porte del server in attesa di nuove richieste client da gestire. Una volta che la richiesta è stata elaborata e la comunicazione è finita, il demone si chiude.
Come accennato in precedenza, Apache può essere installato su una varietà di sistemi operativi. Indipendentemente dalla piattaforma utilizzata, un sito Web ospitato avrà in genere quattro directory principali: htdocs, conf, logs, cgi-bin.
htdocs è la directory predefinita dei documenti del server Web Apache, ovvero è la directory pubblica i cui contenuti sono solitamente disponibili per i client che si connettono attraverso il web. Contiene tutte le pagine statiche e il contenuto dinamico da offrire una volta ricevuta una richiesta HTTP per loro. Poiché i file e le sottodirectory in htdocs sono disponibili al pubblico, la corretta gestione delle autorizzazioni dei file è di grande importanza per non compromettere la sicurezza e la sicurezza del server.
conf è la directory in cui si trovano tutti i file di configurazione del server. I file di configurazione sono fondamentalmente semplici file di testo in cui vengono aggiunte le direttive per controllare il comportamento e le funzionalità del server web. In genere, ogni direttiva viene posizionata su una riga separata e il tasto cancelletto (#) indica un commento, in modo che la linea da essa seguita venga ignorata.
logs è la directory in cui sono conservati i registri del server e include i log di accesso Apache e i log degli errori. Apache HTTP Server offre una varietà di diversi meccanismi per registrare tutto ciò che accade su di esso, dalla richiesta iniziale, attraverso il processo di mappatura degli URL, alla risoluzione finale della connessione, inclusi eventuali errori che possono essersi verificati nel processo. Oltre a questo, i moduli di terze parti possono fornire funzionalità di registrazione o iniettare voci nei file di registro esistenti e applicazioni come script PHP o altri gestori possono inviare messaggi al log degli errori del server.
cgi-bin è la directory in cui vengono mantenuti gli script CGI. La CGI (Common Gateway Interface) definisce un modo per un server web di interagire con programmi che generano contenuti esterni, che vengono spesso definiti programmi CGI o script CGI. Questi sono programmi o script di shell scritti per essere eseguiti da Apache per conto dei suoi clienti.
È importante notare che i nomi dei file e delle directory sopra discussi (così come le posizioni) possono differire da un server all'altro a seconda dell'odore di Apache installato e del sistema operativo in cui viene eseguito. I ruoli però rimangono gli stessi.
... con oltre la metà dei siti sul web in esecuzione su di esso.
Apache è stato il server web più popolare su Internet dal 1996, con oltre la metà dei siti sul web in esecuzione su di esso. Ha giocato un ruolo chiave nel plasmare e rendere il World Wide Web quello che è oggi. Le ragioni del suo successo sono ovvie e il modo in cui stanno le cose, probabilmente rimarrà in testa almeno per un po 'di tempo. Questo era pensato per essere una sessione introduttiva a questo potente software e spero sia stato di aiuto per capire che cos'è questo grande strumento e come funziona in generale.