Come installare il server Web Apache su CentOS 7

Introduzione

Il server HTTP Apache è il server web più utilizzato al mondo. Fornisce molte potenti funzionalità, tra cui moduli caricabili dinamicamente, supporto multimediale robusto e ampia integrazione con altri software popolari.

In questa guida, verrà installato un server web Apache con host virtuali sul server CentOS 7.

Prerequisiti

È necessario quanto segue per completare questa guida:

  • Un utente non root con privilegi sudo configurati sul server, impostare seguendo la guida di installazione del server iniziale per CentOS 7.
  • Un firewall di base configurato seguendo i passaggi aggiuntivi consigliati per la nuova guida ai server CentOS 7.

Passo 1 — Installazione di Apache

Apache è disponibile nei repository software predefiniti di CentOS, il che significa che è possibile installarlo con il gestore di pacchettiyum.

Come il non-root sudo utente configurato nella prerequisiti, aggiornare il Apache httpd pacchetto indice per riflettere le ultime modifiche upstream:

  • sudo yum update httpd

una Volta che i pacchetti sono aggiornati, installare il pacchetto Apache:

  • sudo yum install httpd

Dopo la conferma dell’installazione, yum installare Apache e tutte le dipendenze richieste.

Se hai completato i passaggi aggiuntivi consigliati per la guida ai nuovi server CentOS 7 menzionati nella sezione prerequisiti, avrai installatofirewalldsul tuo server e dovrai aprire la porta80 per consentire ad Apache di servire le richieste su HTTP. Se non lo hai già fatto, puoi farlo abilitando il servizio firewalldhttp con il seguente comando:

  • sudo firewall-cmd --permanent --add-service=http

Se si intende configurare Apache per servire contenuti su HTTPS, è anche la voglia di aprire la porta 443 abilitando il https servizio:

  • sudo firewall-cmd --permanent --add-service=https

Avanti, ricaricare il firewall di mettere queste nuove regole in vigore:

  • sudo firewall-cmd --reload

Dopo che il firewall ricarica, si è pronti per avviare il servizio e controllare il web server.

Passo 2 — Controllo del server Web

Apache non si avvia automaticamente su CentOS una volta completata l’installazione. È necessario avviare il processo di Apache manualmente:

  • sudo systemctl start httpd

Verificare che il servizio è in esecuzione con il seguente comando:

  • sudo systemctl status httpd

Potete vedere un active stato quando il servizio è in esecuzione:

Output
Redirecting to /bin/systemctl status httpd.service● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2019-02-20 01:29:08 UTC; 5s ago Docs: man:httpd(8) man:apachectl(8) Main PID: 1290 (httpd) Status: "Processing requests..." CGroup: /system.slice/httpd.service ├─1290 /usr/sbin/httpd -DFOREGROUND ├─1291 /usr/sbin/httpd -DFOREGROUND ├─1292 /usr/sbin/httpd -DFOREGROUND ├─1293 /usr/sbin/httpd -DFOREGROUND ├─1294 /usr/sbin/httpd -DFOREGROUND └─1295 /usr/sbin/httpd -DFOREGROUND...

Come si può vedere da questa uscita, il servizio sembra essere stato avviato correttamente. Tuttavia, il modo migliore per testare questo è richiedere una pagina da Apache.

È possibile accedere alla pagina di destinazione predefinita di Apache per confermare che il software è in esecuzione correttamente tramite il proprio indirizzo IP. Se non si conosce l’indirizzo IP del server, è possibile ottenere un paio di modi diversi dalla riga di comando.

Digitare questo al prompt dei comandi del server:

  • hostname -I

Questo comando mostrerà tutti gli indirizzi di rete dell’host, in modo da ottenere indietro alcuni indirizzi IP separati da spazi. Puoi provare ciascuno nel tuo browser web per vedere se funzionano.

In alternativa, puoi usarecurl per richiedere il tuo IP da icanhazip.com, che ti darà il tuo indirizzo IPv4 pubblico come visto da un’altra posizione su Internet:

  • curl -4 icanhazip.com

Quando si ha l’indirizzo IP del server, inserire nella barra degli indirizzi del browser:

http://your_server_ip

potrete visualizzare per impostazione predefinita CentOS 7 Apache pagina web:

pagina di Default di Apache per CentOS 7

Questa pagina indica che Apache funziona correttamente. Include anche alcune informazioni di base su importanti file Apache e posizioni delle directory. Ora che il servizio è installato e in esecuzione, è ora possibile utilizzare diversi comandisystemctl per gestire il servizio.

Passo 3 — Gestione del processo Apache

Ora che avete il vostro server web installato e funzionante, andiamo oltre alcuni comandi di gestione di base.

Per interrompere il vostro web server, tipo:

  • sudo systemctl stop httpd

Per avviare il server web quando si è fermato, tipo:

  • sudo systemctl start httpd

Per interrompere e avviare il servizio di nuovo, tipo:

  • sudo systemctl restart httpd

