Che cos’è Apache?
Apache è il server web più popolare su Internet. Viene utilizzato per servire più della metà di tutti i siti Web attivi.
Sebbene ci siano molti server web validi che serviranno i tuoi contenuti, è utile capire come funziona Apache a causa della sua ubiquità.
In questo articolo, esamineremo alcuni file di configurazione generali e le opzioni che possono essere controllati al loro interno., Questo articolo seguirà il layout di Ubuntu / Debian dei file Apache, che è diverso da come altre distribuzioni costruiscono la gerarchia di configurazione.
Come installare Apache su Ubuntu e Debian
Se non hai già installato Apache, puoi farlo ora emettendo i seguenti comandi:
sudo apt-get updatesudo apt-get install apache2
Questo è tutto ciò che è necessario per avere un server web funzionante., Se si visita il tuo VPS indirizzo IP in un browser web, si otterrà il default di Apache pagina di indice:
your_domain_name_or_ip_address
It works!This is the default web page for this server.The web server software is running but no content has been added, yet.
Apache Gerarchia di File in Ubuntu e Debian
Su Ubuntu e Debian, Apache mantiene la sua principale file di configurazione all’interno del file “/etc/apache2” cartella:
cd /etc/apache2ls -F
apache2.conf envvars magic mods-enabled/ sites-available/conf.d/ httpd.conf mods-available/ ports.conf sites-enabled/
Ci sono un certo numero di file di testo e alcune sotto-cartelle in questa directory. Queste sono alcune delle posizioni più utili con cui avere familiarità:
- apache2.,conf: Questo è il file di configurazione principale per il server. Quasi tutta la configurazione può essere eseguita all’interno di questo file, anche se si consiglia di utilizzare file separati e designati per semplicità. Questo file configurerà i valori predefiniti e sarà il punto di accesso centrale per il server per leggere i dettagli della configurazione.
- porte.conf: Questo file viene utilizzato per specificare le porte su cui gli host virtuali devono ascoltare. Assicurati di controllare che questo file sia corretto se stai configurando SSL.
- conf.d/: Questa directory viene utilizzata per controllare aspetti specifici della configurazione di Apache., Ad esempio, viene spesso utilizzato per definire la configurazione SSL e le scelte di sicurezza predefinite.
- sites-available/: Questa directory contiene tutti i file host virtuali che definiscono siti web diversi. Questi stabiliranno quali contenuti vengono serviti per quali richieste. Queste sono configurazioni disponibili, non configurazioni attive.
- sites-enabled/: Questa directory stabilisce quali definizioni di host virtuali vengono effettivamente utilizzate. Di solito, questa directory è costituita da collegamenti simbolici a file definiti nella directory “sites-available”.,
- mods -/: Queste directory sono simili in funzione alle directory sites, ma definiscono moduli che possono essere caricati opzionalmente.
Come puoi vedere, la configurazione di Apache non avviene in un singolo file monolitico, ma avviene invece attraverso un design modulare in cui i nuovi file possono essere aggiunti e modificati secondo necessità.
Guardando l’Apache2.file conf
I principali dettagli di configurazione per il server Apache sono contenuti in “/etc/apache2/apache2.conf ” file.,
Questo file è diviso in tre sezioni principali: configurazione per il processo globale del server Apache, configurazione per il server predefinito e configurazione degli host virtuali.
In Ubuntu e Debian, la maggior parte del file è per le definizioni globali e la configurazione del server predefinito e degli host virtuali viene gestita alla fine, utilizzando “Include …” direttiva.
La direttiva “Include” consente ad Apache di leggere altri file di configurazione nel file corrente nella posizione in cui viene visualizzata l’istruzione., Il risultato è che Apache genera dinamicamente un file di configurazione generale all’avvio.
Se si scorre fino alla fine del file, ci sono un certo numero di diverse istruzioni “Include”. Queste definizioni dei moduli di carico, le porte.documento conf, i file di configurazione specifici nel “conf.d / “e, infine, le definizioni dell’host virtuale nella directory” sites-enabled/”.
Ci concentreremo sulla prima parte del file per imparare come Apache definisce le sue impostazioni globali.,
Sezione di configurazione globale
Questa sezione viene utilizzata per configurare alcune opzioni che controllano il funzionamento di Apache nel suo complesso.
Ci sono alcune opzioni interessanti che potresti voler modificare in questa sezione:
Timeout
Per impostazione predefinita, questo parametro è impostato su “300”, il che significa che il server ha un massimo di 300 secondi per soddisfare ogni richiesta.
Questo è probabilmente troppo alto per la maggior parte dei set up e può essere tranquillamente abbassato a qualcosa tra 30 e 60 secondi.,
KeepAlive
Questa opzione, se impostata su “On”, consentirà a ciascuna connessione di rimanere aperta per gestire più richieste dallo stesso client.
Se questo è impostato su “Off”, ogni richiesta dovrà stabilire una nuova connessione, che può comportare un sovraccarico significativo a seconda della configurazione e della situazione del traffico.
MaxKeepAliveRequests
Questo controlla quante richieste separate ogni connessione gestirà prima di morire. Mantenere alto questo numero consentirà ad Apache di servire i contenuti a ciascun client in modo più efficace.,
L’impostazione di questo valore su 0 consentirà ad Apache di servire una quantità illimitata di richieste per ogni connessione.
KeepAliveTimeout
Questa impostazione specifica per quanto tempo attendere la richiesta successiva dopo aver terminato l’ultima. Se viene raggiunta la soglia di timeout, la connessione morirà.
Questo significa solo che la prossima volta che viene richiesto il contenuto, il server stabilirà una nuova connessione per gestire la richiesta per il contenuto che compone la pagina che il client sta visitando.,
Configurazione MPM
La sezione successiva specifica la configurazione delle opzioni MPM (Multi-Processing Module). Puoi fare un riferimento incrociato a quale sezione è stata compilata l’installazione di Apache uscendo dal terminale e digitando:
apache2 -l
Compiled in modules: core.c mod_log_config.c mod_logio.c prefork.c http_core.c mod_so.c
Come puoi vedere, in questo server, “prefork.c “è un modulo che è stato compilato in ed è anche in” apache2.conf ” file. L’installazione può avere più tra cui scegliere, ma solo uno può essere selezionato.
È possibile regolare la configurazione del prefork MPM nella sezione appropriata.,
Esplorazione del file host virtuale predefinito
La dichiarazione host virtuale predefinita può essere trovata in un file chiamato “default” nella directory “sites-available”.
Possiamo conoscere il formato generale di un file Host virtuale esaminando questo file. Aprire il file con il seguente comando:
sudo nano /etc/apache2/sites-available/default
L’host virtuale predefinito è configurato per gestire qualsiasi richiesta sulla porta 80, la porta http standard. Questo è definito nell’intestazione della dichiarazione in cui si dice “*:80”, che significa porta 80 su qualsiasi interfaccia.,
Ciò non significa che gestirà necessariamente ogni richiesta al server su questa porta. Apache utilizza la definizione di host virtuale più specifica che corrisponde alla richiesta. Ciò significa che se ci fosse una definizione più specifica, potrebbe sostituire questa definizione.
Configurazione di primo livello dell’host virtuale
Queste opzioni sono impostate all’interno della definizione dell’host virtuale al di fuori di qualsiasi altra sotto-dichiarazione di livello inferiore. Si applicano all’intero host virtuale.
L’opzione “ServerAdmin” specifica un’e-mail di contatto che deve essere utilizzata in caso di problemi con il server.,
Questo può essere inserito in una pagina di errore se hai “ServerSignature” impostato su “Email” in “/etc/apache2/conf.d / security”, quindi assicuratevi di essere disposti a ricevere la posta se si regola tale impostazione.
Se lo usassimo come modello per altre definizioni di host virtuali, vorremmo aggiungere una definizione “ServerName” che specifica il nome di dominio o l’indirizzo IP che questa richiesta dovrebbe gestire. Questa è l’opzione che aggiungerebbe specificità all’host virtuale, permettendogli di superare la definizione predefinita se corrisponde al valore ServerName.,
È anche possibile applicare l’host virtuale a più di un nome utilizzando la definizione “ServerAlias”. Questo fornisce percorsi alternativi per arrivare allo stesso contenuto. Un buon caso d’uso per questo è aggiungere lo stesso dominio, preceduto da “www”.
L’opzione “DocumentRoot” specifica dove si troverà il contenuto richiesto per questo host virtuale. L’host virtuale predefinito è impostato per servire il contenuto dalla directory”/var / www ” su Ubuntu.,
Definizioni di directory
All’interno della definizione di host virtuale, ci sono definizioni per come il server gestisce diverse directory all’interno del file system. Apache applicherà tutte queste direzioni in ordine dal più breve al più lungo, quindi c’è di nuovo la possibilità di ignorare le opzioni precedenti.
La prima definizione di directory applica le regole per la directory ” / ” o root. Ciò fornirà la configurazione di base per l’host virtuale, in quanto si applica a tutti i file presenti nel file system.
Per impostazione predefinita, Ubuntu non imposta alcuna restrizione di accesso al filesystem., Apache consiglia di aggiungere alcune restrizioni di accesso predefinite. Puoi modificarlo in questo modo:
<Directory />Options FollowSymLinksAllowOverride NoneOrder Deny,AllowDeny from All</Directory>
Questo negherà l’accesso a tutti i contenuti se non diversamente specificato nelle definizioni di directory successive.
La definizione di directory successiva è per la radice del documento, quindi specifica l’opzione “consenti da tutti” che sostituisce l’opzione “/” per questa directory.
L’opzione “AllowOverride” viene utilizzata per decidere se un “.il file” htaccess ” può sovrascrivere le impostazioni se viene inserito nella directory dei contenuti., Questo non è consentito per impostazione predefinita, ma può essere utile per abilitare in una varietà di circostanze.
Istruzioni Alias e ScriptAlias
Le definizioni di directory sono talvolta precedute da istruzioni “Alias” o “ScriptAlias”. Alias associa un percorso url a un percorso di directory.
ScriptAlias funziona allo stesso modo, ma viene utilizzato per definire le directory che avranno componenti eseguibili in esse.
Alias /content/ /path/to/content/
Seguendo l’alias, si dovrebbe ricordare di definire la directory con privilegi di accesso come discusso nella sezione precedente.,
Abilitazione di siti e moduli in Apache
Una volta che si dispone di un file Host virtuale che soddisfa i requisiti, è possibile utilizzare gli strumenti inclusi con Apache per la transizione in siti live.,
Per creare automaticamente un collegamento simbolico nella “sites-enabled” directory di un file esistente nella cartella “sites-available” directory, eseguire il seguente comando:
sudo a2ensite virtual_host_file_name
Dopo l’attivazione di un sito, emettere il seguente comando per dire ad Apache di rileggere il file di configurazione, che consente la variazione di propagare:
sudo service apache2 reload
C’è anche un compagno di comando per la disattivazione di un Host Virtuale., Funziona rimuovendo il collegamento simbolico dalla directory” sites-enabled”:
sudo a2dissite virtual_host_file_name
Ancora una volta, ricaricare la configurazione per effettuare la modifica:
sudo service apache2 reload
I moduli possono essere abilitati o disabilitati utilizzando rispettivamente i comandi” a2enmod “e” a2dismod”. Funzionano allo stesso modo delle versioni “site” di questi comandi.
Ricorda di ricaricare le modifiche alla configurazione dopo che i moduli sono stati abilitati o disabilitati.
Conclusione
Abbiamo esaminato alcuni file di configurazione di base di Apache., Apache è versatile e molto modulare, quindi le esigenze di configurazione saranno diverse a seconda della configurazione.
Dovresti avere una buona comprensione di ciò per cui vengono utilizzati i file di configurazione principali e di come interagiscono tra loro. Se è necessario conoscere le opzioni di configurazione specifiche, i file forniti sono ben commentati e Apache fornisce un’eccellente documentazione.
Speriamo che i file di configurazione non siano così intimidatori ora e ti senti più a tuo agio a sperimentare e modificare in base alle tue esigenze.