95 votes

Comment configurer un serveur Subversion (SVN) sur GNU/Linux - Ubuntu

J'ai un ordinateur portable fonctionnant sous Ubuntu que je voudrais utiliser comme serveur Subversion. A la fois pour moi, pour m'engager localement, et pour les autres à distance. Quelles sont les étapes nécessaires pour que cela fonctionne ? Veuillez inclure les étapes pour :

  • obtenir et configurer Apache, et les modules nécessaires (je sais qu'il existe d'autres moyens 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 (c'est-à-dire qu'ils doivent être autorisés à commettre, mais sont libres de naviguer)
  • valider la configuration avec un commit initial (un "Hello world" en quelque sorte)

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 les instructions qui sont spécifiques à une distribution ou à une version particulière, et celles qui peuvent être remplacées par le choix d'un outil particulier par l'utilisateur (par exemple, nano au lieu de vi).

146voto

Grundlefleck Points 29486

Les mesures que j'ai prises pour faire de mon ordinateur portable un serveur Subversion. Le crédit doit aller à AlephZarro pour ses directives 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 de gestion des paquets apt-get
  • éditeur de texte (j'utilise kate)
  • Droits d'accès sudo

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

sudo apt-get install libapache2-svn apache2

Les paquets 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 les éléments suivants figurent dans le fichier :

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

3 : Générer 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

Changez (dans ports.conf) :

"NameVirtualHost *" to "NameVirtualHost *:443"

et (dans svnserver)

<VirtualHost *> to <VirtualHost *:443>

Ajouter, 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 : refaire l'étape 6 (en changeant la valeur de REPOS), en sautant l'étape mkdir /var/svn

7 : Ajouter un utilisateur authentifié

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

8 : Activer et configurer WebDAV et SVN :

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

Ajoutez ou décomposez :

<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émarrer 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 requièrent un nom d'utilisateur et un mot de passe. Je pense qu'en décommentant :

<LimitExcept GET PROPFIND OPTIONS REPORT>

</LimitExcept>

sur /etc/apache2/mods-available/dav_svn.conf qui permettrait une navigation anonyme.

Le navigateur affiche "Revision 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. Vérifiez 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 pas fait d'erreur de copier/coller), j'avais un dépôt SVN fonctionnel sur mon ordinateur portable.

2voto

Thierry Marianne Points 1289

Ensuite, j'ai dû exécuter (dans le contexte 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, je continuais à recevoir une erreur 409 lors de l'engagement de modifications locales (bien que les engagements aient été effectifs côté serveur, j'avais besoin de suivre avec des mises à jour locales)

1voto

Kibbee Points 36474

Cet article semble donner un bon aperçu de l'ensemble du processus. Je vous recommande de suivre les instructions, puis de poser des questions plus spécifiques sur les problèmes que vous rencontrez et qui ne sont pas abordés dans les articles que j'ai cités en lien dans ces réponses.

1voto

jjnguy Points 62123

Une manière très simple de mettre en place un serveur SVN est d'utiliser le site Assembla .

Ils fournissent des tonnes de services gratuits, dont l'hébergement SVN.

1voto

PuO2 Points 11

Si vous obtenez un message 403 forbidden lorsque vous accédez au serveur Web, c'est peut-être parce que vous avez utilisé un nom d'hôte qui n'est pas celui que vous avez spécifié dans votre fichier de configuration (par exemple localhost ou 127.0.0.1). Essayez de cliquer sur https://whateveryousetasyourhostname au lieu de...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X