Comment configurer un serveur Subversion (SVN) sur GNU / Linux - Ubuntu [fermé]

95

J'ai un ordinateur portable exécutant Ubuntu que j'aimerais faire office de serveur Subversion. À la fois pour moi de m'engager localement, et pour les autres à distance. Quelles sont les étapes nécessaires pour que cela fonctionne? Veuillez inclure les étapes pour:

  • Obtenez et configurez Apache et les modules nécessaires (je sais qu'il existe d'autres façons de créer un serveur SVN, mais je voudrais qu'il soit spécifique à Apache)
  • Configurer un moyen sécurisé d'accéder au serveur (SSH / HTTPS)
  • Configurer un ensemble d'utilisateurs autorisés (comme dans, ils doivent être autorisés à s'engager, mais sont libres de naviguer)
  • Validez l'installation avec un commit initial (une sorte de "Hello world")

Ces étapes peuvent impliquer n'importe quel mélange d'instructions de ligne de commande ou d'application GUI. Si vous le pouvez, veuillez noter où les instructions sont spécifiques à une distribution ou une version particulière, et où le choix d'un utilisateur d'un outil particulier peut être utilisé à la place (par exemple, nano au lieu de vi ).

Grundlefleck
la source
Puis-je utiliser le serveur Subversion sur Ubuntu et les clients sur n'importe quelle plateforme? comme le client Tortoise SVN sur Windows?
Raheel Hasan

Réponses:

146

Mesures que j'ai prises pour faire de mon ordinateur portable un serveur Subversion. Le crédit doit aller à AlephZarro pour ses instructions ici . J'ai maintenant un serveur SVN fonctionnel (qui n'a pour l'instant été testé que localement).

Configuration spécifique: Kubuntu 8.04 Hardy Heron

Conditions requises pour suivre ce guide:

  • programme gestionnaire de paquets apt-get
  • éditeur de texte (j'utilise kate)
  • droits d'accès sudo

1: Installez le serveur HTTP Apache et les modules requis:

sudo apt-get install libapache2-svn apache2

Les packages supplémentaires suivants seront installés:

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

2: Activer SSL

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

Ajoutez ou vérifiez que ce qui suit est dans le fichier:

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

3: Générez un certificat 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: Créer un hôte virtuel

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

Changement (dans ports.conf):

"NameVirtualHost *" to "NameVirtualHost *:443"

et (dans svnserver)

<VirtualHost *> to <VirtualHost *:443>

Ajoutez, sous ServerAdmin (également dans le fichier svnserver):

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

5: Activez le site:

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

Pour surmonter les avertissements:

sudo kate /etc/apache2/apache2.conf

Ajouter:

"ServerName $your_server_name"

6: Ajout de référentiel (s): La configuration suivante suppose que nous voulons héberger plusieurs référentiels. Exécutez ceci pour créer le premier référentiel:

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. Pour plus de référentiels: refaites l'étape 6 (en changeant la valeur de REPOS), en sautant l'étapemkdir /var/svn

7: Ajouter un utilisateur authentifié

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

8: Activez et configurez WebDAV et SVN:

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

Ajouter ou décommenter:

<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: Redémarrez le serveur Apache:

sudo /etc/init.d/apache2 restart

10: Validation:

J'ai lancé un navigateur:

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

Les deux nécessitaient un nom d'utilisateur et un mot de passe. Je pense sans commenter:

<LimitExcept GET PROPFIND OPTIONS REPORT>

</LimitExcept>

dans /etc/apache2/mods-available/dav_svn.conf, autoriserait la navigation anonyme.

Le navigateur affiche "Révision 0: /"

Engagez quelque chose:

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

Acceptez le certificat et entrez le mot de passe. Découvrez ce que vous venez de commettre:

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

En suivant ces étapes (en supposant que je n'ai fait aucune erreur de copie / collage), j'avais un référentiel SVN fonctionnel sur mon ordinateur portable.

Grundlefleck
la source
Les instructions fonctionnaient parfaitement sur Jaunty également. Merci!
Michael Moussa
6
Semblait fonctionner parfaitement, mais je reçois un 403 interdit lorsque j'essaie d'y accéder, et aucune demande de mot de passe. Des indices sur ce qui pourrait ne pas aller?
korona
@korona: Comment y accéder: exécuter des commandes SVN ou y accéder?
Grundlefleck
1
"NameVirtualHost *" to "NameVirtualHost *:443"se trouve dans le fichier ports.conf tandis que <VirtualHost *> to <VirtualHost *:443>dans les paramètres de svnserver. cela doit être mentionné. Je suis assez confus parce que j'ai cherché dans les paramètres de svnserver pour NameVirtualHost et je ne pouvais pas le trouver.
Wandang
1
Dans Debian Stretch, il semble que vous deviez installer à la libapache2-mod-svnplace de libapache2-svn(car ce dernier n'est plus disponible).
TheStoryCoder
2

Ensuite, j'ai eu besoin d'exécuter (dans le cadre de l'exemple cité ci-dessus)

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

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

Sinon, j'ai continué à recevoir une erreur 409 lors de la validation des modifications locales (bien que les engagements aient été efficaces côté serveur, j'avais besoin de suivre les mises à jour locales)

Thierry Marianne
la source
1

Cet article semble donner un assez bon aperçu de l'ensemble du processus. Je recommanderais de suivre les instructions, puis de publier des questions plus spécifiques sur les problèmes que vous rencontrez et qui ne sont pas abordés dans les articles que moi et d'autres personnes ont liés dans ces réponses.

Kibbee
la source
1

Si vous obtenez 403 interdit lorsque vous accédez au serveur Web, c'est peut-être parce que vous avez utilisé un nom d'hôte différent de celui que vous avez spécifié dans votre fichier de configuration (c'est-à-dire localhost ou 127.0.0.1). Essayez de frapper https: // whateveryousetasyourhostname à la place ...

PuO2
la source
Une autre cause 403: définissez svn path sur un lien symbolique. Si votre chemin svn est un lien symbolique, vous devrez autoriser les liens symboliques suivants.
copolii
-2

Veuillez écrire une seule commande sur le terminal.

Pour ouvrir le terminal, appuyez sur Ctrl+ Alt+ T, puis tapez cette commande:

$sudo apt-get install subversion
Ashish Saini
la source
-2

Pour Apache:

sudo apt-get -yq install apache2

Pour SSH:

sudo apt-get -yq install openssh-server

Pour Subversion:

sudo apt-get -yq install subversion subversion-tools

Si vous le souhaitez, vous pouvez les combiner en une seule commande comme:

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

Je ne peux pas aider avec le reste ...

UnkwnTech
la source