Zoeken op website

De ultieme gids voor het instellen van Apache Subversion SVN en TortoiseSVN voor versiebeheer


Als u voor uw werk moet omgaan met documenten, webpagina's en andere soorten bestanden die regelmatig worden bijgewerkt, wilt u wellicht een versiebeheermechanisme gebruiken als u dit nog niet doet.

Hierdoor kunt u (en ook een groep potentiële medewerkers) wijzigingen in een bepaald bestand bijhouden, en kunt u teruggaan naar een vorige versie als er een probleem optreedt of als een update niet het verwachte resultaat heeft opgeleverd. .

In het vrije-software-ecosysteem wordt het meest gebruikte versiebeheersysteem Apache Subversion (of kortweg SVN) genoemd. Met behulp van mod_dav_svn (Apache's module voor Subversion) kunt u toegang krijgen tot een Subversion-repository via HTTP en een webserver.

Dat gezegd hebbende, laten we onze mouwen opstropen en deze tools installeren op een RHEL/CentOS 7, Fedora 22-24, Debian 8/7 en Ubuntu 16.04-15.04-server. Voor onze tests gebruiken we een CentOS 7 server met IP 192.168.0.100.

Aan de clientzijde (een Windows 7 machine) zullen we TortoiseSVN (gebaseerd op Apache Subversion) installeren en gebruiken als interface voor SVN.

Onze testomgeving


Server - CentOS 7
IP Address - 192.168.0.100
Client - Windows 7

Stap 1 – SVN installeren en configureren op Linux

Zoals we zojuist vermeldden, zullen we op Apache vertrouwen om toegang te krijgen tot de SVN-repository via een webinterface. Als het nog niet is geïnstalleerd, zorg er dan voor dat u het toevoegt aan de lijst met pakketten, zoals hieronder weergegeven:


------------------ On CentOS / RHEL / Fedora ------------------ 
yum update && yum install mod_dav_svn subversion httpd -y

------------------ On Debian / Ubuntu ------------------ 
apt-get update && apt-get install libapache2-svn subversion apache2 -y 

Tijdens de installatie op CentOS 7 wordt een Apache-configuratiebestand voor SVN gemaakt als /etc/httpd/conf.modules.d/10-subversion.conf. Open het bestand en voeg het volgende configuratieblok toe:


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/httpd/subversion-auth
    Require valid-user
</Location>

Opmerking: Op Debian/Ubuntu moet u onderstaande regels toevoegen aan /etc/apache2/mods-enabled/dav_svn.conf bestand.


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/apache2/subversion-auth
    Require valid-user
</Location>

Op Debian/Ubuntu moet u de dav_svn Apache-module inschakelen:


a2enmod dav_svn

Een paar verduidelijkingen:

  1. De SVNParentPath richtlijn geeft de map aan waar onze repository's later zullen worden aangemaakt. Als deze map niet bestaat (wat hoogstwaarschijnlijk het geval is), maak deze dan aan met:

    
    mkdir -p /websrv/svn
    

    Het is belangrijk op te merken dat deze map zich NIET binnen de DocumentRoot van een virtuele host mag bevinden die momenteel door Apache wordt bediend, of deze mag overlappen. Dit is een showstopper!

  2. De AuthUserFile richtlijn geeft het bestand aan waarin de inloggegevens van een geldige gebruiker worden opgeslagen. Als u iedereen zonder authenticatie toegang wilt geven tot SVN, verwijdert u de laatste vier regels in het Locatieblok. Als dat het geval is, sla dan Stap 2 over en ga direct naar Stap 3.
  3. Hoewel u misschien in de verleiding komt om Apache opnieuw op te starten om deze recente wijzigingen toe te passen, moet u dat nog niet doen, omdat we nog steeds het authenticatiebestand moeten maken met geldige gebruikers voor SVN, en de repository zelf.

Stap 2 – Voeg toegestane gebruikers toe voor toegang tot SVN

We zullen nu htpasswd gebruiken om een wachtwoord te maken voor accounts die toegang krijgen tot SVN. Alleen voor de eerste gebruiker hebben we de optie -c nodig.

Toegestane accounts en bcrypt-gecodeerde wachtwoorden (-B) worden opgeslagen in /etc/httpd/subversion-auth in sleutel-waardeparen. Houd er rekening mee dat volgens de huidige normen de standaard MD5- of SHA-codering die door htpasswd wordt gebruikt, als onveilig wordt beschouwd.


------------------ On CentOS / RHEL / Fedora ------------------ 
htpasswd -cB /etc/httpd/subversion-auth tecmint

------------------ On Debian / Ubuntu ------------------ 
htpasswd -cB /etc/apache2/subversion-auth tecmint

Vergeet niet om het juiste eigendom en de juiste rechten voor het authenticatiebestand in te stellen:


------------------ On CentOS / RHEL / Fedora ------------------ 
chgrp apache /etc/httpd/subversion-auth
chmod 660 /etc/httpd/subversion-auth

------------------ On Debian / Ubuntu ------------------ 
chgrp www-data /etc/apache2/subversion-auth
chmod 660 /etc/apache2/subversion-auth

Stap 3 – Voeg beveiliging toe en maak een SVN-repository

Omdat u toegang krijgt tot SVN via een webinterface, moet u HTTP (en optioneel HTTPS) verkeer door uw firewall toestaan.


------------------ On CentOS / RHEL / Fedora ------------------ 
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload 

Door de firewallconfiguratie opnieuw te laden met --reload worden de permanente instellingen onmiddellijk van kracht.

Maak een eerste SVN-repository met de naam tecmint:


svnadmin create /websrv/svn/tecmint

Wijzig de eigenaar en groepseigenaar recursief in apache:


------------------ On CentOS / RHEL / Fedora ------------------ 
chown -R apache:apache /websrv/svn/tecmint

------------------ On Debian / Ubuntu ------------------ 
chown -R www-data:www-data /websrv/svn/tecmint

Ten slotte moet u de beveiligingscontext van /websrv/svn/tecmint wijzigen (merk op dat u deze stap moet herhalen als u later besluit andere repository's te maken):


------------------ On CentOS / RHEL / Fedora ------------------ 
chcon -R -t httpd_sys_content_t /websrv/svn/tecmint/
chcon -R -t httpd_sys_rw_content_t /websrv/svn/tecmint/

Opmerking: De laatste twee commando's zijn mogelijk niet van toepassing als je SVN installeert op een VPS met SELinux uitgeschakeld.

Voorgesteld lezen: Leer hoe u SELinux tijdelijk of permanent kunt uitschakelen in Linux

Start Apache opnieuw en controleer of de repository beschikbaar is.


------------------ On CentOS / RHEL / Fedora ------------------ 
systemctl restart httpd

------------------ On Debian / Ubuntu ------------------ 
systemctl restart apache2

Start vervolgens een webbrowser en wijs deze naar http://192.168.0.100/svn/tecmint. Na het invoeren van de inloggegevens voor de geldige gebruiker die we in Stap 1 hebben aangemaakt, zou de uitvoer er ongeveer zo uit moeten zien:

Op dit moment hebben we nog geen code aan onze repository toegevoegd. Maar dat zullen we zo meteen doen.

Stap 4 – Installeer TortoiseSVN in de Windows 7-client

Zoals we in de inleiding vermeldden, is TortoiseSVN een gebruiksvriendelijke interface voor Apache Subversion. Het is Vrije Software, gelicentieerd onder de GPL en kan worden gedownload van https://tortoisesvn.net/downloads.html.

Kies de architectuur (32 of 64-bit) die overeenkomt met uw machine en installeer het programma voordat u doorgaat.

Stap 5 – Stel SVN Repository in op clientcomputer

In deze stap gebruiken we een map met de naam webapp in Documenten. Deze map bevat een HTML-bestand en twee mappen genaamd scripts en stijlen met een Javascript- en een CSS-bestand (respectievelijk script.js en styles.css) die we willen toevoegen aan versiebeheer.

Klik met de rechtermuisknop op webapp en kies SVN Checkout. Hierdoor wordt een lokale kopie gemaakt van de externe repository (die momenteel leeg is) en wordt de map geïnitialiseerd voor versiebeheer:

In de URL van de repository typt u http://192.168.0.100/svn/tecmint en zorgt u ervoor dat de lokale betaalmap hetzelfde blijft. Klik vervolgens op OK:

Voer de gebruikersnaam en het wachtwoord in (zie Stap 2) en klik op OK:

U wordt gevraagd of u wilt afrekenen in een niet-lege map. Bevestig om door te gaan met afrekenen. Zodra dit is voltooid, verschijnt er een groen vinkje naast de mapnaam:

Stap 6 – Voer wijzigingen door en implementeer bestanden naar een externe SVN-repository

Klik opnieuw met de rechtermuisknop op webapp en kies deze keer Commit. Schrijf vervolgens een beschrijvend commentaar om deze commit later te identificeren, en controleer de bestanden en mappen die u in de repository wilt implementeren. Klik ten slotte op OK:

Afhankelijk van de grootte van de bestanden mag de commit niet langer dan een minuut duren. Als het klaar is, zul je zien dat we nu bij revisie 1 zijn, die overeenkomt met de versie en bestanden die in de webinterface worden vermeld:

Als er meerdere mensen aan dezelfde bestanden werken, kunt u het beste uw lokale kopie bijwerken, zodat u over de nieuwste versie beschikt om aan te werken. U kunt dat doen door met de rechtermuisknop op webapp te klikken en Update te kiezen in het contextmenu.

Gefeliciteerd! U heeft met succes een SVN-server opgezet en een eenvoudig project onder versiebeheer vastgelegd/geüpdatet.

Samenvatting

In dit artikel hebben we uitgelegd hoe u een Apache Subversion repository-server op een CentOS 7-server kunt installeren en configureren, en hoe u wijzigingen in die repository kunt doorvoeren met behulp van TortoiseSVN.

Houd er rekening mee dat er veel meer is in SVN en TortoiseSVN dan wat we hier adequaat kunnen behandelen (met name hoe terug te keren naar eerdere revisies), dus wellicht wilt u de officiële docs (SVN en TortoiseSVN) voor meer informatie en configuratiegevallen.

Zoals altijd, aarzel niet om ons te laten weten als u vragen heeft! U kunt het onderstaande reactieformulier gebruiken om ons op elk gewenst moment te bereiken.