Se si sta semplicemente facendo le modifiche di configurazione di Apache spesso può ricaricare senza interruzioni delle connessioni. Per fare ciò, usa questo comando:

  • sudo systemctl reload httpd

Per impostazione predefinita, Apache è configurato per l’avvio automatico all’avvio del server. Se questo non è quello che vuoi, disabilita questo comportamento digitando:

  • sudo systemctl disable httpd

Per riattivare il servizio all’avvio, digita:

  • sudo systemctl enable httpd

Apache si avvierà automaticamente all’avvio del server.

La configurazione predefinita per Apache consentirà al server di ospitare un singolo sito web. Se hai intenzione di ospitare più domini sul tuo server, dovrai configurare gli host virtuali sul tuo server Web Apache.

Passo 4 — Impostazione di host virtuali (consigliato)

Quando si utilizza il server web Apache, è possibile utilizzare host virtuali (simili a blocchi di server in Nginx) per incapsulare i dettagli di configurazione e ospitare più di un dominio da un singolo server. In questo passaggio, verrà impostato un dominio chiamato example.com, ma è necessario sostituirlo con il proprio nome di dominio. Per ulteriori informazioni sull’impostazione di un nome di dominio con DigitalOcean, consulta la nostra Introduzione a DigitalOcean DNS.

Apache su CentOS 7 ha un blocco server abilitato di default che è configurato per servire documenti dalla directory/var/www/html. Mentre questo funziona bene per un singolo sito, può diventare ingombrante se si ospitano più siti. Invece di modificare /var/www/html, si creerà una struttura di directory all’interno di /var/www per il sito example.com, lasciando /var/www/html come directory predefinita da servire se una richiesta client non corrisponde ad altri siti.

Creare html directory example.com come segue, utilizzando il -p flag per creare le directory principali necessarie:

  • sudo mkdir -p /var/www/example.com/html

Creare una nuova directory per memorizzare i file di log per il sito:

  • sudo mkdir -p /var/www/example.com/log

quindi, assegnare la proprietà di html directory $USER la variabile d’ambiente:

  • sudo chown -R $USER:$USER /var/www/example.com/html

assicuratevi che il vostro web root ha i permessi di default impostato:

  • sudo chmod -R 755 /var/www

Next, create a sample index.html page using vi or your favorite editor:

  • sudo vi /var/www/example.com/html/index.html

Press i to switch to INSERT mode and add the following sample HTML to the file:

/var/www/example.com/html/index.html
<html> <head> <title>Welcome to Example.com!</title> </head> <body> <h1>Success! The example.com virtual host is working!</h1> </body></html>

Save and close the file by pressing ESC, typing :wq, and pressing ENTER.

Con la directory del sito e il file indice di esempio sul posto, si è quasi pronti per creare i file host virtuali. I file host virtuali specificano la configurazione dei siti separati e indicano al server Web Apache come rispondere alle varie richieste di dominio.

Prima di creare gli host virtuali, è necessario creare una directory sites-available in cui memorizzarli. Si creerà anche la directorysites-enabled che indica ad Apache che un host virtuale è pronto per servire ai visitatori. La directorysites-enabled contiene collegamenti simbolici agli host virtuali che vogliamo pubblicare. Crea entrambe le directory con il seguente comando:

  • sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled

Successivamente, dirai ad Apache di cercare host virtuali nella directory sites-enabled. Per fare ciò, modifica il file di configurazione principale di Apache e aggiungi una riga che dichiara una directory opzionale per ulteriori file di configurazione:

  • sudo vi /etc/httpd/conf/httpd.conf

Aggiungi questa riga alla fine del file:

