Apache Subversion, spesso abbreviato in SVN, è un sistema di controllo di versione, distribuito come software open-source.
Attraverso Subversion potrai accedere a una cronologia completa delle modifiche apportate ai file e alle cartelle del tuo server, gestite con il sistema di versioning, e sarai in grado di recuperare versioni precedenti dei tuoi dati, salvaguardandone così la reversibilità.
In questa guida trovi tutti i passaggi necessari per installare e configurare un server Subversion su Apache Ubuntu 18.04.
Installare Apache
Per accedere al server Subversion è necessario installare il web server Apache.
sudo apt-get update
sudo apt-get install apache2 -y
Controlla lo status di Apache con il comando:
sudo systemctl status apache2
Qualora non dovesse essere in esecuzione, attivalo tramite il comando:
sudo systemctl start apache2
Adesso abilita l’avvio di Apache al boot del sistema:
sudo systemctl enable apache2
Installare il server Subversion
Utilizza il seguente comando per installare Subversion e tutte le dipendenze necessarie:
sudo apt-get install subversion libapache2-mod-svn -y
In seguito all’installazione per essere sicuro che siano attivi i moduli necessari, digita:
sudo a2enmod dav dav_svn authz_svn
Riavvia quindi il servizio Apache tramite il comando:
sudo service apache2 restart
Configurare Apache Subversion
Come prima operazione devi creare una cartella che conterrà tutti i file di Subversion:
sudo mkdir -p /opt/svn
Crea un repository per SVN (in questo caso si chiamerà “tutorial”) e definisci il proprietario.
sudo svnadmin create /opt/svn/tutorial
sudo chown -R /opt/svn/tutorial/
sudo chmod -R 775 /opt/svn/tutorial
Arrivato a questo punto devi creare gli utenti autorizzati ad agire sul repository. Per farlo digita:
sudo htpasswd -cm /etc/svn-auth-users user_name
Ti verrà richiesto di inserire una password con la quale l’utente potrà autenticarsi con il sistema.
Ripeti questo passaggio per creare tutti gli utenti che possono accedere al repository.
Ora devi creare un file di configurazione per l’Host Virtuale di Apache.
Recati nella cartella “sites-available” di apache2:
cd /etc/apache2/sites-available/
Crea un file di configurazione per il repository:
sudo nano tutorial.conf
Nel file appena creato ed aperto incolla il seguente codice:
ServerName svn.tutorial.com
ServerAlias svn.tutorial.com
DAV svn
SVNParentPath /opt/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/svn-auth-users
Require valid-user
ErrorLog ${APACHE_LOG_DIR}/svn.tutorial.com-error.log
CustomLog ${APACHE_LOG_DIR}/svn.tutorial.com-access.log combined
Salva ed esci.
Disabilita e riabilita l’Host Virtuale, per rendere effettivo il file di configurazione appena scritto, mediante i comandi:
sudo a2dissite 000-default.conf
sudo a2ensite tutorial.conf
Per verificare che sia tutto stato scritto correttamente, digita il seguente comando e verifica che vi sia scritto “Syntax OK” come ultimo rigo.
sudo apachectl -t
A questo punto non ti resta che riavviare Apache con il comando:
sudo systemctl restart apache2
Testare il server Subversion
Apri il browser e digita il seguente URL: http://localhost/svn/tutorial
Quando ti chiederà Username e Password utilizza i dati utilizzati quando hai creato gli utenti.
Recati sul terminale e crea un primo progetto digitando:
svn mkdir file:///opt/svn/tutorial/project_name -m "added project_name repository"
Il “project_name” scelto per questo tutorial è “Project”.
All’interno del progetto crea le cartelle nelle quali memorizzare i diversi file con il seguente comando:
sudo svn mkdir file:///opt/svn/tutorial/project_name/folder_name -m "added folder_name to project_name"
Se desideri cancellare una cartella o un progetto utilizza i seguenti comandi:
Impostare Backup Automatici
Crea una cartella una cartella dove effettuare i backup:
sudo mkdir -p /etc/backups
Entra in modalità root ed aggiungi una regola al Crontab:
sudo su -
crontab -e
Aggiungi la seguente regola al Crontab per far eseguire i backup ogni giorno a mezzanotte:
0 0 * * * svnadmin dump /opt/svn/tutorial> /etc/backups/backup-$(date +%Y%m%d).dump
Puoi anche decidere di effettuare un backup manuale, ma per evitare di avere conflitti di file con lo stesso nome, ti conviene rinominare il nome del file di backup. Per effettuare questo tipo di backup digita:
svnadmin dump /opt/svn/tutorial > /etc/backups/manual_backup_name.dump
Ripristinare un Repository da Backup
Se vuoi ripristinare un backup precedentemente effettuato, devi creare un nuovo Repository e indicarlo come punto sul quale ripristinare il backup desiderato.
svnadmin create /opt/svn/restored_repository
svnadmin load /opt/svn/restored_repository < /etc/backups/svn_backup_name.dump