Ricerca nel sito web

La guida definitiva alla configurazione di Apache Subversion SVN e TortoiseSVN per il controllo della versione


Se il tuo lavoro richiede la gestione di documenti, pagine web e altri tipi di file che vengono aggiornati regolarmente, potresti voler utilizzare un meccanismo di controllo della versione se non lo fai già.

Tra le altre cose, ciò consente a te (e anche a un gruppo di potenziali collaboratori) di tenere traccia delle modifiche apportate a un determinato file e di tornare a una versione precedente se si verifica un problema o quando un aggiornamento non ha prodotto il risultato previsto .

Nell'ecosistema del software libero, il sistema di controllo della versione più utilizzato si chiama Apache Subversion (o SVN in breve). Con l'aiuto di mod_dav_svn (il modulo di Apache per Subversion), puoi accedere a un repository Subversion utilizzando HTTP e un server web.

Detto questo, rimbocchiamoci le maniche e installiamo questi strumenti su RHEL/CentOS 7, Fedora 22-24, Debian 8/7 e Server Ubuntu 16.04-15.04. Per i nostri test utilizzeremo un server CentOS 7 con IP 192.168.0.100.

Sul lato client (una macchina Windows 7), installeremo e utilizzeremo TortoiseSVN (che è basato su Apache Subversion) come interfaccia per SVN.

Il nostro ambiente di test


Server - CentOS 7
IP Address - 192.168.0.100
Client - Windows 7

Passaggio 1: installazione e configurazione di SVN su Linux

Come abbiamo appena accennato, faremo affidamento su Apache per accedere al repository SVN utilizzando un'interfaccia web. Se non è già installato, assicurati di aggiungerlo all'elenco dei pacchetti come mostrato di seguito:


------------------ On CentOS / RHEL / Fedora ------------------ 
yum update && yum install mod_dav_svn subversion httpd -y

------------------ On Debian / Ubuntu ------------------ 
apt-get update && apt-get install libapache2-svn subversion apache2 -y 

Durante l'installazione su CentOS 7, verrà creato un file di configurazione Apache per SVN come /etc/httpd/conf.modules.d/10-subversion.conf. Apri il file e aggiungi il seguente blocco di configurazione:


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/httpd/subversion-auth
    Require valid-user
</Location>

Nota: su Debian/Ubuntu è necessario aggiungere le righe seguenti a /etc/apache2/mods-enabled/dav_svn.conf file.


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/apache2/subversion-auth
    Require valid-user
</Location>

Su Debian/Ubuntu, devi abilitare il modulo dav_svn Apache:


a2enmod dav_svn

Un paio di chiarimenti:

  1. La direttiva SVNParentPath indica la directory in cui verranno successivamente creati i nostri repository. Se questa directory non esiste (il che è molto probabile), creala con:

    
    mkdir -p /websrv/svn
    

    È importante notare che questa directory NON deve trovarsi all'interno, o sovrapporsi, alla DocumentRoot di un host virtuale attualmente servito da Apache. Questo è uno spettacolo!

  2. La direttiva AuthUserFile indica il file in cui verranno archiviate le credenziali di un utente valido. Se vuoi consentire a tutti di accedere a SVN senza autenticazione, rimuovi le ultime quattro righe nel blocco Posizione. In tal caso, salta il Passaggio 2 e vai direttamente al Passaggio 3.
  3. Anche se potresti essere tentato di riavviare Apache per applicare queste recenti modifiche, non farlo ancora poiché dobbiamo ancora creare il file di autenticazione con utenti validi per SVN e il repository stesso.

Passaggio 2: aggiungi gli utenti autorizzati ad accedere a SVN

Ora utilizzeremo htpasswd per creare una password per gli account a cui sarà consentito accedere a SVN. Solo per il primo utente avremo bisogno dell'opzione -c.

Gli account consentiti e le password crittografate con bcrypt (-B) verranno archiviati in /etc/httpd/subversion-auth in coppie chiave-valore. Tieni presente che secondo gli standard odierni, la crittografia MD5 o SHA predefinita utilizzata da htpasswd è considerata non sicura.


------------------ On CentOS / RHEL / Fedora ------------------ 
htpasswd -cB /etc/httpd/subversion-auth tecmint

------------------ On Debian / Ubuntu ------------------ 
htpasswd -cB /etc/apache2/subversion-auth tecmint

Non dimenticare di impostare la proprietà e le autorizzazioni corrette per il file di autenticazione:


------------------ On CentOS / RHEL / Fedora ------------------ 
chgrp apache /etc/httpd/subversion-auth
chmod 660 /etc/httpd/subversion-auth

------------------ On Debian / Ubuntu ------------------ 
chgrp www-data /etc/apache2/subversion-auth
chmod 660 /etc/apache2/subversion-auth

Passaggio 3: aggiungi sicurezza e crea repository SVN

Poiché accederai a SVN tramite un'interfaccia web, dovrai consentire il traffico HTTP (e facoltativamente HTTPS) attraverso il firewall.


------------------ On CentOS / RHEL / Fedora ------------------ 
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload 

Ricaricando la configurazione del firewall con --reload, le impostazioni permanenti diventano immediatamente effettive.

Crea un repository SVN iniziale chiamato tecmint:


svnadmin create /websrv/svn/tecmint

Cambia il proprietario e il proprietario del gruppo in apache in modo ricorsivo:


------------------ On CentOS / RHEL / Fedora ------------------ 
chown -R apache:apache /websrv/svn/tecmint

------------------ On Debian / Ubuntu ------------------ 
chown -R www-data:www-data /websrv/svn/tecmint

Infine, dovrai modificare il contesto di sicurezza di /websrv/svn/tecmint (nota che dovrai ripetere questo passaggio se decidi di creare altri repository in seguito):


------------------ On CentOS / RHEL / Fedora ------------------ 
chcon -R -t httpd_sys_content_t /websrv/svn/tecmint/
chcon -R -t httpd_sys_rw_content_t /websrv/svn/tecmint/

Nota: gli ultimi due comandi potrebbero non essere applicabili se stai installando SVN su un VPS con SELinux disabilitato.

Lettura consigliata: scopri come disattivare SELinux temporaneamente o permanentemente in Linux

Riavvia Apache e verifica che il repository sia disponibile.


------------------ On CentOS / RHEL / Fedora ------------------ 
systemctl restart httpd

------------------ On Debian / Ubuntu ------------------ 
systemctl restart apache2

Quindi avvia un browser web e puntalo su http://192.168.0.100/svn/tecmint. Dopo aver inserito le credenziali per l'utente valido che abbiamo creato nel Passaggio 1, l'output dovrebbe essere simile a:

A questo punto non abbiamo aggiunto alcun codice al nostro repository. Ma lo faremo tra un minuto.

Passaggio 4: installare TortoiseSVN nel client Windows 7

Come accennato nell'introduzione, TortoiseSVN è un'interfaccia intuitiva per Apache Subversion. È un software gratuito concesso in licenza sotto GPL e può essere scaricato da https://tortoisesvn.net/downloads.html.

Scegli l'architettura (32 o 64 bit) che corrisponde al tuo computer e installa il programma prima di procedere.

Passaggio 5: impostare il repository SVN sul computer client

In questo passaggio utilizzeremo una cartella denominata webapp all'interno di Documenti. Questa cartella contiene un file HTML e due cartelle denominate script e stili con un file Javascript e CSS (rispettivamente script.js e styles.css) che vogliamo aggiungere al controllo della versione.

Fai clic con il pulsante destro del mouse su webapp e scegli SVN Checkout. Questo creerà una copia locale del repository remoto (che al momento è vuoto) e inizializzerà la cartella per il controllo della versione:

Nell'URL del repository, digita http://192.168.0.100/svn/tecmint e assicurati che la directory di pagamento locale rimanga la stessa, quindi fai clic su OK:

Inserisci il nome utente e la password (fai riferimento al Passaggio 2) e fai clic su OK:

Ti verrà chiesto se desideri effettuare il checkout in una directory non vuota. Conferma per procedere con il pagamento. Una volta completato, apparirà un segno di spunta verde accanto al nome della cartella:

Passaggio 6: conferma delle modifiche e distribuzione dei file nel repository SVN remoto

Fai nuovamente clic con il pulsante destro del mouse su webapp e questa volta scegli Impegna. Successivamente, scrivi un commento descrittivo per identificare in seguito questo commit e controlla i file e le cartelle che desideri distribuire nel repository. Infine, fai clic su OK:

A seconda della dimensione dei file, il commit non dovrebbe richiedere più di un minuto. Una volta completato, vedrai che ora siamo alla revisione 1, che corrisponde alla versione e ai file elencati nell'interfaccia web:

Se più persone lavorano sugli stessi file, ti consigliamo di aggiornare la tua copia locale per avere a disposizione la versione più recente su cui lavorare. Puoi farlo facendo clic con il pulsante destro del mouse su webapp e scegliendo Aggiorna dal menu contestuale.

Congratulazioni! Hai configurato con successo un server SVN e hai confermato/aggiornato un semplice progetto sotto il controllo della versione.

Riepilogo

In questo articolo abbiamo spiegato come installare e configurare un server di repository Apache Subversion su un server CentOS 7 e come eseguire il commit delle modifiche a quel repository utilizzando TortoiseSVN.

Tieni presente che c'è molto di più su SVN e TortoiseSVN oltre a quello che possiamo adeguatamente trattare qui (specialmente come tornare alle revisioni precedenti), quindi potresti voler fare riferimento al sito ufficiale documenti (SVN e TortoiseSVN) per ulteriori informazioni e casi di configurazione.

Come sempre, non esitate a farci sapere se avete domande! Sentiti libero di utilizzare il modulo di commento qui sotto per contattarci in qualsiasi momento.