IncludeOptional sites-enabled/*.conf

Salva e chiudi il file quando hai finito di aggiungere quella riga. Ora che hai le tue directory host virtuali in atto, creerai il tuo file host virtuale.

Inizia creando un nuovo file nella directorysites-available:

  • sudo vi /etc/httpd/sites-available/example.com.conf

Aggiungi il seguente blocco di configurazione e modifica il dominioexample.com al tuo nome di dominio:

/etc/httpd/sites-available / example.com.conf
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/example.com/html ErrorLog /var/www/example.com/log/error.log CustomLog /var/www/example.com/log/requests.log combined</VirtualHost>

Questo dirà ad Apache dove trovare direttamente la radice che contiene i documenti web accessibili al pubblico. Indica anche ad Apache dove archiviare i log degli errori e delle richieste per questo particolare sito.

Salva e chiudi il file quando hai finito.

Ora che hai creato i file host virtuali, li abiliterai in modo che Apache sappia servirli ai visitatori. Per fare ciò, creare un collegamento simbolico per ogni host virtuale nella directorysites-enabled :

  • sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf

L’host virtuale è ora configurato e pronto per la pubblicazione di contenuti. Prima di riavviare il servizio Apache, assicuriamoci che SELinux abbia le politiche corrette per i tuoi host virtuali.

Passo 5 — Regolazione autorizzazioni SELinux per gli host virtuali (consigliato)

SELinux è configurato per funzionare con la configurazione predefinita di Apache. Poiché si imposta una directory di log personalizzata nel file di configurazione degli host virtuali, verrà visualizzato un errore se si tenta di avviare il servizio Apache. Per risolvere questo problema, è necessario aggiornare le politiche di SELinux per consentire ad Apache di scrivere nei file necessari. SELinux porta maggiore sicurezza al tuo ambiente CentOS 7, quindi non è consigliabile disabilitare completamente il modulo del kernel.

Esistono diversi modi per impostare le politiche in base alle esigenze dell’ambiente, poiché SELinux consente di personalizzare il livello di sicurezza. Questo passaggio riguarderà due metodi per regolare le politiche di Apache: universalmente e su una directory specifica. La regolazione delle politiche sulle directory è più sicura ed è quindi l’approccio raccomandato.

Regolare universalmente le politiche di Apache

L’impostazione universalmente della politica di Apache dirà a SELinux di trattare tutti i processi Apache in modo identico usando ilhttpd_unified booleano. Anche se questo approccio è più conveniente, non ti darà lo stesso livello di controllo di un approccio che si concentra su un criterio di file o directory.

Eseguire il seguente comando per impostare una politica Apache universale:

  • sudo setsebool -P httpd_unified 1

Il comandosetsebool modifica i valori booleani di SELinux. Il flag-P aggiornerà il valore del tempo di avvio, rendendo questa modifica persistente durante i riavvii. httpd_unified è il booleano che dirà a SELinux di trattare tutti i processi Apache come lo stesso tipo, quindi l’hai abilitato con un valore di 1.

Regolare i criteri di Apache su una Directory

Impostare individualmente i permessi SELinux per la directory/var/www/example.com/log ti darà un maggiore controllo sui tuoi criteri di Apache, ma potrebbe anche richiedere più manutenzione. Poiché questa opzione non è universalmente l’impostazione dei criteri, sarà necessario impostare manualmente il tipo di contesto per tutte le nuove directory di registro specificate nelle configurazioni dell’host virtuale.

Per prima cosa, controlla il tipo di contesto che SELinux ha dato alla directory/var/www/example.com/log:

  • sudo ls -dZ /var/www/example.com/log/

Questo comando elenca e stampa il contesto SELinux della directory. Vedrete uscita simile al seguente:

Output
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example.com/log/

Il contesto corrente èhttpd_sys_content_t, che indica a SELinux che il processo Apache può leggere solo i file creati in questa directory. In questo tutorial, cambierai il tipo di contesto della directory/var/www/example.com/log inhttpd_log_t. Questo tipo consentirà ad Apache di generare e aggiungere ai file di log delle applicazioni Web:

  • sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"

Successivamente, utilizzare il comandorestorecon per applicare queste modifiche e farle persistere durante i riavvii:

  • sudo restorecon -R -v /var/www/example.com/log

Il flag -R esegue questo comando in modo ricorsivo, il che significa che aggiornerà qualsiasi file esistente per utilizzare il nuovo contesto. Il flag-v stamperà le modifiche di contesto apportate al comando. Verrà visualizzato il seguente output che conferma le modifiche:

Output
restorecon reset /var/www/example.com/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0

È possibile elencare i contesti ancora una volta per vedere le modifiche:

  • sudo ls -dZ /var/www/example.com/log/

L’output riflette il tipo di contesto aggiornato:

Output
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log

Ora che la directory /var/www/example.com/logutilizza il tipo httpd_log_t, si è pronti per testare la configurazione dell’host virtuale.

Passo 6 — Test dell’host virtuale (consigliato)

Una volta che il contesto SELinux è stato aggiornato con entrambi i metodi, Apache sarà in grado di scrivere nella directory/var/www/example.com/log. Ora è possibile riavviare correttamente il servizio Apache:

  • sudo systemctl restart httpd

Elencare il contenuto della directory /var/www/example.com/log per vedere se Apache ha creato i file di log:

  • ls -lZ /var/www/example.com/log

vedrai che Apache è stato in grado di creare il error.log e requests.log file specificato nella configurazione del virtual host:

Output
-rw-r--r--. 1 root root 0 Feb 26 22:54 error.log-rw-r--r--. 1 root root 0 Feb 26 22:54 requests.log

Ora che avete il vostro host virtuale impostare e SELinux autorizzazioni aggiornato, Apache servirà ora il tuo nome di dominio. Puoi testarlo navigando su http://example.com, dove dovresti vedere qualcosa del genere:

Successo! Il example.com host virtuale sta funzionando!

Ciò conferma che l’host virtuale è stato configurato correttamente e che il contenuto è stato distribuito. Ripetere i passaggi 4 e 5 per creare nuovi host virtuali con autorizzazioni SELinux per domini aggiuntivi.

Conclusione

In questo tutorial, è stato installato e gestito il server web Apache. Ora che hai installato il tuo server web, hai molte opzioni per il tipo di contenuto che puoi servire e le tecnologie che puoi utilizzare per creare un’esperienza più ricca.

Se desideri creare uno stack di applicazioni più completo, puoi consultare questo articolo su come configurare uno stack LAMP su CentOS 7.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *