CVS ed SVN, impariamo cosa sono e come creare un repository parte 2°

Linux Add comments

Rieccoci con il nostro tutorial sui repository svn, prima abbiamo visto cosa sono questi repository cvs/svn, adesso che sappiamo anche il principio di funzionamento possiamo iniziare a vedere cosa dobbiamo fare per crearne uno.

Con questa ultima parte vedremo che software ci serve per avere un repository di tipo SVN, con autenticazione tramite set di chiavi pubbliche/private, su tunnel ssh.

L’accesso visivo sarà garantito da un estensione di apache che ci consentirà di effettuare il browsing del repository via web con il nostro browser.

Installazione dei pacchetti

I pacchetti che ci servono sono solo due:

:~# apt-get update
:~# apt-get install subversion libapache2-svn

con l’ultimo pacchetto ci tireremo dietro come dipendenza anche il modulo di apache per svn webdav.

Preparazione del filesystem

In questo tutorial creeremo un solo repository e per comodità lo metteremo nella home dell’utente root.

:~# mkdir /root/svn-repo/
:~# svnadmin create –fs-type fsfs /root/svn-repo/progetto1

Adesso dobbiamo settare le cartelle con i permessi adeguati, siccome dare i permessi all’utente www-data sarebbe troppo poco sicuro, creeremo un gruppo chiamato subversion e dentro inseriremo gli utenti di sistema che dovranno avere accesso al repository.

:~# groupadd subversion
:~# addgroup mario subversion
:~# addgroup alex subversion
:~# chown -R www-data:subversion /root/svn-repo
:~# chmod -R 570 /root/svn-repo

Preparazione delle chiavi per autenticazione ssh

Finita la preparazione del filesystem e la creazione del repository vero e proprio, dobbiamo garantire l’accesso tramite un canale abbastanza sicuro al repository stesso, da parte degli utenti. Per far questo ci appoggiamo ad ssh, ma per semplificare le operazioni di autenticazione creeremo un set di chiavi DSA pubblica/privata, in modo che l’autenticazione avvenga senza richiesta di password; ricordiamoci di NON inserire una password durante la procedura di creazione chiavi altrimenti saremo punto e a capo.

L’operazione è da compiere con tutti gli utenti del sistema che dovranno accedere al repository.

:~# su mario
:~$ mkdir ~/.ssh
:~$ cd ~/.ssh
:~/.ssh$ ssh-keygen -t dsa
:~/.ssh$ cat id_dsa.pub|ssh mario@server.ext "cat – >> ~/.ssh/authorized_keys"

server.ext ovviamente è il nome host del server che stiamo usando. Ripetiamo la stessa operazione per ogni utente e poi testiamo il funzionamento.

:~$ mkdir ~/TEMP
:~$ echo "test del repository" > ~/TEMP/test.txt
:~$ svn import -m "importo il file di test su svn+ssh" ~/TEMP/ svn+ssh://server.ext/root/svn-repo/progetto1/trunk
:~$ svn co svn-ssh://server.ext/root/svn-repo/progetto1/trunk testcheckout

seguendo questi comandi dovremmo ritrovarci alla fine una cartella chiamata testcheckout con dentro un file test.txt con dentro scritto "test del repository", ce l’avete? complimenti il vostro repository funziona allora :)

Lato server possiamo dare un occhio all’intero repository lanciando il comando:

:~# svnlook tree /root/svn-repo/progetto1

Configurazione di WebDAV per il browsing via HTTP

Adesso che il repository è a posto potremmo voler garantire l’accesso (in sola lettura ovviamente), ai client via l’utilizzo di un normale browser internet, abilitiamo i moduli di apache che ci servono:

:~# a2enmod dav
:~# a2enmod dav_svn

tutta la configurazione la possiamo controllare in /etc/apache2/mods-available/dav_svn.conf. Eventualmente potremmo voler garantire l’accesso web solo agli utenti che effettivamente devono utilizzare il repository, per farlo creiamo un file .htpasswd inserendoci gli utenti da noi interessati:

:~# htpasswd2 -c /etc/apache2/dav_svn.passwd mario
:~# htpasswd2 /etc/apache2/dav_svn.passwd alex

adesso l’accesso web è garantito solo agli utenti mario ed alex, e questi dovranno inserire le proprie credenziali di accesso al server per vedere il repository svn anche via web. Di seguito un esempio del file /etc/apache2/mods-available/dav_svn.conf:

<Location /svn_progetto1>
DAV svn
SVNpath /root/svn-repo/progetto1
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
SSLRequireSSL
</Location>

Com’è facile intuire con la direttiva RequireSSL forziamo l’accesso solo tramite HTTPS, commentandola otterremo l’accesso solo tramite HTTP.

Adesso possiamo testare da un pc client l’accesso remoto via https:

:~$ svn import -m "test import via https" https://server.ext/svn_progetto1 ~/TEMP

con webdav abbiamo un browsing molto semplicistico del repository, se utilizziamo invece tool quali websvn possiamo ottenere un controllo più completo del repository via browser.

Installazione e configurazione di WebSVN

Installiamo questi due pacchetti:

:~# apt-get install enscript websvn

enscript non è necessario, ma lo utilizzeremo per ottenere la colorazione dei caratteri su websvn.

