Configurazione di base di Apache 2 su sistemi Unix-like

In un post precedente, abbiamo dato un'occhiata al server Apache HTTP, di cosa si tratta e come funziona. Oggi gestiremo alcune delle più importanti direttive di configurazione di Apache, guarderemo a cosa servono e impareremo come modificarle, al fine di modellare il modo in cui il nostro server funziona secondo i nostri gusti.

Il server Apache è un servizio che viene eseguito in background, in attesa di richieste da parte dei client che si collegano alle porte che ascolta, al fine di agire. Apache risponde a tali richieste o lascia le note correlate nei suoi file di registro. Il suo comportamento è controllato attraverso la sua configurazione, usando le cosiddette direttive (tra le altre cose). Discuteremo le direttive più elementari in questo articolo.


Nome del server

Il Nome del server direttiva viene utilizzata per impostare il nome host del server; questo è il modo in cui il server si identifica. Usa questo nome quando risponde alle richieste HTTP. È possibile impostare questa direttiva nella configurazione del server o negli host virtuali. La posizione dei file di configurazione dipende sia dalla versione di Apache che dalla distribuzione di Linux.

 ServerAdmin webmaster @ localhost DocumentRoot / var / www ServerName www.example-site.com ... 

Apache ha un gran numero di direttive che puoi impostare e manipolare per impostare il comportamento del tuo server.

Se la Nome del server la direttiva non è specificata, il server tenta di ottenerlo eseguendo una ricerca DNS inversa sul suo indirizzo IP. Dovresti sempre impostare un Nome del server per il server esplicitamente; è l'unico valore che devi impostare per far funzionare il tuo server dopo l'installazione.

Dovrai utilizzare l'indirizzo IP della tua macchina se non hai ancora un nome di dominio registrato. Altrimenti, sarà necessario aggiungere il nome di dominio e l'indirizzo IP al server padroni di casa file - lo stesso del file host del PC. In questo modo, il server controlla il file hosts prima di consultare il server DNS. Aggiungo personalmente il mio indirizzo IP / la voce del nome di dominio al file degli host Apache per ridurre al minimo il tempo di risposta del server salvando una chiamata al server DNS.

Supponendo che il nostro nome di dominio sia www.example-site.com e l'indirizzo IP del nostro server è 50.57.77.153, è necessario aggiungere la seguente riga al file hosts del server (/ etc / hosts):

50.57.77.153 www.example-site.com example-site.com

Dopo aver modificato il file hosts, è necessario riavviare (o arrestare e avviare) Apache. Ti mostrerò come farlo più tardi.


Ascolta

Il Ascolta direttiva dice ad Apache quali indirizzi IP e / o porte dovrebbero ascoltare per le richieste in arrivo. Se non viene specificato nulla, Apache ascolta tutti gli indirizzi e le porte sulla macchina. La configurazione predefinita imposta il server in ascolto sulla porta 80, la porta predefinita per le comunicazioni HTTP.

Se si specifica solo un indirizzo IP, il server risponderà alle richieste provenienti da tutte le porte di quell'indirizzo (chiamato anche interfaccia). Se viene specificato solo un numero di porta, Apache risponde alle richieste sulla porta specificata che arriva a tutte le interfacce sulla macchina. Se viene fornito un indirizzo e una combinazione di porte, Apache risponde solo a quelle specifiche interfacce / combinazioni di porte.

Se l'installazione del server ha file di configurazione separati, dovresti riuscire a trovare o impostare questa direttiva nel file ports.conf file.

Puoi trovare questo file nella stessa posizione dei tuoi file di configurazione di Apache (il mio è /etc/apache2/ports.conf, ma potrebbe essere diverso per altre versioni di Apache e / o distribuzioni Linux).

Supponiamo che il nostro sito di esempio sia all'indirizzo IP 50.57.77.153. Per impostare Apache in modo che ascolti le porte 80 e 443, le rispettive porte predefinite per HTTP e HTTPS, devi inserire le seguenti direttive nel tuo ports.conf file:

Ascolta 50.57.77.153:80 Ascolta 50.57.77.153:443

In alternativa, se si desidera che Apache ascolti le porte 80 e 443 su tutte le interfacce indipendentemente dall'indirizzo IP, è possibile immettere quanto segue:

Ascolta 80 Ascolta 443

Utente Web e gruppo

Sui sistemi operativi Unix, è una buona idea configurare Apache per l'esecuzione su un utente e un gruppo specifici anziché su root. Ciò rende il server più sicuro e meno vulnerabile agli attacchi. Idealmente, l'utente e il gruppo che hai impostato non dovrebbero essere in grado di accedere al server (cioè: non hanno credenziali di accesso) e nessuna shell di login; saranno utilizzati solo per la gestione delle richieste dei client Web. Impostare la directory home dell'utente Apache nella directory dei documenti del server Web, generalmente ubicata in / Var / www o / Usr / local / apache2 / htdocs.

