Den ultimate guiden for å sette opp Apache Subversion SVN og TortoiseSVN for versjonskontroll


Hvis arbeidet ditt krever håndtering av dokumenter, nettsider og andre typer filer som oppdateres jevnlig, kan det være lurt å bruke en versjonskontrollmekanisme hvis du ikke allerede gjør det.

Blant annet lar dette deg (og en gruppe potensielle samarbeidspartnere også) spore endringer som er gjort i en gitt fil, og lar deg rulle tilbake til en tidligere versjon hvis det oppstår et problem eller når en oppdatering ikke har gitt det forventede resultatet .

I det frie programvareøkosystemet kalles det mest brukte versjonskontrollsystemet Apache Subversion (eller SVN for kort). Ved hjelp av mod_dav_svn (Apaches modul for Subversion), kan du få tilgang til et Subversion-depot ved hjelp av HTTP og en webserver.

Når det er sagt, la oss brette opp ermene og installere disse verktøyene på en RHEL/CentOS 7, Fedora 22-24, Debian 8/7 og Ubuntu 16.04-15.04 server. For våre tester vil vi bruke en CentOS 7-server med IP 192.168.0.100.

På klientsiden (en Windows 7-maskin) vil vi installere og bruke TortoiseSVN (som er basert på Apache Subversion) som et grensesnitt til SVN.

Vårt testmiljø


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

Trinn 1 – Installere og konfigurere SVN på Linux

Som vi nettopp nevnte, vil vi stole på Apache for å få tilgang til SVN-depotet ved hjelp av et nettgrensesnitt. Hvis det ikke allerede er installert, sørg for å legge det til i 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 installasjonen på CentOS 7 vil en Apache-konfigurasjonsfil for SVN bli opprettet som /etc/httpd/conf.modules.d/10-subversion.conf. Åpne filen og legg til følgende konfigurasjonsblokk:


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

Merk: På Debian/Ubuntu må du legge til linjene nedenfor til /etc/apache2/mods-enabled/dav_svn.conf fil.


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

Debian/Ubuntu må du aktivere modulen dav_svn Apache:


a2enmod dav_svn

Et par avklaringer:

  1. SVNParentPath-direktivet angir katalogen der lagrene våre senere vil bli opprettet. Hvis denne katalogen ikke eksisterer (som mest sannsynlig er tilfelle), oppretter du den med:

    
    mkdir -p /websrv/svn
    

    Det er viktig å merke seg at denne katalogen IKKE må være plassert inne i, eller overlappe, DocumentRoot til en virtuell vert som betjenes av Apache. Dette er en showstopper!

  2. AuthUserFile-direktivet indikerer filen der legitimasjonen til en gyldig bruker vil bli lagret. Hvis du vil la alle få tilgang til SVN uten autentisering, fjern de fire siste linjene i Location-blokken. Hvis det er tilfelle, hopper du over Trinn 2 og går direkte til Trinn 3.
  3. Selv om du kan bli fristet til å starte Apache på nytt for å bruke disse nylige endringene, ikke gjør det ennå, da vi fortsatt trenger å opprette autentiseringsfilen med gyldige brukere for SVN, og selve depotet.

Trinn 2 – Legg til tillatte brukere for å få tilgang til SVN

Vi vil nå bruke htpasswd for å lage et passord for kontoer som får tilgang til SVN. Kun for den første brukeren trenger vi alternativet -c.

Tillatte kontoer og bcrypt-krypterte passord (-B) vil bli lagret i /etc/httpd/subversion-auth i nøkkelverdi-par. Merk at etter dagens standarder anses standard MD5- eller SHA-krypteringen som brukes av htpasswd som usikker.


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

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

Ikke glem å angi riktig eierskap og rettigheter til autentiseringsfilen:


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

Trinn 3 – Legg til sikkerhet og opprett SVN-lager

Siden du vil få tilgang til SVN via et nettgrensesnitt, må du tillate HTTP (og eventuelt HTTPS) trafikk gjennom brannmuren din.


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

Ved å laste inn brannmurkonfigurasjonen på nytt med --reload, settes de permanente innstillingene i kraft umiddelbart.

