Differences between revisions 4 and 5
Revision 4 as of 2020-03-12 15:13:19
Size: 1331
Comment: renamed like the English master - no sync-ed yet
Revision 5 as of 2020-03-14 12:13:39
Size: 4617
Comment: sync with English master v. 11
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
||<tablestyle="width: 100%;" style="border: 0px hidden">~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[SmallSVNAdministrationTutorial|English]] - Italiano-~||<style="text-align: right;border: 0px hidden"> (!) [[/Discussion|Discussion]]|| ||<tablestyle="width: 100%;" style="border: 0px hidden">~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[SVNAdministrationTutorial|English]] - Italiano-~||
Line 5: Line 5:
Sebbene il pacchetto DebianPackage:subversion fornisce un leggero server subversion, '''DebianMan:svnserve''', non fornisce i mezzi per eseguire questo server come servizio. Qui verranno discussi due modi per farlo.
Line 6: Line 7:
= Esecuzione da inetd = = Esecuzione di svnserve usando systemd =

I sistemi Debian moderni usano [[it/systemd|systemd]] per l'esecuzione e la gestione dei servizi, perciò è meglio avviare il server '''svnserve''' usando systemd.

Come prima cosa, creare un utente di sistema per eseguire il servizio (root non è necessario ed è un po' insicuro).

{{{
# useradd -r svn
}}}

Poi creare un repository svn radice e darne la proprietà all'utente svn

{{{
# mkdir -p /srv/svn/repos; chown svn /srv/svn/repos
}}}

Creare la configurazione del servizio systemd per svnserve {{{/etc/systemd/system/svnserve.service}}}:

{{{
[Unit]
Description=Subversion protocol daemon
After=syslog.target network.target

[Service]
Type=forking
RuntimeDirectory=svnserve
PIDFile=/run/svnserve/svnserve.pid
EnvironmentFile=/etc/default/svnserve
ExecStart=/usr/bin/svnserve $DAEMON_ARGS
User=svn
Group=svn
KillMode=control-group
Restart=on-failure

[Install]
WantedBy=multi-user.target
}}}

Poi aggiungere le opzioni di avvio del servizio in {{{/etc/default/svnserve}}}:

{{{
# svnserve options
DAEMON_ARGS="--daemon --pid-file /run/svnserve/svnserve.pid --root /srv/svn/repos --log-file /var/log/svnserve/svnserve.log"
}}}

Queste opzioni vengono usate dal servizio per avviare svnserve.

Dopo aver fatto questo, creare una posizione per i file di log e dare all'utente svn i permessi per utilizzarla:

{{{
# mkdir /var/log/svnserve; chown svn /var/log/svnserve
}}}

Aggiungere un file di configurazione per logrotate, per archiviare adeguatamente questo registro di log ogni tanto. {{{/etc/logrotate.d/svnserve}}}:

{{{
/var/log/svnserve/*.log {
    daily
    missingok
    rotate 14
    compress
    notifempty
    create 640 svn adm
    sharedscripts
    postrotate
            if /bin/systemctl status svnserve > /dev/null ; then \
                /bin/systemctl restart svnserve > /dev/null; \
            fi;
    endscript
}
}}}

Da ultimo abilitare il servizio, avviarlo e controllare che funzioni come atteso
{{{
# systemctl enable svnserve.service

# systemctl start svnserve.service

# systemctl status svnserve.service
* svnserve.service - Subversion protocol daemon
   Loaded: loaded (/etc/systemd/system/svnserve.service; enabled)
   Active: active (running) since Tue 2019-12-31 21:53:16 MSK; 39s ago
  Process: 798 ExecStart=/usr/bin/svnserve $DAEMON_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 799 (svnserve)
   CGroup: /user.slice/user-1000.slice/session-31211.scope/system.slice/svnserve.service
           `-799 /usr/bin/svnserve --daemon --pid-file /run/svnserve/svnserve.pid --root /srv/svn/repos --log-file /var/log/svnserve/svnserve.log

Dec 31 21:53:16 svn svnserve[798]: DIGEST-MD5 common mech free
Dec 31 21:53:16 svn systemd[1]: Started Subversion protocol daemon.
}}}

In seguito, il servizio svnserve dovrebbe partire automaticamente all'avvio del sistema.

Questa guida è basata su [[https://stackoverflow.com/questions/38197727/how-to-start-svnserve-with-systemctl-systemd/40584047#40584047 |questa voce in stackoverflow]]

= Esecuzione di svnserve da inetd =
Line 27: Line 123:
''Nota: se si sta cercando un tutorial sull'uso di un client subversion, si veda la pagina [[it/SmallSVNTutorial|SmallSVNTutorial]]'' ----

''Nota: se si sta cercando un tutorial sull'uso di un client subversion, si veda la pagina [[it/SVNTutorial|Tutorial SVN]]''

----

CategorySoftware

Translation(s): English - Italiano


Sebbene il pacchetto subversion fornisce un leggero server subversion, svnserve, non fornisce i mezzi per eseguire questo server come servizio. Qui verranno discussi due modi per farlo.

Esecuzione di svnserve usando systemd

I sistemi Debian moderni usano systemd per l'esecuzione e la gestione dei servizi, perciò è meglio avviare il server svnserve usando systemd.

Come prima cosa, creare un utente di sistema per eseguire il servizio (root non è necessario ed è un po' insicuro).

# useradd -r svn

Poi creare un repository svn radice e darne la proprietà all'utente svn

# mkdir -p /srv/svn/repos; chown svn /srv/svn/repos

Creare la configurazione del servizio systemd per svnserve /etc/systemd/system/svnserve.service:

[Unit]
Description=Subversion protocol daemon
After=syslog.target network.target

[Service]
Type=forking
RuntimeDirectory=svnserve
PIDFile=/run/svnserve/svnserve.pid
EnvironmentFile=/etc/default/svnserve
ExecStart=/usr/bin/svnserve $DAEMON_ARGS
User=svn
Group=svn
KillMode=control-group
Restart=on-failure

[Install]
WantedBy=multi-user.target

Poi aggiungere le opzioni di avvio del servizio in /etc/default/svnserve:

# svnserve options
DAEMON_ARGS="--daemon --pid-file /run/svnserve/svnserve.pid --root /srv/svn/repos --log-file /var/log/svnserve/svnserve.log"

Queste opzioni vengono usate dal servizio per avviare svnserve.

Dopo aver fatto questo, creare una posizione per i file di log e dare all'utente svn i permessi per utilizzarla:

# mkdir /var/log/svnserve; chown svn /var/log/svnserve 

Aggiungere un file di configurazione per logrotate, per archiviare adeguatamente questo registro di log ogni tanto. /etc/logrotate.d/svnserve:

/var/log/svnserve/*.log {
    daily
    missingok
    rotate 14
    compress
    notifempty
    create 640 svn adm
    sharedscripts
    postrotate
            if /bin/systemctl status svnserve > /dev/null ; then \
                /bin/systemctl restart svnserve > /dev/null; \
            fi;
    endscript
}

Da ultimo abilitare il servizio, avviarlo e controllare che funzioni come atteso

# systemctl enable svnserve.service

# systemctl start svnserve.service 

# systemctl status svnserve.service
* svnserve.service - Subversion protocol daemon
   Loaded: loaded (/etc/systemd/system/svnserve.service; enabled)
   Active: active (running) since Tue 2019-12-31 21:53:16 MSK; 39s ago
  Process: 798 ExecStart=/usr/bin/svnserve $DAEMON_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 799 (svnserve)
   CGroup: /user.slice/user-1000.slice/session-31211.scope/system.slice/svnserve.service
           `-799 /usr/bin/svnserve --daemon --pid-file /run/svnserve/svnserve.pid --root /srv/svn/repos --log-file /var/log/svnserve/svnserve.log

Dec 31 21:53:16 svn svnserve[798]: DIGEST-MD5 common mech free
Dec 31 21:53:16 svn systemd[1]: Started Subversion protocol daemon.

In seguito, il servizio svnserve dovrebbe partire automaticamente all'avvio del sistema.

Questa guida è basata su questa voce in stackoverflow

Esecuzione di svnserve da inetd

Per il protocollo svn:// si deve aggiungere una riga al file /etc/inetd.conf per avviare svnserve automaticamente, ad esempio:

svn stream tcp nowait mio_utente_svn /usr/bin/svnserve svnserve -i -r /srv/svn

/srv/svn è dove risiedono i depositi (così gli utenti non devono avere /srv/svn incluso nei loro URL), e mio_utente_svn è l'utente con i permessi di lettura e scrittura sui depositi. Probabilmente si vorrà creare un utente specifico per l'esecuzione del servizio svnserve.

Dopo ave modificato il file /etc/inetd.conf eseguire come utente root

update-inetd --enable svn

C'è un duplice motivo per usare l'opzione -r :

  1. Rendere gli URL più corti.
  2. Garantisce che gli utenti remoti possano accedere solo alla parte del file system Unix designata.


Nota: se si sta cercando un tutorial sull'uso di un client subversion, si veda la pagina Tutorial SVN


CategorySoftware