groupadd anyUserName useradd -d / var / www -g anyUserName -s / bin / false

L'esempio sopra utilizza anyUserName come nostro utente e gruppo web; basta usare un nome non riservato ad altri processi. -d / var / www imposta la directory home del nuovo account su / Var / www, e -s / bin / false assicura che il nuovo account non abbia accesso alla shell. Successivamente, è necessario modificare il file di configurazione per utilizzare il nuovo utente e gruppo Apache. Se il tuo dice:

Utente $ APACHE_RUN_USER Gruppo $ APACHE_RUN_GROUP

Quindi è necessario trovare dove sono definite queste variabili e modificare i loro valori. Di solito, la direttiva sopra è preceduta da un commento che ti consente di sapere esattamente dove impostare i nuovi valori. Altrimenti, dovrai semplicemente inserire il nuovo nome utente e gruppo al posto del vecchio. Quindi le tue linee di configurazione finali potrebbero assomigliare a questo:

Utente anyUserName Group anyUserName

ServerRoot

Il comportamento di Apache è controllato attraverso la sua configurazione.

I file importanti di Apache, come la configurazione del server, l'errore e i file di registro sono mantenuti nella parte superiore dell'albero delle directory. Questa posizione è la ServerRoot, ed è possibile impostare un valore diverso nel file di configurazione principale di Apache. A seconda dell'installazione, l'impostazione predefinita può essere qualcosa di simile / Usr / local / apache2 o / Etc / apache2. Per impostazione predefinita, qualsiasi direttiva Apache che utilizza un percorso relativo verrà aggiunta al percorso root specificato in ServerRoot.

Quando si installa il server per la prima volta, i file di configurazione e di registro si trovano nel ServerRoot. Puoi cambiare il suo valore in una nuova directory, ma assicurati di copiare i file di configurazione nella nuova posizione. Inoltre, assicurati di non aggiungere una barra finale al percorso quando modifichi il valore.


ErrorLog

Quando si verifica un errore, Apache registra l'errore in un file di registro. La posizione del log degli errori è determinata dal valore specificato utilizzando il ErrorLog direttiva. Questo file è fondamentale perché farà riferimento ad esso per eseguire il debug degli errori, risolvere i problemi di configurazione del server e ottimizzare il server.

Se il server ospita più siti e si desidera disporre di log di errori separati per ciascun sito, è possibile specificare un file e un percorso diversi per ciascun sito nel file degli host virtuali.

