You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
blog/posts/2017/2017-02-10-serveur-svn.md

100 lines
2.6 KiB
Markdown

5 years ago
<!-- title: Un serveur SVN en 5 minutes -->
<!-- category: Développement -->
<!-- tag: planet -->
5 years ago
Bien qu'on soit en 2017, on peut avoir besoin d'un gestionnaire de source
centralisé et Subversion reste une valeur sure.<!-- more --> On va donc s'installer un
serveur SVN sur Debian Jessie en 5 minutes chrono.
D'abord on installe SVN et on crée un répertoire pour les données.
$ apt-get install subversion
$ mkdir -p /srv/svn/repos
Et on initialise un dépôt (aka *repository*) nommé "yaxsoft".
$ svnadmin create /svn/repos/yaxsoft
On ajoute des droits d'accès simples : un utilisateur en lecture-écriture, pas
d'accès anonyme.
Editer */srv/svn/repos/yaxsoft/svnserve.conf* :
[general]
password-db = passwd
authz-db = authz
realm = Yax Repo
Editer */srv/svn/repos/yaxsoft/conf/authz* :
[groups]
dev = yannic
[/]
* =
@dev = rw
Editer */srv/svn/repos/yaxsoft/conf/passwd* :
[users]
yannic = mon_mot_de_passe
On crée un répertoire pour les logs :
$ mkdir -p /var/log/svn
On ajoute un utilisateur UNIX *svn* qui va lancer le serveur et aura les
permission sur les fichiers de données :
$ adduser svn --system --disabled-login --no-create-home --group
$ chown -R svn:svn /srv/svn /var/log/svn
On crée le fichier avec les paramètres de lancement du service */etc/default/svnserve* :
DAEMON_ARGS="--daemon --pid-file /srv/svn/svnserve.pid --root /srv/svn/repos --log-file /var/log/svn/svnserve.log"
Enfin, on définit le recyclage des logs avec un fichier */etc/logrotate.d/svn* :
/var/log/svn/*.log {
daily
missingok
rotate 10
compress
notifempty
create 640 svn svn
sharedscripts
postrotate
if /bin/systemctl status svnserve > /dev/null ; then \
/bin/systemctl restart svnserve > /dev/null; \
fi;
endscript
}
Il reste à créer un fichier de lancement pour **systemd** : */etc/systemd/system/svnserve.service* :
[Unit]
Description=Subversion daemon
After=syslog.target network.target
[Service]
Type=forking
PIDFile=/srv/svn/svnserve.pid
EnvironmentFile=/etc/default/svnserve
ExecStart=/usr/bin/svnserve $DAEMON_ARGS
ExecReload=/bin/kill -s SIGHUP $MAINPID
User=svn
Group=svn
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Finalement, on met le service en démarrage automatique et on lance notre serveur SVN :
$ systemctl daemon-reload
$ systemctl enable svnserve
$ systemctl start svnserve
Notre SVN est accessible en **svn://mon_serveur/yaxsoft**.