Durante la configurazione di websvn ci verranno poste alcune domande, alla prima "quale tipo di server vuoi configurare" possiamo premere semplicemente Invio ed andare avanti; la seconda domanda ci chiede il path del repository e noi dovremo impostare /root/svn-repo, ed inoltre ci verranno richieste le cartelle specifiche dei progetti, utile per decidere quali progetti pubblicare su websvn e quali no.

Alla fine della configurazione avremo creato un file di configurazione dentro /etc/websvn/svn_deb_conf.inc; ulteriori configurazioni possono essere fatte tramite il file /etc/websvn/config.inc, un esempio di quest’ultimo file è il seguente:

<?php
// — LOOK AND FEEL —
//
// Uncomment ONLY the display file that you want.
$config->setTemplatePath("$locwebsvnreal/templates/Standard/");
// $config->setTemplatePath("$locwebsvnreal/templates/BlueGrey/");
// $config->setTemplatePath("$locwebsvnreal/templates/Zinn/");
// $contentType[".c"] = "plain/text"; // Create a new association
// $contentType[".doc"] = "plain/text"; // Modify an existing one
unset($contentType[".sh"]); // Remove a default association -> .sh
// is regarded as a binary file by default, needs to be unset
// — COLOURISATION —
// Uncomment this line if you want to use Enscript to colourise your file listings
//
// You’ll need Enscript version 1.6 or higher AND Sed installed to use this feature.
// Set the path above.
//
$config->useEnscript();
// Enscript need to be told what the contents of a file are so that it can be colourised
// correctly. WebSVN includes a predefined list of mappings from file extension to Enscript
// file type (viewable in setup.inc).
//
// Here you should add and other extensions not already listed or redefine the default ones. eg:
//
// php is default correctly colourized
$extEnscript[".java"] = "java";
$extEnscript[".pl"] = "perl";
$extEnscript[".py"] = "python";
$extEnscript[".sql"] = "sql";
$extEnscript[".java"] = "java";
$extEnscript[".html"] = "html";
$extEnscript[".xml"] = "html";
$extEnscript[".thtml"] = "html";
$extEnscript[".tpl"] = "html";
$extEnscript[".sh"] = "bash";
// — MISCELLANOUS —
// Uncomment this if you don’t have the right to use it. Be warned that you may need it however!
set_time_limit(0);
// Comment this line to turn off caching of repo information. This will slow down your browsing.
$config->setCachingOn();
// Number of spaces to expand tabs to in diff/listing view across all repositories
$config->expandTabsBy(8);
// To change the global option for individual repositories, uncomment and replicate
// the required line below (replacing ‘myrep’ for the name of the repository to be changed).
// $config->findRepository("myrep")->expandTabsBy(3); // Expand Tabs by 3 for repository ‘myrep’
?>
<?php
if ( file_exists("/etc/websvn/svn_deb_conf.inc") ) {
include("/etc/websvn/svn_deb_conf.inc");
}
?>

Adesso è il turno del virtualhost di apache per websvn:

<VirtualHost *:443>
ServerAdmin webmaster@server.ext
ServerName svn.server.ext
DocumentRoot /var/www/websvn/
<Location />
Options FollowSymLinks
order allow,deny
allow from all
AuthType Basic
AuthName "Subversion Repository"
Require valid-user
AuthUserFile /etc/apache2/dav_svn.passwd
<IfModule mod_php4.c>
php_flag magic_quotes_gpc Off
php_flag track_vars On
</IfModule>
</Location>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
</VirtualHost>

Fatto? Ok adesso riavviate apache…

:~# /etc/init.d/apache2 restart

e date un occhiata al vostro bel repository all’indirizzo  https://svn.server.ext ;)

Condividi il post coi tuoi amici:
  • Print this article!
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • BarraPunto
  • BlinkList
  • blogmarks
  • co.mments
  • E-mail this story to a friend!
  • Fark
  • Fleck
  • FriendFeed
  • Gwar
  • HelloTxt
  • Identi.ca
  • laaik.it
  • LinkaGoGo
  • LinkArena
  • LinkedIn
  • Live
  • MSN Reporter
  • MySpace
  • Netvibes
  • NewsVine
  • Turn this article into a PDF!
  • Ping.fm
  • Reddit
  • Segnalo
  • Slashdot
  • StumbleUpon
  • Technorati
  • Twitter
  • Wikio IT
  • Yahoo! Bookmarks
  • Yigg
  • Blogosphere News
  • DZone

Articoli (forse) correlati:

  1. CVS ed SVN, impariamo cosa sono e come creare un repository
  2. Creare un relay antispam – parte 2°
  3. Creare un pacchetto debian – parte 3°
  4. Creare un pacchetto debian – parte 2°
  5. RAID, impariamo cos’è ed utilizziamolo su Ubuntu (4° Parte – L’installazione)

2 Responses to “CVS ed SVN, impariamo cosa sono e come creare un repository parte 2°”

  1. Nicola Greco Says:

    Ottima guida,
    grazie alessà

    Ottima guida,

    grazie alessà ;)

  2. M0rF3uS Says:

    Ottima guida
    Lo so…

    Ottima guida
    

    Lo so… :cool

    prego ;)

Leave a Reply

 

CSS XHTML