In caso contrario, gli errori di tutti i siti vengono registrati nel registro degli errori predefinito, in genere situato in / Usr / local / apache2 / logs / error_log o /var/log/apache2/error.log (ancora una volta, a seconda dell'installazione).

Si prega di notare che i percorsi di log sopra sono assoluti. Ad esempio, si consideri la seguente direttiva:

ErrorLog logs / error_log

Questo è un percorso relativo. Pertanto, la posizione del registro degli errori effettiva è $ ServerRoot / logs / error_log.

Il Loglevel direttiva controlla il livello dei messaggi registrati nei log degli errori. Per impostazione predefinita, è impostato su avvisare, significa che tutti i messaggi con il valore di avvertimento e superiore (come in più critico) verrà registrato. È possibile modificare il valore di questa direttiva per regolare il livello di registrazione in base alle proprie preferenze.


DocumentRoot

Il DocumentRoot direttiva imposta la posizione dei file pubblici del server, aka htdocs. Questa è la directory predefinita del documento del server Web Apache e il suo contenuto è prontamente e pubblicamente disponibile per i client che si connettono attraverso il web. Contiene il contenuto statico e dinamico da offrire una volta che il server riceve una richiesta HTTP per loro. Poiché i file e le sottodirectory sotto htdocs sono disponibili per il pubblico, è molto importante gestire le autorizzazioni correttamente al fine di ridurre al minimo la possibilità di compromettere la sicurezza e la sicurezza del server.

A seconda dell'installazione, l'impostazione predefinita DocumentRoot la posizione potrebbe essere qualcosa di simile / Var / www o / Usr / local / apache2 / htdocs.

Se si ospitano più siti Web sullo stesso server, è necessario impostare un altro DocumentRoot per ogni sito. Questo può essere fatto all'interno del rispettivo VirtualHost direttiva che corrisponde a ciascun sito. Supponiamo che tu abbia tre siti Web sullo stesso server (ad esempio: www.example-site1.com, www.example-site2.com, www.example-site3.com), il tuo file host virtuale potrebbe essere simile al seguente:

 DocumentRoot / usr / local / apache2 / htdocs / example_site1 ServerName www.example-site1.com ...   DocumentRoot / usr / local / apache2 / htdocs / example_site2 ServerName www.example-site2.com ...   DocumentRoot / usr / local / apache2 / htdocs / example_site3 ServerName www.example-site3.com ... 

Per impostare un log degli errori separato per ciascuno di questi domini, che è una buona idea, allora il tuo file degli host virtuali potrebbe assomigliare a questo:

 DocumentRoot / usr / local / apache2 / htdocs / example_site1 ServerName www.example-site1.com ErrorLog / usr / local / apache2 / logs / site1_error_log ...   DocumentRoot / usr / local / apache2 / htdocs / example_site2 ServerName www.example-site2.com ErrorLog / usr / local / apache2 / logs / site2_error_log ...   DocumentRoot / usr / local / apache2 / htdocs / example_site3 ServerName www.example-site3.com ErrorLog / usr / local / apache2 / logs / site3_error_log ... 

PidFile

La direttiva ServerName viene utilizzata per impostare il nome host del server; questo è il modo in cui il server si identifica.

Il servizio Apache viene avviato come root per collegarsi alla porta 80 privilegiata per HTTP (o 443 se si utilizza SSL) poiché i numeri di porta inferiori a 1024 sono riservati solo all'utente root. Dopo l'esecuzione iniziale, i figli elaborano spawn per gestire le richieste client che sono di proprietà dell'utente Apache specificato nel file di configurazione. Per questo motivo, troverai un processo root e più processi appartenenti all'utente web; questo processo di root è il primo avviato all'avvio di Apache. Ha un ID di processo e questo ID è memorizzato nel file Pid sul server. È possibile controllare la posizione del file Pid utilizzando il PidFile direttiva nel file di configurazione.

Se apri il file specificato in PidFile direttiva, troverete un numero che corrisponde all'ID del processo genitore. Puoi fermare il server Apache uccidendo il processo usando il suo numero ID. Tuttavia, uccidere il processo solo come ultima risorsa. Discuteremo il modo preferito per fermare Apache tra un momento.


Inclusione di file

È possibile separare la configurazione e le impostazioni del server in più file; in effetti, alcune installazioni di Apache lo fanno davvero. Questi file multipli possono quindi essere inclusi nel file di configurazione del server originale. Questo approccio è ideale per mantenere il file di configurazione chiaro e chiaro, ma ti costringe anche a cercare all'interno di più file che risiedono in posizioni diverse per capire completamente come è configurato Apache. In ogni caso, di seguito è riportata la sintassi per includere i file di configurazione esterni. Spetta a te decidere se utilizzare o meno l'inclusione dei file:

# Include l'elenco delle porte: Includi /etc/apache2/ports.conf # Include snippet di istruzioni generici Includi /etc/apache2/conf.d/ # Include la configurazione del modulo: Includi /etc/apache2/mods-enabled/*.load Include / etc / apache2 / mods-enabled / *. conf

Come puoi vedere dagli esempi sopra, puoi includere un file specifico per nome, una directory (e quindi tutti i file in essa contenuti) o più file usando i caratteri jolly.


Avvia, ferma e riavvia Apache

Ogni volta che si modifica uno dei file di configurazione di Apache, è necessario riavviare (o arrestare e avviare) il servizio in modo che Apache possa caricare la nuova configurazione. In caso contrario, le modifiche rimarranno sul file per il prossimo riavvio o l'avvio del server. Se le modifiche causano errori di sintassi nei file di configurazione, il riavvio mostrerà messaggi di errore relativi a tali errori. Inoltre, il server Web Apache non verrà avviato fino a quando non si correggeranno tali errori.

Per arrestare il server Apache, digitare il seguente comando nella console:

/etc/init.d/apache2 stop

Per avviare il server Apache, digitare il seguente comando:

/etc/init.d/apache2 start

Per riavviare il server Apache, digitare il seguente comando:

/etc/init.d/apache2 restart

Naturalmente, per poter eseguire questi comandi è necessario aver effettuato l'accesso con un utente privilegiato. Tuttavia, potresti comunque eseguire i suddetti comandi aggiungendo sudo prima di ogni riga. Questo in pratica dice al sistema che stai eseguendo il comando come superutente (da qui il nome, sudo), nel qual caso il sistema ti chiede di inserire una password prima di eseguire il comando. Se non conosci questa password, chiedi al tuo amministratore del server. Precedendo i comandi precedenti con sudo:

sudo /etc/init.d/apache2 stop sudo /etc/init.d/apache2 start sudo /etc/init.d/apache2 restart

Conclusione

Apache ha un gran numero di direttive, che puoi impostare e manipolare per impostare il comportamento del tuo server. Questo è responsabile della flessibilità e del potere di Apache.

Ogni amministratore del server spesso modifica alcune direttive, lasciando gli altri completamente soli; tutto dipende dalle loro particolari esigenze. In generale, tuttavia, le direttive discusse in questo articolo sono tra le più importanti. È probabile che ogni persona che lavora con il server Apache incontrerà queste direttive. Capire cosa sono e quale scopo servono è fondamentale per avere un web server funzionante e stabile.