Forum Linux.debian/ubuntu lancer svnserve avec jessie (systemd?)

Posté par . Licence CC by-sa
Tags : aucun
1
8
mar.
2016

Bonjour,

une petite question de débutant.
J'aimerai bien lancer le deamon svnserve (serveur subversion) sur debian 8.
Mais avec la contrainte suivante : je ne veux pas le lancer avec webDAV, mais en autonome.

Dans une version assez ancienne de debian, j'avais un petit script qui faisait un gros un svnserve -d -r <chemin_depots>

J'ai un petit peu entendu parlé de systemd, et maintenant que j'installe une version à jour, j'aimerai bien savoir comment faire pour lancer proprement le serveur (pour qu'on puisse le piloter avec les commandes systemd par exemple)

Actuellement, j'en suis ici :
j'ai fait le apt-get install subversion
puis mkdir /var/svn/depots
puis crée un depot :
mkdir /var/svn/depot/truc
svnadmin create --fs-type fsfs /var/svn/depots/truc

voilà, maintenant comment on fait pour lancer le demon en "service" ?
merci d'avance.

  • # Alors moi

    Posté par (page perso) . Évalué à 2. Dernière modification le 08/03/16 à 21:18.

    Je ferais un truc comme ça (non testé)

    [Unit]
    Description=SVN-Truc
    Requires=After=apache.service
    
    [Service]
    #WorkingDirectory=<chemin_depots> (au besoin?)
    ExecStart=svnserve -d -r <chemin_depots>
    Restart=always
    RestartSec=10                       # Restart service after 10 seconds if svn service crashes
    StandardOutput=syslog               # Output to syslog
    StandardError=syslog                # Output to syslog
    SyslogIdentifier=svn-truc
    User=svn                            # RunUser
    Group=svn                           # RunUserGroup
    #Environment=MYVAR=FOO              # SET ENV if needed
    
    [Install]
    WantedBy=multi-user.target

    Tu fou ça sous /lib/systemd/system/svn-truc.service
    Puis systemctl daemon-reload

    Is it a Bird? Is it a Plane?? No, it's Super Poil !!!

    • [^] # Re: Alors moi

      Posté par (page perso) . Évalué à 2.

      Deux commentaires :

      • Requires=After=apache.service : tu as un After= en trop.
      • /lib/systemd/system/svn-truc.service : pourquoi utiliser /lib au lieu de /etc ?

      Debian Consultant @ DEBAMAX

      • [^] # Re: Alors moi

        Posté par . Évalué à 1.

        Merci pour vos commentaires.
        J'ai adapté un peu le fichier service (svn-srv.service)
        - pour require, il ne connaissait pas "apache.service" alors j'ai mis "system-networkd.service"
        - le système voulait un ExecReload, j'ai mis ExecReload=/usr/bin/killall -s SIGHUP svnserve
        - pour simplifier les tests, j'ai désactivé les lignes User et Group (je teste donc avec le user root dans un 1er temps)
        - j'ai augmenté le RestartSec à 60 sec.
        - j' ais mis la commande ExecStart=/usr/bin/svnserve -d -r /var/svn/depots

        Concernant la commande donnée(systemctl daemon-reload) ou bien que je tappe la commande "systemctl start svn-srv", il n'y a pas (plus) d'erreur retourné sur la console.

        Neanmoins j'ai un petit soucis, j'ai l'impression que c'est pas bon, car quand je demande "systemctl status svn-srv" j'ai ceci :

        svn-srv.service - svn-srv
        Loaded: loaded (/etc/systemd/system/svn-srv.service; disabled)
        Active: activating (auto-restart) since mer. 2016-03-09 11:27:52 CET; 11s ago
        Process: 5489 ExecStart=/usr/bin/svnserve -d -r /var/svn/depots (code=exited, status=0/SUCCESS)
        Main PID: 5489 (code=exited, status=0/SUCCESS)
        

        Je vois donc "disabled"ou des trucs comme "code=exited"… et surtout je ne depasse jamais 60 secondes.. j'ai l'impression qu'il plante et relance toutes les 60 secondes.. pour plante t-il ?

        Merci pour vos suggestions et vos aide sur systemd.
        Salutations,

        • [^] # Re: Alors moi

          Posté par . Évalué à 1.

          voici a quoi ressemble le fichier /etc/systemd/system/svn-srv.service avec les modifs

          [Unit]
          Description=svn-srv
          Requires=systemd-networkd.service

          [Service]
          #WorkingDirectory= (au besoin?)
          ExecStart=/usr/bin/svnserve -d -r /var/svn/depots
          Restart=always

          RestartSec=60

          StandardOutput=syslog
          StandardError=syslog

          SyslogIdentifier=svn-srv
          ExecReload=/usr/bin/killall -s SIGHUP svnserve

          #User=svn # RunUser
          #Group=svn # RunUserGroup
          #Environment=MYVAR=FOO # SET ENV if needed

          [Install]
          WantedBy=multi-user.target

    • [^] # Re: Alors moi

      Posté par . Évalué à 3.

      Attention, l'option -d de svnserve lui dit de se "daemonizer", c'est à dire de se détacher de lui-même de son processus parent pour tourner en arrière-plan.
      Si tu veux fonctionner comme ça, il faut le dire à systemd avec l'option

      Type=forking

      et pour bien faire il faudrait ajouter l'option PIDFile pour que systemd sache quel est le processus à arrêter, et ajouter à la ligne de commande l'option --pid-file pour dire à svnserve où enregistrer son fichier PID.

      Voir la documentation via man systemd.service

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.