Installation sous Debian
Remarques :
L’ensemble des manipulations utilisent des dépôts au format BDB (barkley database). Le format FSFS (système de fichier natif) n’est pas documenté ici.
Le serveur est sous Debian Etch.
On installe svn :
aptitude install subversion |
Création des dépôts, dans le cas présent, on crée un dépôt pour les sites web et un pour le code source des logiciels :
| mkdir /home/svn
mkdir /home/svn/repo
svnadmin create --fs-type bdb /home/svn/repo/siteweb
svnadmin create --fs-type bdb /home/svn/repo/software
chown -R www-data:www-data /home/svn
|
On install apache et le module svn :
| aptitude install apache2
aptitude install libapache2-mod-dav libapache2-svn
aptitude install libapache2-mod-svn
|
On remarquera le :
| Enabling dav as a dependency
Module dav installed; run /etc/init.d/apache2 force-reload to enable.
Module dav_svn installed; run /etc/init.d/apache2 force-reload to enable.
|
à la fin, il reste donc à relancer apache2
/etc/init.d/apache2 force-reload |
On édite le fichier par défaut du serveur :
vim /etc/apache2/sites-enabled/000-default |
Et on y ajoute les répertoires /svnxxx
| <VirtualHost *>
...
<Location /svn>
DAV svn
Require valid-user
SVNParentPath /home/svn/repo
AuthType Basic
AuthName "Exhaustif Depot"
AuthUserFile /home/svn/htpasswd
AuthzSVNAccessFile /home/svn/access
</Location>
</VirtualHost>
|
Pour avoir un dépôt accessible en anonyme en lecture, on remplacera Require valid-user par
| <LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
|
Et on recharge la configuration
invoke-rc.d apache2 reload |
Maintenant http://monserveur/svn_sites/ permet d’y accèder ... mais demande un mot de passe. On va donc configurer les droits d’accès.
On crée le fichier avec les mots de passe et on initialise un administrateur
htpasswd -cb /home/svn/htpasswd admin MotDePasseAdmin |
On peut ensuite ajouter des utilisateurs (en enlevant le -c qui force la création du fichier
htpasswd -b /home/svn/htpasswd tonton MotDePasseDeTonton |
On règle maintenant qui aura accès à quoi :
[groups]
admins = admin
[siteweb:/]
@admins = rw
[siteweb:/exhaustif]
tonton = rw
[software:/]
@admins = rw
|
Ce serveur n’aura pas d’accès anonyme, il faudra forcément un code pour y accéder.
L’adresse devient donc :
| http://monserveur/svn/siteweb
http://monserveur/svn/software
|
Installation en SSL
On ajoute ssl à apache :
apt-get install libapache-mod-ssl |
Et on l’active :
| a2enmod ssl
invoke-rc.d apache2 force-reload
|
On ajoute le port 443 à écouter
vim /etc/apache2/ports.conf |
| Listen 80
Listen 443
|
On crée un nouveau certificat :
| cd /etc/ssl/certs/
openssl req -new > exhaustif.com.csr
|
Commande pour "enlever" la phrase de mot de passe, afin de ne pas devoir la renseigner au prochain redémarrage d’Apache (optionnel) :
openssl rsa -in privkey.pem -out exhaustif.com.key |
Enfin, création à proprement dit du certificat (.crt) et de la clef (.key) :
openssl x509 -in exhaustif.com.csr -out exhaustif.com.cert -req -signkey exhaustif.com.key -days 365 |
cd /etc/apache2/sites-available |
vim default.ssl |
| NameVirtualHost *:443
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
RedirectMatch ^/$ /apache2-default/
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/exhaustif.com.cert
SSLCertificateKeyFile /etc/ssl/certs/exhaustif.com.key
CustomLog /var/log/apache2/ssl-access.log combined
ErrorLog /var/log/apache2/ssl-error.log
<Location /svn>
DAV svn
Require valid-user
SVNParentPath /home/svn/repo
AuthType Basic
AuthName "Exhaustif Depot"
AuthUserFile /home/svn/htpasswd
AuthzSVNAccessFile /home/svn/access
</Location>
</VirtualHost>
|
On active le fichier de conf du site en ssl :
Et on recharge apache :
invoke-rc.d apache2 restart |
et pour finir on teste avec firefox :
et avec svn :
https://monserveur/svn/siteweb |
Sauvegarde
Il est important de bien sauvegarder son dépôt sur un autre serveur (ou au pire une clef usb) et ce de manière très régulière.
Pour réaliser un dump dans un seul fichier des dépôts :
| svnadmin dump /home/svn/repo/siteweb > /home/svn/dump.siteweb.bdb
svnadmin dump /home/svn/repo/software > /home/svn/dump.software.bdb
|
On pourra ensuite compresser les fichier
| gzip -9 /home/svn/dump.siteweb.bdb
gzip -9 /home/svn/dump.software.bdb
|
Restauration
Pour restaurer un dump :
|
svnadmin create /home/svn/repo/siteweb
cat /home/svn/dump.siteweb.bdb | svnadmin load -q /home/svn/repo/siteweb
svnadmin verify /home/svn/repo/siteweb
|
Clients windows
Remarque concernant les clients windows : ceux-ci conservent les codes d’accès dans un répertoire : C :\Documents and Settings\USER\Application Data\Subversion. Si vous souhaitez tester la sécurité du système, il faut le supprimer avant chaque test. Sinon vous aurez toujours le dernier code correcte en mémoire et vous ne pourrez voir quand l’accès est refusé.
Sur le web
Site officiel svn
Quelque pages bien utiles :
Installation avec Apache
Apache+SSL
Svn : Apache SSL Debian
Configuration d’Apache pour svn
Installation SSL sur apache
|