Apache Subversion ou SVN est un logiciel open source de gestion des versions et de contrôle des révisions 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 est utilisé par de nombreux développeurs de logiciels et projets open source comme Apache Software Foundation, FreeBSD, GCC et SourceForge.
Dans cet article, nous vous montrons comment configurer Apache Subversion sur le dernier serveur CentOS 7. Nous installons et configurons le logiciel svn avec Apache comme serveur Web, le sécurisons avec Let's encrypt et activons "l'authentification de base" pour les utilisateurs.
Prérequis
- Serveur CentOS 7
- Privilèges root
Ce que nous allons faire
- Installer Apache Httpd sur CentOS 7
- Installer Subversion
- Configurer le référentiel Subversion
- Générer SSL Letsencrypt pour CentOS Apache Httpd
- Configurer l'hôte virtuel Subversion sur Apache Httpd
- Test
Étape 1 - Installer Apache Httpd sur CentOS 7
La première étape de ce guide consiste à installer les packages Apache httpd sur votre système.
Installez Apache httpd à l'aide de la commande yum ci-dessous.
yum -y install httpd httpd-tools mod_ssl
Et une fois l'installation terminée, nous devons ajouter le service HTTP aux listes de services du pare-feu.
Exécutez les commandes firewall-cmd ci-dessous.
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload
Démarrez maintenant le service httpd et ajoutez-le pour qu'il soit lancé au démarrage.
systemctl start httpd
systemctl enable httpd
Apache httpd est opérationnel sur le serveur.
Étape 2 - Installer Apache Subversion (SVN)
Dans ce didacticiel, nous allons installer les packages de subversion à partir du référentiel CentOS 7 de base.
Installez Subversion et tous les packages requis à l'aide de la commande yum ci-dessous.
yum -y install subversion subversion-tools mod_dav_svn
Attendez que tous les packages soient installés, puis vérifiez la version svn.
svn --version
Étape 3 - Configurer le référentiel Subversion (SVN)
Après l'installation de Subversion, nous configurons le répertoire maître du dépôt subversion. Nous allons créer un nouveau répertoire 'svn' où seront stockés 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éé.
Remarque :
Supplémentaire pour les utilisateurs de SELinux, exécutez les commandes ci-dessous.
chcon -R -t httpd_sys_content_t /svn/hakase-project
chcon -R -t httpd_sys_rw_content_t /svn/hakase-project
Étape 4 - Générer un certificat SSL Let's encrypt pour Apache
Dans ce tutoriel, nous configurons le serveur svn pour utiliser la connexion HTTPS avec un domaine nommé 'svn.hakase-labs.io'. Nous utiliserons un certificat SSL Let's encrypt gratuit qui peut être généré avec l'outil certbot.
Installez certbot sur le serveur CentOS avec la commande yum ci-dessous.
yum -y install certbot
Une fois l'installation terminée, nous devons ajouter le service HTTPS à la liste des services du pare-feu.
Exécutez les commandes firewalld ci-dessous.
firewall-cmd --add-service=https --zone=public --permanent
firewall-cmd --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 httpd
Générez le certificat SSL Letsencrypt pour le nom de domaine "svn.hakase-labs.io" à l'aide de 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
Vous allez maintenant obtenir les fichiers de certificat dans le répertoire '/etc/letsencrypt/live'.
Étape 5 - Configurer l'hôte virtuel Subversion sur Apache Httpd
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 '/etc/httpd/conf.d' et créez une nouvelle configuration svn 'svn.conf'.
cd /etc/httpd/conf.d/
vim svn.conf
Collez les configurations 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 logs/svn_error_log TransferLog logs/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 logs/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost>
Enregistrez le fichier et quittez l'éditeur.
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 ci-dessous.
sudo htpasswd -cm /etc/subversion/svn.users hakase
Redémarrez maintenant les services Apache httpd.
systemctl restart httpd
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
Affichage du référentiel
Ouvrez votre navigateur Web et saisissez l'URL du serveur, la mienne est celle-ci : https://svn.hakase-labs.io/repo/hakase-project/
Et l'invite d'authentification de base de l'utilisateur s'affichera.
Connectez-vous avec l'utilisateur et le mot de passe 'hakase', et voici le résultat.
Importer un projet dans le référentiel
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 tous les répertoires 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
Maintenant, on vous demandera les choses suivantes.
- 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 souhaitons cloner ou copier le référentiel dans l'environnement local.
Créez un nouvel utilisateur normal et connectez-vous à l'utilisateur.
useradd -m -s /bin/bash misaka
su - misaka
Clonez le référentiel 'hakase-project' dans le répertoire local nommé 'myproject' en tant qu'utilisateur 'hakase'.
svn co https://svn.hakase-labs.io/repo/hakase-project/ ~/myproject --username hakase
Et vous serez à nouveau interrogé sur ces éléments ci-dessous.
- 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é.
Et quand c'est terminé, vérifiez le nouveau répertoire 'myproject' et vous obtiendrez tous les modèles svn.
tree ~/myproject
Valider le code ou les documents
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 verrez que tous les fichiers ont été ajoutés au référentiel.
L'installation et la configuration d'Apache Subversion avec HTTPS Letsencrypt sur CentOS 7 ont été effectuées avec succès.