Opprett et første SVN-lager kalt tecmint:


svnadmin create /websrv/svn/tecmint

Endre eier og gruppeeier 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

Til slutt må du endre sikkerhetskonteksten til /websrv/svn/tecmint (merk at du må gjenta dette trinnet hvis du bestemmer deg for å opprette andre depoter 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/

Merk: De to siste kommandoene gjelder kanskje ikke hvis du installerer SVN på en VPS med SELinux deaktivert.

Foreslått lesing: Lær hvordan du deaktiverer SELinux midlertidig eller permanent i Linux

Start Apache på nytt og kontroller at depotet er tilgjengelig.


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

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

Start deretter en nettleser og pek den til http://192.168.0.100/svn/tecmint. Etter å ha angitt legitimasjonen for den gyldige brukeren som vi opprettet i trinn 1, skal utdataene være lik:

På dette tidspunktet har vi ikke lagt til noen kode til vårt depot. Men vi gjør det om et minutt.

Trinn 4 – Installer TortoiseSVN i Windows 7-klienten

Som vi nevnte i introduksjonen, er TortoiseSVN et brukervennlig grensesnitt til Apache Subversion. Det er fri programvare lisensiert under GPL og kan lastes ned fra https://tortoisesvn.net/downloads.html.

Velg arkitekturen (32 eller 64-bit) som tilsvarer maskinen din og installer programmet før du fortsetter.

Trinn 5 – Konfigurer SVN Repository på klientmaskinen

I dette trinnet vil vi bruke en mappe kalt webapp i Dokumenter. Denne mappen inneholder en HTML-fil og to mapper kalt skript og stiler med en Javascript- og en CSS-fil (henholdsvis script.js og styles.css) som vi ønsker å legge til versjonskontroll.

Høyreklikk på webapp og velg SVN Checkout. Dette vil opprette en lokal kopi av det eksterne depotet (som er tomt for øyeblikket) og initialisere mappen for versjonskontroll:

I URL-adressen til depotet, skriv inn http://192.168.0.100/svn/tecmint og sørg for at den lokale utsjekkingskatalogen forblir den samme, og klikk deretter OK:

Skriv inn brukernavnet og passordet (se Trinn 2) og klikk OK:

Du vil bli spurt om du vil betale i en ikke-tom katalog. Bekreft for å fortsette med kassen. Når den er fullført, vises en grønn hake ved siden av mappenavnet:

Trinn 6 – Utfør endringer og distribuer filer til eksternt SVN-lager

Høyreklikk på webapp igjen og velg Bekreft denne gangen. Skriv deretter en beskrivende kommentar for senere å identifisere denne forpliktelsen, og sjekk filene og mappene du vil distribuere til depotet. Til slutt klikker du OK:

Avhengig av størrelsen på filene, bør commit ikke ta mer enn ett minutt. Når den er fullført, vil du se at vi nå er på revisjon 1, som samsvarer med versjonen og filene som er oppført i nettgrensesnittet:

Hvis det er flere personer som jobber med de samme filene, bør du oppdatere din lokale kopi for å ha den nyeste versjonen tilgjengelig for å jobbe med. Du kan gjøre det ved å høyreklikke på webapp og velge Oppdater fra hurtigmenyen.

Gratulerer! Du har konfigurert en SVN-server og forpliktet/oppdatert et enkelt prosjekt under versjonskontroll.

Sammendrag

I denne artikkelen har vi forklart hvordan du installerer og konfigurerer en Apache Subversion-depotserver på en CentOS 7-server, og hvordan du foretar endringer i det depotet ved å bruke TortoiseSVN<.

Vær oppmerksom på at SVN og TortoiseSVN er mye mer enn det vi kan dekke her (spesielt hvordan du går tilbake til tidligere revisjoner), så det kan være lurt å henvise til den offisielle docs (SVN og TortoiseSVN) for mer informasjon og konfigurasjonssaker.

Som alltid, ikke nøl med å gi oss beskjed hvis du har spørsmål! Bruk gjerne kommentarskjemaet nedenfor for å nå oss når som helst.