Iniziamo con il digitare dal terminal della nostra distribuzione Ubuntu i seguenti comandi, che sono la combinazione dell’aggiornamento delle repository e l’avvio dell’installazione di Apache:
sudo apt update && sudo apt install apache2
Premiamo Invio. L’installazione potrebbe durare qualche minuto.
Una volta terminato il processo di installazione, procediamo alla configurazione del Firewall per aggiungere dei parametri di sicurezza, partendo dall’aggiunta della regola per permettere connessioni in SSH.
Questa regola è necessaria per operare tramite connessione remota in SSH e se eventulmente stessimo configurando il nostro server da remoto.
Questo passaggio può ovviamente essere saltato, se la regola è già presente nel nostro firewall:
sudo ufw allow OpenSSH
Premiamo Invio.
Adesso consentiamo le funzionalità di Apache aggiungendo la relativa regola al Firewall tramite questo comando:
sudo ufw allow in “Apache Full”
Premiamo Invio.
Ora abilitiamo il Firewall nel caso non lo fosse:
sudo ufw enable
Premiamo Invio.
Nell’eventualità apparisse il messaggio “Command may disrupt existing SSH connections”, premiamo “Y” e poi Invio per confermare.
Se l’avvio del Firewall è avvenuto in maniera corretta, verrà mostrato il messaggio “Firewall is active and enabled on system startup”, ma lo stato può essere verificato in ogni momento digitando il comando sudo ufw status.
A questo punto possiamo verificare lo stato del nostro Web Server Apache appena installato, digitando il comando:
sudo service apache2 status
Premiamo Invio.
Se tutto è andato per il verso giusto, otterremo l’output come da immagine qui a lato, con la presenza della scritta in verde “active (running)”.
Se dovesse comparire l’errore “Could not reliably determinate the server’s fully qualified domain name…”, il messaggio può essere tranquillamente ignorato perché relativo alla non presenza di domini configurati sul Web Server, configurazione che verrà mostrata più avanti.
Per ritornare al prompt della nostra sessione del terminale, potrebbe essere necessario premere “Q”.
Se digitiamo ora nel browser l’indirizzo IP del nostro server, dovremmo essere in grado di visualizzare la pagina di test di Apache Web Server, come evidenziato nella foto a lato.
Questa pagina è presente nel percorso /var/www/html/index.html.
Terminata la configurazione di Apache Web Server, spieghiamo ora come configurare i Virtual Hosts.
I Virtual Hosts ci permettono di ospitare più siti/domini su un unico server, ma anche nel caso in cui l’intenzione sia quella di ospitarne uno solo, è consigliabile effettuare questa parte di configurazione. Nei passaggi successivi verrà preso in considerazione l’esempio di configurazione per due Virtual Hosts (domini), che chiameremo ilmiosito1.it e ilmiosito2.it. Il nome dovrà ovviamente essere sostituito dal nostro reale dominio.
Per prima cosa creiamo le directory e configuriamo i relativi permessi:
sudo mkdir -p /var/www/ilmiosito1.it/public_html
Premiamo Invio.
sudo mkdir -p /var/www/ilmiosito2.it/public_html
Premiamo Invio.
Ora assegniamo i permessi alla percorso generale della directory web, utilizzando l’opzione -R per assegnare i permessi ricorsivamente alle sotto directory e file:
sudo chmod -R 755 /var/www
Premiamo Invio.
Ora creiamo una pagina di test, utilizzando l’editor nano:
sudo nano /var/www/ilmiosito1.it/public_html/index.html
Premiamo Invio.
Copiamo e incolliamo quanto riportato a seguire:
Questo è il mio sito
Premiamo quindi Ctrl + X e poi Y e infine Invio, per salvare il contenuto del file.
Creiamo quindi la relativa pagina di test anche per il “miosito2.it”, seguendo gli ultimi due passaggi descritti sopra.
Create le nostre due pagine di benvenuto, configuriamo i file per i nostri Virtual Hosts. Questi file sono utilizzati per “istruire” Apache Web Server sul come rispondere alle varie richieste di dominio.
Creiamo quindi il primo file relativo al dominio ilmiosito1.it :
sudo nano /etc/apache2/sites-available/ilmiosito1.it.conf
Premiamo Invio.
Copiamo e incolliamo quindi il testo evidenziato sotto, nell’editor nano appena aperto:
<VirtualHost *:80>
ServerAdmin webmaster@ilmiosito.it
ServerName ilmiosito.it
ServerAlias www.ilmisioto.it
DocumentRoot /var/www/ilmiosito.it/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Premiamo Ctrl + X, poi Y e infine Invio per salvare il contenuto del file e ripetiamo questi ultimi due passaggi per ilmiosito2.it .
Una volta creati i file di configurazione dei nostri Virtual Hosts, dobbimo abilitarli utilizzando il comando a2ensite:
sudo a2ensite ilmiosito1.it.conf && sudo a2ensite ilmiosito2.it.conf
Premiamo Invio.
Per verificare la sintassi della configurazione, possiamo usare il comando:
apachectl configtest
Possiamo ignorare eventuali errori del tipo “Could not reliably determine the server’s fully qualified domain name.” Se otteniamo il messaggio “Syntax OK”, riavviamo il Web Server Apache tramite il comando:
sudo systemctl reload apache2
Premiamo Invio.
Adesso, assumendo che abbiamo già registrato i nostri domini e configurato il relativo DNS, digitando dal browser ilmiosito1.it e/o ilmiosito2.it, dovrebbero caricarsi le due pagine di benvenuto create precedentemente.
Configurazioni opzionali per Apache Web Server:
Abilitare “Allow Override”.
Apache Web Server per configurazione predefinita ignora la configurazione di .htaccess. Quest’ultimo è un file di testo utilizzato per modificare il comportamento con cui il nostro sito interagisce con Apache Web Server a livello di directory.
Per prima cosa effettuiamo un backup del file di configurazione di Apache:
sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak
Premiamo Invio.
Ora editiamo il file con Nano:
sudo nano /etc/apache2/apache2.conf
Premiamo Invio.
Premiamo Ctrl + W, digitiamo e premiamo Invio per cercare tale stringa:
Nel blocco dopo troveremo la voce AllowOverride None che sta a significare che il file .htaccess verrà ignorato se presente.
Modifichiamo quindi questa voce con AllowOverride All:
Salviamo quindi le modifiche apportate ad apache2.conf premendo Ctrl+X, poi Y e infine Invio.
Abilitiamo quindi a2enmod_rewrite nell’eventualità volessimo configurare in un secondo momento alcune regole nel file .htaccess:
sudo a2enmod rewrite
Premiamo Invio.
Riavviamo quindi Apache Web Server tramite il comando:
sudo systemctl restart apache2
Premiamo Invio.
Disabilitare la lista delle directory.
Apache Web Server per impostazione predefinita mostra il contenuto delle directory senza indice (index.php, index.html). Ciò potrebbe attirare l’attenzione di Hackers che potrebbero esplorare la lista dei file in cerca di eventuali script, esponendo il nostro Web Server a rischi di sicurezza.
Per disabilitare la lista dei file delle directory, editiamo il file apache2.conf tramite il comando:
sudo nano /etc/apache2/apache2.conf
Premiamo Invio.
Premiamo Ctrl + W, digitiamo e premiamo Invio per cercare tale stringa. Individuiamo il testo:
Options Indexes FollowSymLinks
e cancelliamo Indexes lasciando la stringa:
Options FollowSymLinks
Salviamo il file apache2.conf cliccando Ctrl + X, seguito da Y ed Invio.
Riavviamo il Web Server Apache tramite il comando:
sudo systemctl restart apache2
Premiamo Invio.
Disabilitare il Virtual Host predefinito di Apache.
Configurando i Virtual Host e visitando l’indirizzo IP del nostro server, potrebbe essere visibile la pagina di test di Apache. I Crawler, potrebbero generare accessi non necessari e log di errori, per cui è consigliabile disabilitare tale pagina:
Premiamo Invio.
Aggiungiamo il seguente blocco di codice all’interno del blocco VirtualHost :
Deny from all
Options None
ErrorDocument 403 Forbidden.
Salviamo il contenuto del file premendo Ctrl + W, seguito da Y e Invio.
Riavviamo Apache con il comando:
Premiamo Invio.