Come installare Apache HTTPD su CentOS Stream 9

Apache HTTP Server (httpd) è uno dei server Web più popolari e robusti disponibili, noto per la sua flessibilità, prestazioni e un'ampia gamma di funzionalità. È ampiamente utilizzato per l'hosting di siti Web e applicazioni Web. La configurazione di Apache su CentOS Stream 9 ti consente di sfruttare le sue potenti funzionalità per le tue esigenze di web hosting. Inoltre, proteggere il tuo sito web con un certificato SSL gratuito di Let's Encrypt garantisce che il tuo sito sia crittografato e affidabile.

Per installare Apache HTTP Server su CentOS Stream 9 e configurare un certificato SSL Let's Encrypt, segui i passaggi descritti in questa guida. Ciò ti fornirà una configurazione del server web sicura ed efficiente.

Garantire un sistema di flusso CentOS completamente aggiornato prima dell'installazione di Apache

Prima di procedere con l'installazione di Apache sulla tua macchina CentOS Stream, dobbiamo verificare che il nostro sistema sia completamente aggiornato. Questa è più di una semplice misura precauzionale. L'aggiornamento del sistema aiuta a prevenire problemi di compatibilità e ne migliora significativamente la stabilità, la sicurezza e le prestazioni.

Per metterlo in moto, esegui il seguente comando nel tuo terminale:

sudo dnf upgrade --refresh

Questo comando attiva il meccanismo di aggiornamento, procurando e installando gli ultimi aggiornamenti software e patch di sicurezza del sistema. È fondamentale consentire la conclusione completa del processo di aggiornamento prima di procedere all'installazione di Apache. Ciò garantisce che il tuo sistema sia nelle sue condizioni ottimali, configurato in modo ottimale e pronto per eseguire Apache senza incontrare intoppi o problemi di compatibilità.

Installa Apache HTTPD tramite il comando DNF

Il secondo passaggio è installare Apache, o HTTPD, sul tuo sistema CentOS Stream. Questo è un processo semplice, per gentile concessione del potente gestore di pacchetti DNF. Il gestore pacchetti DNF, o Dandified Yum, semplifica l'installazione, l'aggiornamento e la gestione dei pacchetti software.

Avvia l'installazione di Apache (HTTPD) eseguendo il seguente comando nel tuo terminale:

sudo dnf install httpd

Questo comando avvia il meccanismo di installazione e recupera e installa tutti i componenti necessari per consentire l'esecuzione di Apache (HTTPD) sul tuo sistema. Il processo dovrebbe terminare in pochi minuti. Successivamente, avrai Apache (HTTPD) completamente installato e pronto per l'uso.

Attivazione e configurazione di Apache HTTPD per l'esecuzione all'avvio del sistema

Dopo aver installato con successo Apache (HTTPD) sul tuo sistema CentOS Stream, la seguente azione chiave è attivare il servizio e configurarlo per l'avvio automatico all'avvio del sistema. Apache (HTTPD) è sempre attivo e pronto a servire le richieste web all'accensione del sistema.

Se il servizio Apache (HTTPD) non è attivo o impostato per essere eseguito per impostazione predefinita, utilizza questi comandi nel terminale per avviare il servizio e assicurarti che venga eseguito all'avvio del sistema:

sudo systemctl start httpd
sudo systemctl enable httpd

Il primo comando, sudo systemctl start httpd, avvia il servizio Apache (HTTPD), mentre il secondo comando, sudo systemctl abilita httpd, imposta il servizio in modo che venga eseguito automaticamente all'avvio del sistema. Implementando questi due comandi, garantisci che Apache (HTTPD) sia costantemente accessibile e attivo, pronto a soddisfare le richieste web ogni volta che il tuo sistema si accende.

In alternativa puoi condensare i due passaggi precedenti in un unico comando:

sudo systemctl enable httpd --now

L'opzione –now nel comando sudo systemctl abilita httpd –now avvia contemporaneamente il servizio Apache (HTTPD) e lo configura per l'avvio automatico all'avvio del sistema. Questo singolo comando unifica i due comandi separati dei passaggi precedenti, rendendo il processo più snello ed efficiente.

Controlla lo stato del servizio Apache HTTPD

Infine, dovremmo verificare la corretta implementazione e funzionamento di Apache (HTTPD) utilizzando il seguente comando systemctl:

systemctl status httpd

Questo comando fornisce lo stato in tempo reale del servizio Apache (HTTPD), inclusi eventuali errori o messaggi che potrebbero essersi verificati. Esaminando lo stato del servizio, puoi confermare che Apache (HTTPD) funziona perfettamente.

