Apache Subversion ou SVN est un système de contrôle de version et de révision de logiciel open source développé par Apache Software Foundation. Il est utilisé pour maintenir les versions actuelles et historiques du code source, des documents et des pages Web.
Subversion ou svn largement utilisé pour les grands projets et la communauté open source tels que Apache Software Foundation, FreeBSD, GCC, SourceForge etc.
Dans cet article, je vais vous montrer comment configurer Apache Subversion à l'aide du serveur Ubuntu 18.04 LTS. Nous allons installer et configurer le logiciel svn avec Apache comme serveur Web, activer l'« authentification de base » pour les utilisateurs et sécuriser l'accès en utilisant Letsencrypt SSL pour l'accès au référentiel.
Et pour ceux qui préfèrent GIT, le tutoriel Ubuntu 18.04 GIT est ici.
Prérequis
- Ubuntu 18.04
- Privilèges root
Ce que nous allons faire
- Installer le serveur Web Apache2 sur Ubuntu 18.04
- Installer Apache Subversion (SVN)
- Configurer le référentiel Subversion
- Générer SSL Letsencrypt pour Ubuntu Apache2
- Configurer l'hôte virtuel Subversion sur Apache2
- Test
Étape 1 - Installer le serveur Web Apache2 sur Ubuntu 18.04 LTS
Dans cette première étape, nous allons installer le serveur Web Apache2 et ajouter de nouveaux services ssh et HTTP à la configuration du pare-feu ufw.
Installez le serveur Web Apache2 à l'aide de la commande apt ci-dessous.
sudo apt install apache2 apache2-utils -y
Une fois l'installation terminée, ajoutez les services SSH et HTTP à la configuration du pare-feu ufw.
Exécutez les commandes ufw ci-dessous.
ufw allow ssh
ufw allow http
Activez le pare-feu.
ufw enable
Démarrez maintenant le service Apache2 et activez-le pour qu'il se lance à chaque démarrage du système.
systemctl start apache2
systemctl enable apache2
Le serveur Web Apache2 est opérationnel et les services SSH et HTTP ont été ajoutés à la liste des services de pare-feu.
Étape 2 - Installer Apache Subversion (SVN)
Dans ce didacticiel, nous allons installer les packages subversion et svn libapache à partir du référentiel officiel Ubuntu.
Installez Subversion à l'aide de la commande apt ci-dessous.
sudo apt install subversion subversion-tools libapache2-mod-svn -y
Vérifiez maintenant la commande svn.
svn --version
Apache Subversion (SVN) a été installé sur le serveur Ubuntu 18.04.
Étape 3 - Configurer un référentiel Subversion
Après l'installation de subversion, nous allons configurer le répertoire maître du dépôt subversion. Nous allons créer un nouveau répertoire 'svn' qui sera utilisé pour stocker tout le code source et les dépôts.
Créez un nouveau répertoire maître '/svn'.
mkdir /svn
Et créez un nouvel exemple de référentiel nommé 'hakase-project' à l'aide de la commande svnadmin ci-dessous.
svnadmin create /svn/hakase-project
Changez maintenant le propriétaire du répertoire '/svn/hakase-project' en utilisateur et groupe 'apache'.
sudo chown -R apache:apache /svn/hakase-project
Et le dépôt svn a été créé.
Étape 4 - Générer un certificat SSL Letsencrypt
Dans ce tutoriel, nous allons configurer le serveur svn pour utiliser la connexion HTTPS avec un domaine nommé 'svn.hakase-labs.io'. Nous utiliserons le SSL Letsencrypt gratuit, et il peut être généré à l'aide de l'outil certbot.
Installez certbot sur le serveur Ubuntu à l'aide de la commande yum ci-dessous.
sudo apt install certbot -y
Une fois l'installation terminée, nous devons ajouter le service HTTPS aux listes de services de pare-feu ufw.
Exécutez les commandes ufw ci-dessous.
ufw allow https
ufw reload
Maintenant, arrêtez le service httpd, afin que nous puissions générer le SSL Letsencrypt en utilisant le serveur Web temporaire "autonome".
systemctl stop apache2
Générez le SSL Letsencrypt pour le nom de domaine 'svn.hakase-labs.io' en utilisant la commande certbot ci-dessous.
certbot certonly --rsa-key-size 4096 --standalone --agree-tos --no-eff-email --email [email protected] -d svn.hakase-labs.io
Et une fois terminé, vous obtiendrez les fichiers de certificat dans le répertoire '/etc/letsencrypt/live'.
Étape 5 - Configurer l'hôte virtuel Subversion sur Apache2
Dans cette étape, nous allons créer une nouvelle configuration Apache httpd pour l'accès svn. Nous allons configurer le référentiel svn en utilisant un nom de domaine 'svn.hakase-labs.io', et il ne sera accessible qu'aux utilisateurs enregistrés utilisant l'authentification de base HTTP.
Allez dans le répertoire de configuration '/etc/apache2'.
cd /etc/apache2/
Créez une nouvelle configuration d'hôte virtuel subversion 'svn.conf' dans le répertoire 'sites-available'.
cd sites-available/
vim svn.conf
Collez la configuration ci-dessous.
<VirtualHost svn.hakase-labs.io:80> ServerName svn.hakase-labs.io DocumentRoot /var/www/html Redirect permanent / https://svn.hakase-labs.io </VirtualHost> <VirtualHost svn.hakase-labs.io:443> DocumentRoot /var/www/html ServerName svn.hakase-labs.io SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW SSLCertificateFile /etc/letsencrypt/live/svn.hakase-labs.io/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/svn.hakase-labs.io/privkey.pem ErrorLog /var/log/apache2/svn_error_log TransferLog /var/log/apache2/svn_access_log LogLevel warn <location /repo> DAV svn SVNParentPath /svn/ AuthType Basic AuthName "Authorization Realm" AuthUserFile /etc/subversion/svn.users Require valid-user </location> <Files ~ "\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog /var/log/apache2/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost>
Enregistrez et quittez.
Ensuite, nous devons créer une nouvelle liste d'utilisateurs qui pourront afficher et valider des fichiers dans le référentiel.
Créez un nouvel utilisateur nommé 'hakase' à l'aide de la commande htpasswd.
sudo htpasswd -cm /etc/subversion/svn.users hakase
Activez le module SSL sur apache et activez l'hôte virtuel svn en exécutant les commandes ci-dessous.
sudo a2enmod ssl
sudo a2ensite svn
Redémarrez le service Apache2.
systemctl restart apache2
La configuration de l'hôte virtuel pour subversion a été créée et l'utilisateur 'hakase' a maintenant un accès pour afficher et valider le code source dans le référentiel 'hakase-project'.
Étape 6 - Tester
Afficher le référentiel
Ouvrez votre navigateur Web et tapez l'URL du serveur, la mienne est celle ci-dessous).
https://svn.hakase-labs.io/repo/hakase-project/
Et vous verrez l'authentification utilisateur de base.
Connectez-vous avec l'utilisateur et le mot de passe 'hakase', et vous obtiendrez le référentiel de page vierge comme ci-dessous.
Importer le projet dans le référentiel SVN
Nous allons maintenant importer les exemples de modèles de projet svn dans le référentiel 'hakase-project'.
Créez un nouveau répertoire de projet svn-templates.
mkdir -p ~/svn-templates/{trunk,branches,tags}
Ajoutez le répertoire de modèles au référentiel 'hakase-project' à l'aide de la commande svn ci-dessous.
svn import -m 'Initial import' ~/svn-templates/ https://svn.hakase-labs.io/repo/hakase-project/ --username hakase
On vous posera des questions sur certaines choses, agissez de la manière suivante.
- Tapez 'p' pour ajouter définitivement le certificat Letsencrypt.
- Tapez l'utilisateur et le mot de passe 'hakase'.
- Et tapez "oui" pour confirmer l'enregistrement du mot de passe non chiffré.
Vérifiez le 'hakase-project' à partir du navigateur Web, et vous obtiendrez tous les répertoires de modèles dessus.
Cloner le référentiel
Après avoir créé et téléchargé le répertoire de modèles svn, nous essaierons de cloner le référentiel dans l'environnement local.
Connectez-vous à l'utilisateur non root/normal.
useradd -m -s /bin/bash misaka
su - misaka
Clonez dans le référentiel 'hakase-project' le répertoire local nommé 'myproject' en tant qu'utilisateur 'hakase'.
svn co https://svn.hakase-labs.io/repo/hakase-project/ ~/myproject --username hakase
Vérifiez le nouveau répertoire 'myproject' et vous obtiendrez tous les modèles svn.
tree ~/myproject
Valider le code source
Allez dans le répertoire 'monprojet'.
cd myproject/
Créez des fichiers dans le répertoire 'trunk'.
echo 'this is my repo' > trunk/test-hakase.txt
echo 'this is my repo01' > trunk/test-hakase01.txt
echo 'this is my repo02' > trunk/test-hakase02.txt
Ajouter et valider
svn add trunk/* --username hakase
svn commit -m 'new file added' --username hakase
Vérifiez le référentiel à partir du navigateur Web et vous obtiendrez tous les fichiers ajoutés au référentiel.
L'installation et la configuration d'Apache Subversion sur le serveur Ubuntu 18.04 LTS ont été effectuées avec succès.