Configurare Subversion su Debian Etch con SSL (e anche su Ubuntu)

Qualche giorno fa ho configurato Subversion (SVN) su un server Debian. La procedura è abbastanza facile però, come al solito, le guide che si trovano in rete o sono obsolete oppure si riferiscono ad altre distribuzioni e quindi i passaggi possono essere differenti.

Questo articolo spiega tutti i passi necessari per configurare Subversion su Debian (etch) con il supporto per SSL. La procedura descritta dovrebbe essere applicabile con pochissime variazioni a tutte le distribuzioni basate su Debian come ad esempio su Ubuntu.

subversion

Subversion può funzionare in diversi modi. In questa guida viene illustrata la configurazione necessaria per accedere al repository SVN tramite il protocollo HTTPS. Per fare questo è necessario il server Apache.

Il primo passo è installare il software necessario. Ricordo che tutti i comandi devono essere eseguiti (ovviamente) da root.

apt-get install apache2 subversion libapache2-svn

Dopo aver installato i pacchetti si deve abilitare il modulo ssl.

a2enmod ssl

A questo punto si configura Apache per accettare le richieste sulla porta 443 (HTTPS). Per fare ciò è sufficiente aggiungere al file /etc/apache2/ports.conf la riga:

Listen 443

Un metodo veloce per farlo è:

if ! grep -q 443 /etc/apache2/ports.conf ; then echo "Listen 443" >> /etc/apache2/ports.conf ; fi

Fatto questo si deve creare il cerficato per SSL. Solitamente si crea nella directory /etc/apache2/ssl:

mkdir /etc/apache2/ssl
make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
chmod 600 /etc/apache2/ssl/apache.pem

Quindi si crea la configurazione per il server virtuale. Per farlo basta copiare il file di default e apportare qualche piccola modifica:

cp /etc/apache2/sites-available/default /etc/apache2/sites-available/default-ssl

Bisogna sostuire la riga:

NameVirtualHost *

con:

NameVirtualHost *:443

e poi la riga:

<VirtualHost *>

con:

<VirtualHost *:443>

infine, prima di:

</VirtualHost>

si aggiunge:

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM

Ora è possibile abilitare il virtual server in ascolto sulla porta 443 con il comando:

a2ensite default-ssl

Fatto questo la configurazione di Apache è praticamente completata.

Ora è necessario configurare il repository SVN. Per farlo bisogna innanzitutto editare il file /etc/apache2/mods-available/dav_svn.conf che dovrà contenere qualcosa del tipo:

<Location /svn>
  DAV svn
  SVNPath /var/lib/svn/NOME_REPOSITORY
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd
  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept>
</Location>

In questo esempio ho impostato svn come nome del server e /var/lib/svn/NOME_REPOSITORY come percorso del repository.
Il file /etc/apache2/dav_svn.passwd si crea con il comando:

htpasswd -c /etc/apache2/dav_svn.passwd NOMEUTENTE

Dove al posto di NOMEUTENTE si scrive il nome dell'utente che avrà accesso al repository SVN.

I comandi necessari alla creazione del repository vero e proprio sono:

mkdir /var/lib/svn
svnadmin create  /var/lib/svn/NOME_REPOSITORY
chown -R www-data:www-data  /var/lib/svn
chmod -R g+ws /var/lib/svn

Infine si deve riavviare il server Apache con il classico:

/etc/init.d/apache2 restart

Per testare il funzionamento del sistema si può aggiungere un file al server con il comando:

touch ~/file_di_prova
svn import ~/file_di_prova https://localhost/svn/NOME_REPOSITORY -m "Test importazione"

Ora che il server è installato, configurato e funzionante, consiglio di leggere il manuale di subversion per i vari comandi necessari al commit/checkout dei file.

questo weekend potrebbe essere ideale per le pulizie di primavera...
1) pulire la GigiMobile 2.0
2) depurare da cose obsolete e defraggare la mia camera
3) se avanza tempo... sostituire Winsoz con un Linux sul PC fisso
3.1) che fai FiNeX questo weekend?
3.2) non sono molto aggiornato ultimamente quindi:
3.2.1) sono stati risolti gli annosi problemi di scrittura su NTFS? (vincolo al passaggio. Ho dati e un repository in SVN che non voglio e NON POSSO perdere)
3.2.2) quale distro mi conviene? Kubuntu (c'é la 8.04?)? Archlinux (e mi dai una mano?) ?
3.3) Il catalogo in rails è in beta, non localizzata, non profilata per utente (ma con RoR è un attimo aggiungere moduli esterni in più) e mancano alcune funzioni per velocizzare l'archiviazione e una stampa in pdf del catalogo aggiornato. Ma almeno funziona. Sto iniziando a popolare il db postgres e vorrei continuare. Vuoi vederlo?

Per i punti 1 e 2 dovrai fare da solo, invece per i rimanenti:
3) buona idea
3.1) sabato pomeriggio potrei rompere le scatole a te, venerdì e domenica sono out.
3.2.1) decisamente sì... ma non ti conviene spostare tutto su una ext3?
3.2.2) dipende da alcuni fattori: che ambiente preferisci (immagino KDE dalla tua domanda) e da quanto vuoi metterci le mani.
3.3) molto volentieri.

3.2.3) ci sono evoluzioni pe il montaggio video? altrimenti devo capire come utilizzare Pinnacle sotto Linux attraverso una virtual machine.

R3.2.1) devo vedere di comprimere i dati di due hard disk esterni in uno e poi fare lo swap per la formattazione in ext3. Tento ma non prometto.
La pornografia che archivio per te è tanta! :P

R3.2.2) Dato che ci siamo finisco il "set-up" del portatile. Ho messo Arch, una scheggia, ma mancano tutti i programmi. :(

R3.3) col tuo aiuto ci sono margini di miglioramento. :D
Ho trovato dei limiti e bizzarrie in ActiveScaffold.

Ti aspetto sabato, o ti faccio sapere se ci sono impegni personali.
Ciao

Visto che vai da lui, poi passi da me ed eviti che formatti tutto al momento del partizionamento del disco?!?!? :P
Questo week-end conto di installare Kubuntu 8.04, forse...

Bravissimo! Per quanto datata ottimo starting point