Configura le regole FirewallD

Dopo aver installato Apache (HTTPD) su CentOS Stream, potresti notare che il firewall non include regole preconfigurate per le porte standard 80 e 443. È necessario configurare queste regole del firewall prima di procedere per migliorare la sicurezza della tua applicazione web.

Imposta le regole del firewall utilizzando lo strumento firewall-cmd, l'utilità di gestione firewall predefinita di CentOS Stream. Le regole che devi configurare varieranno a seconda delle porte che intendi utilizzare. Tuttavia, elenchiamo tutte le opzioni critiche nei passaggi seguenti.

Apertura delle porte 80 e 443

Eseguiremo i primi due comandi per aprire le porte 80 e 443. Queste porte gestiscono rispettivamente il traffico HTTP e HTTPS in entrata.

Per aprire la porta 80 o HTTP, esegui il comando seguente:

sudo firewall-cmd --permanent --add-port=80/tcp

Successivamente, apri la porta 443, o HTTPS, con il comando successivo:

sudo firewall-cmd --permanent --add-port=443/tcp

Verifica le modifiche al firewall

Dopo aver specificato le porte da aprire, dobbiamo istruire il firewall ad implementare queste modifiche. Fallo ricaricando le regole del firewall utilizzando il comando seguente:

sudo firewall-cmd --reload

Comprendere le implicazioni

È fondamentale avere una profonda comprensione delle implicazioni sulla sicurezza che accompagnano l'apertura delle porte sul proprio sistema. Aprendo selettivamente solo le porte necessarie, rafforzi la difesa della tua applicazione web contro l'accesso non autorizzato e le potenziali minacce alla sicurezza. Ciò sottolinea il motivo per cui è fondamentale configurare correttamente le regole del firewall per l'installazione di Apache (HTTPD) su CentOS Stream.

Verifica dell'accesso HTTPD Apache

Dopo aver configurato meticolosamente Firewalld, assicurati di poter accedere alla pagina di destinazione Apache (HTTPD) tramite il tuo browser web. Avvia il tuo browser web preferito e vai su http://localhost o http://your_server_ip.

Per accedere tramite l'IP del tuo server:

http://your_server_ip

In alternativa, per accedere tramite localhost:

http://localhost

Quando configuri tutto in modo preciso, la pagina di destinazione predefinita di Apache (HTTPD) ti accoglierà. Questa pagina visualizza un messaggio che conferma che il server funziona come previsto. La pagina sarà simile a:

Crea e configura un host virtuale

Questa sezione approfondirà l'aspetto pratico della creazione di un host virtuale utilizzando Apache (HTTPD), un server Web flessibile noto per la sua capacità di ospitare più domini su un singolo server. Questa utility è analoga all'attributo "blocchi server" di Nginx. Nel tutorial successivo, illustreremo come formulare un host virtuale per un determinato dominio, rappresentato come "dominio-esempio.com". Naturalmente sostituirai questo dominio di esempio con il tuo nome di dominio specifico.

La creazione di host virtuali facilita la gestione indipendente delle configurazioni per ciascun dominio. Ciò fornisce il controllo su vari aspetti dell'ambiente del server Web, tra cui sicurezza, prestazioni e impostazioni personalizzate. Ciò può rivelarsi particolarmente vantaggioso se intendi ospitare più siti Web su un unico server o mantenere impostazioni separate per sezioni distinte del tuo sito Web. Con Apache (HTTPD), puoi ideare facilmente host virtuali per soddisfare questi requisiti.

Creazione e configurazione di directory

Iniziare la configurazione dell'host virtuale comporta la creazione di una nuova directory che funge da cartella principale per il tuo host virtuale. Il nome di questa directory in genere è in linea con il tuo nome di dominio.

Ad esempio, se il tuo nome di dominio è "example.com", genererai una nuova directory con il comando:

sudo mkdir /var/www/example.com

Questo comando richiede la sostituzione di "example.com" con il tuo nome di dominio. Pertanto, la directory ospiterà file e risorse associati ai tuoi host virtuali, inclusi file HTML, immagini, script e altre risorse.

L'impostazione di directory individuali per ciascun host virtuale facilita una netta separazione delle preoccupazioni, il che è significativo nel contesto della sicurezza e della risoluzione dei problemi.

La nuova directory potrebbe richiedere proprietà e autorizzazioni appropriate per consentire l'accesso ad Apache (HTTPD). I comandi successivi impostano la proprietà e le autorizzazioni corrette:

sudo chown -R apache:apache /var/www/example.com
sudo chmod -R 755 /var/www/example.com

