Den ultimative guide til opsætning af Apache Subversion SVN og TortoiseSVN til versionskontrol


Hvis dit arbejde kræver håndtering af dokumenter, websider og andre typer filer, der opdateres regelmæssigt, kan du bruge en versionskontrolmekanisme, hvis du ikke allerede gør det.

Blandt andet giver dette dig (og en gruppe af potentielle samarbejdspartnere også) mulighed for at spore ændringer foretaget i en given fil og giver dig mulighed for at rulle tilbage til en tidligere version, hvis der opstår et problem, eller når en opdatering ikke har givet det forventede resultat .

I det gratis software-økosystem kaldes det mest udbredte versionskontrolsystem Apache Subversion (eller SVN for kort). Ved hjælp af mod_dav_svn (Apache's modul til Subversion) kan du få adgang til et Subversion-lager ved hjælp af HTTP og en webserver.

Når det er sagt, lad os rulle ærmerne op og installere disse værktøjer på en RHEL/CentOS 7, Fedora 22-24, Debian 8/7 og Ubuntu 16.04-15.04 server. Til vores tests bruger vi en CentOS 7-server med IP 192.168.0.100.

På klientsiden (en Windows 7-maskine) installerer og bruger vi TortoiseSVN (som er baseret på Apache Subversion) som en grænseflade til SVN.

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

Trin 1 - Installation og konfiguration af SVN på Linux

Som vi netop nævnte, vil vi stole på Apache for at få adgang til SVN-arkivet ved hjælp af en webgrænseflade. Hvis det ikke allerede er installeret, skal du sørge for at tilføje det til listen over pakker som vist nedenfor:

------------------ 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 

Under installationen på CentOS 7 oprettes en Apache-konfigurationsfil til SVN som /etc/httpd/conf.modules.d/10-subversion.conf. Åbn filen, og tilføj følgende konfigurationsblok:

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

Bemærk: På Debian/Ubuntu skal du tilføje nedenstående linjer til filen /etc/apache2/mods-enabled/dav_svn.conf .

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

På Debian/Ubuntu skal du aktivere dav_svn Apache-modulet:

# a2enmod dav_svn

Et par afklaringer:

  1. The SVNParentPath directive indicates the directory where our repositories will be later created. If this directory does not exist (which is most likely the case), create it with:
    # mkdir -p /websrv/svn
    

    It is important to note that this directory must NOT be located inside, or overlap, the DocumentRoot of a virtual host currently being served by Apache. This is a showstopper!

  2. The AuthUserFile directive indicates the file where the credentials of a valid user will be stored. If you want to allow everyone to access SVN without authentication, remove the last four lines in the Location block. If that is the case, skip Step 2 and head directly to Step 3.
  3. Although you may be tempted to restart Apache in order to apply these recent changes, don’t do it yet as we still need to create the authentication file with valid users for SVN, and the repository itself.

Trin 2 - Tilføj tilladte brugere for at få adgang til SVN

Vi bruger nu htpasswd til at oprette en adgangskode til konti, der får adgang til SVN. For kun den første bruger har vi brug for indstillingen -c .

Tilladte konti og bcrypt-krypterede adgangskoder ( -B ) gemmes i/etc/httpd/subversion-auth i nøgleværdipar. Bemærk, at ifølge nutidens standarder betragtes standard MD5- eller SHA-kryptering, der bruges af htpasswd, som usikre.

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

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

Glem ikke at indstille det rigtige ejerskab og tilladelser til godkendelsesfilen:

------------------ 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

Trin 3 - Tilføj sikkerhed og opret SVN-lager

Da du får adgang til SVN via en webgrænseflade, skal du tillade HTTP (og eventuelt HTTPS) trafik gennem din firewall.

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

Ved at genindlæse firewallkonfigurationen med --reload , træder de permanente indstillinger i kraft med det samme.

Opret et første SVN-lager kaldet tecmint:

# svnadmin create /websrv/svn/tecmint

Skift ejer og gruppeejer til apache rekursivt:

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

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

Endelig skal du ændre sikkerhedskonteksten for /websrv/svn/tecmint (bemærk, at du bliver nødt til at gentage dette trin, hvis du beslutter at oprette andre arkiver senere):

------------------ 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/

Bemærk: De sidste to kommandoer gælder muligvis ikke, hvis du installerer SVN på en VPS med SELinux deaktiveret.

Genstart Apache og kontroller, at lageret er tilgængeligt.

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

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

Start derefter en webbrowser og peg den på http://192.168.0.100/svn/tecmint . Efter indtastning af legitimationsoplysninger for den gyldige bruger, som vi oprettede i trin 1, skulle outputen være lig med:

På dette tidspunkt har vi ikke tilføjet nogen kode til vores lager. Men det gør vi om et øjeblik.

Trin 4 - Installer TortoiseSVN i Windows 7-klienten

Som vi nævnte i indledningen, er TortoiseSVN en brugervenlig grænseflade til Apache Subversion. Det er fri software licenseret under GPL og kan downloades fra https://tortoisesvn.net/downloads.html.

Vælg den arkitektur (32 eller 64-bit), der svarer til din maskine, og installer programmet, inden du fortsætter.

Trin 5 - Konfigurer SVN-lager på klientmaskine

I dette trin bruger vi en mappe med navnet webapp inde i Documents. Denne mappe indeholder en HTML-fil og to mapper med navnet scripts og typografier med et Javascript og en CSS-fil (henholdsvis script.js og styles.css), som vi vil føje til versionskontrol.

Højreklik på webapp og vælg SVN Checkout. Dette opretter en lokal kopi af fjernlageret (som er tom i øjeblikket) og initialiserer mappen til versionskontrol:

Skriv http://192.168.0.100/svn/tecmint i URL's til arkivet, og sørg for, at den lokale checkout-mappe forbliver den samme, og klik derefter på OK:

Indtast brugernavn og adgangskode (se trin 2), og klik på OK:

Du bliver spurgt, om du vil tjekke ud i et ikke-tomt bibliotek. Bekræft for at fortsætte med kassen. Når det er afsluttet, vises et grønt flueben ved siden af mappenavnet:

Trin 6 - Forpligt ændringer og distribuer filer til Remote SVN Repository

Højreklik på webapp igen, og vælg Commit denne gang. Skriv derefter en beskrivende kommentar for senere at identificere denne forpligtelse, og kontroller de filer og mapper, du vil distribuere til lageret. Til sidst skal du klikke på OK:

Afhængigt af størrelsen på filer, bør forpligtelsen ikke tage mere end et minut. Når det er færdigt, vil du se, at vi nu er på revision 1, som matcher den version og de filer, der er angivet i webgrænsefladen:

Hvis der er flere personer, der arbejder på de samme filer, skal du opdatere din lokale kopi for at have den nyeste version tilgængelig til at arbejde på. Du kan gøre det ved at højreklikke på webapp og vælge Opdater i genvejsmenuen.

Tillykke! Du har oprettet en SVN-server og bestilt/opdateret et simpelt projekt under versionskontrol.

Resumé

I denne artikel har vi forklaret, hvordan man installerer og konfigurerer en Apache Subversion-repository-server på en CentOS 7-server, og hvordan man forpligter sig til ændringer i dette repository ved hjælp af TortoiseSVN.

Bemærk, at der er meget mere til SVN og TortoiseSVN, end hvad vi tilstrækkeligt kan dække her (specielt hvordan man vender tilbage til tidligere revisioner), så det kan være en god idé at henvise til de officielle dokumenter (TortoiseSVN) for mere information og konfigurationssager.

Tøv ikke med at fortælle os, hvis du har spørgsmål! Du er velkommen til at bruge kommentarformularen nedenfor for at nå os når som helst.