Per creare un unico host da usare per tutti i repository è possibile specificare la cartella superiore come DocumentRoot
, e poi utilizzare il parametro SVNParentPath
al posto di SVNPath
. Procediamo con la modifica:
- Apriamo il file
/etc/apache2/sites-available/svn
- Modifichiamo il parametro
DocumentRoot
dandogli il valore/var/svn/
- Sostituiamo la riga
SVNPath /var/svn/guidasvn
con
SVNParentPath /var/svn
- Salviamo e chiudiamo il file
- Ricarichiamo Apache
In questo modo diciamo ad Apache che nella cartella in questione saranno presenti diversi repository, per cui ora l'accesso a ciascuno di essi richiede che aggiungiamo all'url anche il nome del repository. Nel nostro caso utilizziamo:
http://svn.vd-devel/repos/guidasvn
Saremo in grado di visualizzare nuovamente il contenuto attuale del repository (ovvero il repository vuoto).
A questo punto della configurazione, il contenuto del repository è liberamente disponibile a chiunque abbia accesso al server Web. Possiamo comunque ridurre gli accessi grazie ad un meccanismo di autenticazione.
Autenticazione HTTP
Non è oggetto di questa guida spiegare i dettagli tecnici dell'autenticazione HTTP implementata da Apache. È comunque possibile ricavare informazioni al riguardo sulla documentazione ufficiale.
Iniziamo invece direttamente dal il comando necessario per creare un file di autenticazione:
htpasswd -c /etc/svn-htpasswd francesco
Nei parametri da passare inseriamo il nome di un file che conterrà l'elenco di coppie username e password, e l'utente per cui sto creando o modificando la password. L'opzione -c
specifica la creazione del file, quindi va usata solo per il primo utente, mentre per i successivi basterà:
htpasswd /etc/svn-htpasswd <nomeutente>
Ora bisogna segnalare ad Apache che l'elenco di account da usare per gestire l'accesso al nostro sito è contenuto nel file appena creato. Per farlo modifichiamo il file del virtual host (/etc/apache2/sites-available/svn
) e aggiungiamo le righe necessarie:
1 <VirtualHost *> 2 LoadModule dav_svn_module modules/mod_dav_svn.so 3 ServerName svn.vd-devel 4 DocumentRoot /var/svn/ 5 <Location /repos> 6 DAV svn 7 SVNParentPath /var/svn 8 Require valid-user 9 AuthType Basic 10 AuthName "Inserisci i dati per l'accesso al repository" 11 AuthUserFile /etc/svn-htpasswd 12 </Location> 13 </VirtualHost>
Le righe dalla 8 alla 11 indicano ad Apache che bisogna essere dei valid-user
(cioè bisogna autenticarsi) per accedere al sito, e forniscono i parametri per verificare l'autenticazione.
Se ricarichiamo Apache e proviamo nuovamente ad accedere via browser, appare la una mascherina intitolata "Inserisci i dati per l'accesso al repository". Immettendo la corretta combinazione di username e password – che abbiamo definito prima tramite il comando htpasswd – possiamo visualizzare il contenuto del repository, altrimenti saremo tenuti fuori.
Questo è solo il primo, più semplice livello di autenticazione e non garantisce una sicurezza elevatissima, soprattutto visto che le password vengono praticamente passate in chiaro via rete.
Esiste la possibilità di stringere le maglie, ad esempio utilizzando AuthType Digest
anziché Basic
, che evita appunto il passaggio delle password, o ancora meglio utilizzando un certificato SSL per criptare tutto il traffico dal client al server. Sono opzioni che riguardano competenze specifiche di Apache per cui, anche in questo caso, non approfondiremo oltre in questa guida.