Con la nuova directory preparata, possiamo configurare il tuo host virtuale.

Creazione di un file index.html

Un editor di testo genera un file index.html per il tuo host virtuale. Per il nostro tutorial utilizzeremo l'editor di testo nano, anche se puoi scegliere qualsiasi editor di testo che preferisci.

Esegui il comando seguente per creare il file index.html:

sudo nano /var/www/example.com/index.html

Nell'editor di testo, inizia a creare il contenuto per il tuo file index.html. Questo file funge in genere come primo punto di contatto per un utente che visita il tuo sito web.

Ecco un semplice esempio:

<html>
  <head>
    <title>Example Domain</title>
  </head>
  <body>
    <h1>Welcome to Example Domain</h1>
    <p>This is a sample page for the domain example.com.</p>
  </body>
</html>

Dopo aver finalizzato il contenuto del file index.html, salva il file ed esci dall'editor di testo. Nel caso di nano, ciò si ottiene premendo Ctrl + X, Y e Invio.

Configurazione delle directory dell'host virtuale

Garantire una corretta configurazione della directory per il server Web Apache garantisce una configurazione fluida e organizzata. Nello specifico, vengono utilizzate le directory “sites-available” e “sites-enabled”. Questa configurazione rispecchia quella adottata in Nginx e promuove configurazioni organizzate e accessibili.

Per creare queste directory, utilizzare il seguente comando:

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

Successivamente, chiedi ad Apache di cercare i file dell'host virtuale nella directory “/etc/httpd/sites-available”:

sudo nano /etc/httpd/conf/httpd.conf

Nel file di configurazione aperto, aggiungi alla fine la riga "IncludeOptional sites-enabled/*.conf". Questa riga indica ad Apache di includere tutti i file di configurazione dell'host virtuale nella directory "sites-enabled".

