Come configurare un server Subversion (SVN) su GNU / Linux - Ubuntu [chiuso]


95

Ho un laptop con Ubuntu che vorrei fungere da server Subversion. Sia per me che devo impegnarmi a livello locale, sia per gli altri a distanza. Quali sono i passaggi necessari per farlo funzionare? Includere passaggi per:

  • Ottieni e configura Apache e i moduli necessari (so che ci sono altri modi per creare un server SVN, ma lo vorrei specifico per Apache)
  • Configurare un modo sicuro per accedere al server (SSH / HTTPS)
  • Configurare un insieme di utenti autorizzati (come in, devono essere autorizzati a eseguire il commit, ma sono liberi di navigare)
  • Convalida la configurazione con un commit iniziale (una sorta di "Hello world")

Questi passaggi possono comportare qualsiasi combinazione di riga di comando o istruzioni dell'applicazione GUI. Se puoi, per favore nota dove le istruzioni sono specifiche per una particolare distribuzione o versione, e dove invece può essere usata la scelta di un particolare strumento da parte dell'utente (diciamo, nano invece di vi ).


Posso usare il server Subversion su Ubuntu e i client su qualsiasi piattaforma? come il client SVN Tortoise su Windows?
Raheel Hasan

Risposte:


146

Passi che ho intrapreso per rendere il mio laptop un server Subversion. Il merito va ad AlephZarro per le sue indicazioni qui . Ora ho un server SVN funzionante (che al momento è stato testato solo localmente).

Configurazione specifica: Kubuntu 8.04 Hardy Heron

Requisiti per seguire questa guida:

  • programma di gestione dei pacchetti apt-get
  • editor di testo (io uso kate)
  • diritti di accesso sudo

1: installa il server HTTP Apache e i moduli richiesti:

sudo apt-get install libapache2-svn apache2

Verranno installati i seguenti pacchetti extra:

apache2-mpm-worker apache2-utils apache2.2-common

2: Abilita SSL

sudo a2enmod ssl
sudo kate /etc/apache2/ports.conf

Aggiungi o verifica che nel file sia presente quanto segue:

<IfModule mod_ssl.c>
    Listen 443
</IfModule>

3: genera un certificato SSL:

sudo apt-get install ssl-cert
sudo mkdir /etc/apache2/ssl
sudo /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem

4: crea un host virtuale

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/svnserver
sudo kate /etc/apache2/sites-available/svnserver

Modifica (in ports.conf):

"NameVirtualHost *" to "NameVirtualHost *:443"

e (in svnserver)

<VirtualHost *> to <VirtualHost *:443>

Aggiungi, sotto ServerAdmin (anche nel file svnserver):

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM

5: Abilita il sito:

sudo a2ensite svnserver
sudo /etc/init.d/apache2 restart

Per superare gli avvertimenti:

sudo kate /etc/apache2/apache2.conf

Inserisci:

"ServerName $your_server_name"

6: Aggiunta di repository: la seguente configurazione presuppone che desideriamo ospitare più repository. Esegui questo per creare il primo repository:

sudo mkdir /var/svn

REPOS=myFirstRepo
sudo svnadmin create /var/svn/$REPOS
sudo chown -R www-data:www-data /var/svn/$REPOS
sudo chmod -R g+ws /var/svn/$REPOS

6.a. Per più archivi: ripetere il passaggio 6 (modificando il valore di REPOS), saltando il passaggiomkdir /var/svn

7: Aggiungi un utente autenticato

sudo htpasswd -c -m /etc/apache2/dav_svn.passwd $user_name

8: Abilita e configura WebDAV e SVN:

sudo kate /etc/apache2/mods-available/dav_svn.conf

Aggiungi o rimuovi il commento:

<Location /svn>
DAV svn

# for multiple repositories - see comments in file
SVNParentPath /var/svn

AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
SSLRequireSSL
</Location>

9: Riavvia il server Apache:

sudo /etc/init.d/apache2 restart

10: Validazione:

Avviato un browser:

http://localhost/svn/$REPOS
https://localhost/svn/$REPOS

Entrambi richiedevano un nome utente e una password. Penso di rimuovere il commento:

<LimitExcept GET PROPFIND OPTIONS REPORT>

</LimitExcept>

in /etc/apache2/mods-available/dav_svn.conf, consentirebbe la navigazione anonima.

Il browser mostra "Revision 0: /"

Impegna qualcosa:

svn import --username $user_name anyfile.txt https://localhost/svn/$REPOS/anyfile.txt -m “Testing”

Accetta il certificato e inserisci la password. Guarda cosa hai appena commesso:

svn co --username $user_name https://localhost/svn/$REPOS

Seguendo questi passaggi (supponendo che non abbia fatto alcun errore di copia / incolla), avevo un repository SVN funzionante sul mio laptop.


Le istruzioni hanno funzionato perfettamente anche su Jaunty. Grazie!
Michael Moussa

6
Sembrava funzionare perfettamente, ma ottengo un 403 proibito quando provo ad accedervi e nessuna richiesta di password. Qualche suggerimento su cosa potrebbe esserci di sbagliato?
korona

@korona: Accedervi in ​​che modo: eseguire i comandi SVN o navigare ad esso?
Grundlefleck

1
"NameVirtualHost *" to "NameVirtualHost *:443"è in ports.conf mentre <VirtualHost *> to <VirtualHost *:443>è nelle impostazioni di svnserver. questo dovrebbe essere menzionato. sono rimasto piuttosto confuso perché ho cercato nelle impostazioni di svnserver NameVirtualHost e non sono riuscito a trovarlo.
Wandang

1
In Debian Stretch sembra che sia necessario installare libapache2-mod-svninvece di libapache2-svn(poiché quest'ultimo non è più disponibile).
TheStoryCoder

2

Successivamente, ho dovuto eseguire (nel contesto dell'esempio citato sopra)

$ sudo chmod g + w /var/svn/$REPOS/db/rep-cache.db

$ sudo chown www-data: www-data /var/svn/$REPOS/db/rep-cache.db

Altrimenti continuavo a ricevere un errore 409 durante il commit delle modifiche locali (sebbene gli impegni fossero efficaci dal lato server, dovevo seguire gli aggiornamenti locali)


1

Questo articolo sembra fornire una buona panoramica dell'intero processo. Consiglierei di seguire le istruzioni e poi di postare alcune domande più specifiche su eventuali problemi che incontrate che non sono affrontati negli articoli che io e altre persone abbiamo collegato in queste risposte.


1

Se ottieni 403 proibito quando colpisci il server web, potrebbe essere perché hai usato un nome host che non è quello che hai specificato nel tuo file di configurazione (cioè localhost o 127.0.0.1). Prova a premere https: // whateveryousetasyourhostname invece ...


Un'altra causa 403: imposta svn path su un collegamento simbolico. Se il tuo percorso svn è un collegamento simbolico, dovrai consentire i seguenti collegamenti simbolici.
copolii

-2

Si prega di scrivere un singolo comando sul terminale.

Per aprire il terminale, premere Ctrl+ Alt+ T, quindi digitare questo comando:

$sudo apt-get install subversion

-2

Per Apache:

sudo apt-get -yq install apache2

Per SSH:

sudo apt-get -yq install openssh-server

Per Subversion:

sudo apt-get -yq install subversion subversion-tools

Se lo desideri, puoi combinarli in un comando come:

sudo apt-get -yq install apache2 openssh-server subversion subversion-tools

Non posso aiutare con il resto ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.