IncludeOptional sites-enabled/*.conf

Facoltativamente, potresti voler commentare "IncludeOptional conf.d/*.conf", disabilitando la cartella predefinita in cui Apache cerca i file dell'host virtuale. Questo aiuta a prevenire qualsiasi potenziale confusione.

Esempio:

#IncludeOptional conf.d/*.conf
IncludeOptional sites-enabled/*.conf

Per salvare il file ed uscire, utilizzare la combinazione di tasti CTRL+O, seguita da CTRL+X.

Creare il file di configurazione dell'host virtuale

Successivamente, utilizzando il tuo editor di testo, creeremo un file di configurazione dell'host virtuale in /etc/httpd/sites-available/example.com.conf.

sudo nano /etc/httpd/sites-available/example.com.conf

Compila le informazioni del segnaposto nel seguente blocco di configurazione con ServerName, ServerAlias ​​e Document Root prima di copiarlo nel file di configurazione dell'host virtuale situato in /etc/httpd/sites-available/example.com.conf.

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName example_domain
    ServerAlias www.example_domain
    DocumentRoot /var/www/example.com/
</VirtualHost>

Modifica le direttive del server per adattarle ai tuoi requisiti specifici.

Passaggio 5: modifica delle autorizzazioni di accesso

Per garantire l'accesso pubblico al tuo server, modifica i permessi di accesso per il servizio Apache nel file di configurazione /etc/httpd/conf/httpd.conf. La configurazione predefinita nega l'accesso. Se trascuri questo passaggio, potresti riscontrare errori HTTP 403 quando le persone tentano di accedere al tuo sito web.

sudo nano /etc/httpd/conf/httpd.conf

Aggiungi il seguente blocco al tuo file, assicurandoti di regolare la directory root in modo che corrisponda alla tua.

<Directory /var/www/example.com/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

Per salvare queste modifiche, utilizza la combinazione di tasti CTRL+O ed esci dall'editor di testo utilizzando CTRL+X.

Passaggio 6: abilita l'host virtuale per Apache su CentOS Stream

Per configurare l'host virtuale, è necessario attivarlo come passaggio finale. Crea un collegamento simbolico dalla directory sites-available alla directory sites-enabled utilizzando il comando fornito di seguito:

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

È necessario riavviare il servizio Apache per completare il processo di attivazione.

sudo systemctl restart httpd

Dopo aver riavviato il servizio Apache, apri il browser web e vai a "HTTP://example_domain". Se non hai registrato un dominio, puoi accedere al tuo sito web utilizzando l'indirizzo IP (locale o remoto). Se imposti tutto correttamente, la pagina di destinazione che hai creato nel file index.html ti darà il benvenuto.

Comandi e suggerimenti aggiuntivi

Directory e file protetti

Impostazione delle autorizzazioni sicure

L'utilizzo di autorizzazioni sicure per file e directory in Apache su CentOS è fondamentale. Spesso vengono concesse autorizzazioni eccessive, come l'accesso pubblico completo. Per prevenire rischi per la sicurezza, si consiglia di limitare le autorizzazioni. Per le directory, utilizzare chmod 755 e per i file, chmod 644. Di seguito sono riportati i comandi per impostare queste autorizzazioni. Ricorda, alcune applicazioni potrebbero richiedere autorizzazioni diverse, come 777 per phpBB.

  • Per le directory:
sudo find /var/www/example.com/ -type d -exec chmod 755 "{}" \;
  • Per i file:
sudo find /var/www/example.com/ -type f -exec chmod 644 "{}" \;

Questi comandi verranno sostituiti /var/www/example.com/ con il percorso di directory appropriato. Questo passaggio non garantisce la sicurezza completa ma riduce significativamente i rischi impedendo l'accesso pubblico a file cruciali.

Proteggi Apache con Let's Encrypt SSL

Installazione del certificato SSL crittografato

Proteggere il tuo server Apache con un certificato SSL è necessario per connessioni client-server sicure. Let's Encrypt fornisce un certificato SSL automatico e gratuito. Innanzitutto, assicurati che il repository CRB sia abilitato e che il repository EPEL sia installato. Il processo di installazione varia leggermente tra CentOS Stream 9 e 8.

Per CentOS Stream 9:
  • Abilita CRB:
sudo dnf config-manager --set-enabled crb
  • Installa il repository EPEL:
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

Quindi, installa mod_ssl e scatta:

sudo dnf install mod_ssl

Attiva EPEL sulla tua distribuzione CentOS Stream, quindi installa Snap.

sudo dnf install snapd -y

Dopo l'installazione, assicurati di abilitare Snap e all'avvio del sistema immediatamente.

sudo systemctl enable snapd --now

Il passaggio successivo consiste nell'installare lo snap core, che si occuperà di tutte le dipendenze necessarie per l'esecuzione dei pacchetti snap.

sudo snap install core

Crea un collegamento simbolico per la directory snapd.

sudo ln -s /var/lib/snapd/snap /snap

Utilizzare il seguente comando del terminale per installare il pacchetto snap Certbot.

sudo snap install --classic certbot

Infine, crea un altro collegamento simbolico per il pacchetto snap Certbot.

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Esegui Certbot per Apache

Esegui il comando seguente nel tuo terminale per generare il tuo certificato SSL utilizzando Certbot.

sudo certbot --dry-run --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com

Per chi è nuovo a Let's Encrypt, potresti cercare maggiori informazioni sull'abbreviazione nel comando.

  • L'opzione “–dry-run” consente di eseguire un test del processo di generazione del certificato senza alterare il sistema. Questa opzione è utile per i test.
  • L'opzione “–apache” serve a generare un certificato per un server web Apache.
  • L'opzione “–agree-tos” ti consente di accettare i termini di servizio di Let's Encrypt, l'autorità di certificazione che fornisce il certificato SSL.
  • L'opzione “–redirect” reindirizza automaticamente tutto il traffico HTTP su HTTPS.
  • L'opzione “–hsts” abilita HTTP Strict Transport Security (HSTS). Questa funzionalità di sicurezza aiuta a proteggere dagli attacchi di downgrade del protocollo e dal dirottamento dei cookie comunicando ai browser di accedere al tuo sito Web solo tramite una connessione HTTPS sicura.
  • L'opzione “–staple-ocsp” abilita la pinzatura OCSP (Online Certificate Status Protocol), che verifica lo stato di revoca di un certificato SSL senza contattare l'autorità di certificazione.
  • Utilizza l'opzione “–email” per specificare l'indirizzo email che desideri associare al certificato.
  • L'opzione “-d” specifica il nome di dominio per il quale genererai il certificato. In questo esempio, il nome di dominio è “www.example.com”.

In alternativa, puoi utilizzare il comando seguente e seguire le istruzioni dettagliate per un'esperienza più accessibile.

sudo certbot certonly --apache

Eseguendo il comando con i parametri menzionati, stai indicando a certbot di creare un certificato SSL per il tuo dominio "www.example.com" includendo anche le funzionalità di sicurezza necessarie come un reindirizzamento HTTPS 301 forzato, intestazione Strict-Transport-Security e Pinzatura OCSP. È importante notare che dovresti sostituire l'indirizzo email nel comando con il tuo e assicurarti anche di sostituire il nome di dominio "www.example.com" con il nome di dominio desiderato.

Configurazione SSL su Apache

Dopo aver ottenuto il certificato SSL, configura il tuo server Apache per utilizzarlo. Modifica il ssl.conf file e aggiungi le seguenti righe, sostituendo "example.com" con il tuo dominio:

sudo nano /etc/httpd/conf.d/ssl.conf

Nel file di configurazione, aggiungi le seguenti righe: sostituisci "example.com" con il tuo nome di dominio.

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

Salva le modifiche e riavvia Apache in modo che la configurazione abbia effetto.

sudo systemctl restart httpd 

Questa configurazione garantisce una comunicazione crittografata e sicura tra i browser e il tuo sito web.

Automatizzazione del rinnovo del certificato

Per mantenere aggiornato il certificato SSL, imposta un processo cron per il rinnovo automatico. Testare il processo di rinnovamento con un test di prova:

sudo certbot renew --dry-run

Controllare i timer utilizzando il comando systemctl list-timer e verificare che sia presente "snap.certbot.renew.timer".

systemctl list-timers snap.certbot.renew.timer

Utilizza il comando "systemctl list-timer –all" per visualizzare i timer attivi e inattivi sul tuo sistema. Questo comando visualizza una panoramica di tutti i timer, incluso "snap.certbot.renew.timer". Lo “snap.certbot.renew.timer” garantisce il controllo e il rinnovo automatico del certificato prima della scadenza. In questo modo elimini le preoccupazioni relative al processo di rinnovo.

systemctl list-timers --all

Gestione HTTPD Apache

Una volta configurato correttamente Apache sul tuo server, ecco alcuni punti essenziali da ricordare per una gestione efficace.

Registri del server Apache

I log del server Apache sono archiviati nella directory /var/log/httpd/. I nomi file predefiniti per i log di accesso e di errore sono rispettivamente access.log ed error.log. Tuttavia, è possibile modificare questi nomi nel file di configurazione dell'host virtuale.

Ecco un esempio di modifica dei log del server Apache nel file di configurazione dell'host virtuale.

<VirtualHost *:80>
    ServerName www.example.com
    DocumentRoot /var/www/example.com
    
    # Change access log to custom-access.log
    CustomLog /var/log/httpd/custom-access.log combined
    
    # Change error log to custom-error.log
    ErrorLog /var/log/httpd/custom-error.log
</VirtualHost>

In questo esempio i log di accesso e di errore vengono modificati rispettivamente in custom-access.log e custom-error.log. Puoi modificare i nomi dei file di registro in quello che preferisci e aggiornare il percorso corrispondente nel file di configurazione dell'host virtuale.

Comandi Apache

Ecco alcuni dei comandi utilizzati di frequente durante la gestione di Apache:

Arresta il server web Apache:

sudo systemctl stop httpd

Avvia il server web Apache:

sudo systemctl start httpd

Riavviare il server web Apache:

sudo systemctl restart httpd

Ricarica il server web Apache:

sudo systemctl reload httpd

Disabilita Apache all'avvio del server:

sudo systemctl disable httpd

Abilita Apache all'avvio del server:

sudo systemctl enable httpd

Come aggiornare Apache HTTPD

Per mantenere Apache aggiornato, esegui il comando che usi solitamente per verificare se il tuo sistema è aggiornato.

sudo dnf update --refresh

È importante eseguire backup o creare immagini del sistema prima di eseguire qualsiasi aggiornamento, poiché a volte possono verificarsi dei bug. Il seguente comando aggiornerà tutti i pacchetti di sistema, incluso Apache, e ti chiederà di eseguire l'aggiornamento.

Come rimuovere Apache HTTPD

Per disinstallare Apache dal tuo sistema, utilizza il seguente comando.

sudo systemctl disable httpd --now

Ora, usa il seguente comando per rimuovere del tutto Apache.

sudo dnf remove httpd

I file rimanenti potrebbero persistere nella directory principale /etc/httpd, quindi cancelliamo quella cartella.

sudo rm -R /etc/httpd/

Conclusione

Con Apache HTTP Server e Let's Encrypt configurati con successo sul tuo sistema CentOS Stream, il tuo sito web sarà robusto e sicuro. L'aggiornamento regolare di Apache e il rinnovo del certificato SSL Let's Encrypt ti aiuteranno a mantenere sicurezza e prestazioni ottimali. Goditi l'affidabilità e la sicurezza che Apache HTTP Server e Let's Encrypt apportano al tuo ambiente di hosting web.

Joshua James
Seguimi
Ultimi post di Joshua James (vedi tutto)

Lascia un commento