Končni vodnik za nastavitev Apache Subversion SVN in TortoiseSVN za nadzor različic


Če vaše delo zahteva obdelavo dokumentov, spletnih strani in drugih vrst datotek, ki se redno posodabljajo, boste morda želeli uporabiti mehanizem za nadzor različic, če tega še ne počnete.

To vam med drugim omogoča (in tudi skupini potencialnih sodelavcev) sledenje spremembam dane datoteke in vrnitev na prejšnjo različico, če naletite na težavo ali če posodobitev ni prinesla pričakovanega rezultata .

V ekosistemu proste programske opreme se najpogosteje uporabljani sistem za nadzor različic imenuje Apache Subversion (ali na kratko SVN). S pomočjo mod_dav_svn (Apachejev modul za Subverzijo) lahko dostopate do skladišča Subversion s pomočjo HTTP in spletnega strežnika.

Zavihajmo rokave in ta orodja namestite na strežnike RHEL/CentOS 7, Fedora 22-24, Debian 8/7 in Ubuntu 16.04-15.04. Za naše teste bomo uporabili strežnik CentOS 7 z IP 192.168.0.100.

Na odjemalski strani (računalnik z operacijskim sistemom Windows 7) bomo kot vmesnik za SVN namestili in uporabili TortoiseSVN (ki temelji na Apache Subversion).

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

1. korak - Namestitev in konfiguracija SVN v Linuxu

Kot smo pravkar omenili, se bomo pri dostopu do odlagališča SVN s pomočjo spletnega vmesnika zanašali na Apache. Če še ni nameščen, ga dodajte na seznam paketov, kot je prikazano spodaj:

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

Med namestitvijo na CentOS 7 bo ustvarjena konfiguracijska datoteka Apache za SVN kot /etc/httpd/conf.modules.d/10-subversion.conf. Odprite datoteko in dodajte naslednji konfiguracijski blok:

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

Opomba: V Debian/Ubuntu morate dodati spodnje vrstice v datoteko /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>

V Debian/Ubuntu morate omogočiti modul dav_svn Apache:

# a2enmod dav_svn

Nekaj pojasnil:

  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.

2. korak - dodajte dovoljeni dostop do SVN

Zdaj bomo uporabili htpasswd za ustvarjanje gesla za račune, ki bodo lahko dostopali do SVN. Samo za prvega uporabnika bomo potrebovali možnost -c .

Dovoljeni računi in gesla, šifrirana z bcrypt ( -B ), bodo shranjeni v/etc/httpd/subversion-auth v parih ključ/vrednost. Upoštevajte, da po današnjih standardih privzeto šifriranje MD5 ali SHA, ki ga uporablja htpasswd, ni varno.

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

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

Ne pozabite nastaviti pravega lastništva in dovoljenj za datoteko za preverjanje pristnosti:

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

3. korak - dodajte varnost in ustvarite repozitorij SVN

Ker boste do SVN dostopali prek spletnega vmesnika, boste morali skozi požarni zid omogočiti promet HTTP (in po želji HTTPS).

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

S ponovnim nalaganjem konfiguracije požarnega zidu z --reload trajne nastavitve začnejo veljati takoj.

Ustvarite začetno repozitorij SVN, imenovan tecmint:

# svnadmin create /websrv/svn/tecmint

Lastnika in lastnika skupine spremenite v apache rekurzivno:

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

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

Nazadnje boste morali spremeniti varnostni kontekst /websrv/svn/tecmint (upoštevajte, da boste morali ta korak ponoviti, če se kasneje odločite za ustvarjanje drugih skladišč):

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

Opomba: Zadnja dva ukaza morda ne bosta veljala, če SVN nameščate na VPS z onemogočenim SELinuxom.

Znova zaženite Apache in preverite, ali je skladišče na voljo.

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

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

Nato zaženite spletni brskalnik in ga usmerite na http://192.168.0.100/svn/tecmint . Po vnosu poverilnic za veljavnega uporabnika, ki smo ga ustvarili v 1. koraku, mora biti rezultat podoben:

V tem trenutku v naše skladišče nismo dodali nobene kode. Toda to bomo storili čez minuto.

4. korak - Namestite TortoiseSVN v odjemalca Windows 7

Kot smo že omenili v uvodu, je TortoiseSVN uporabniku prijazen vmesnik za Apache Subversion. Je brezplačna programska oprema, licencirana pod GPL in jo lahko prenesete s https://tortoisesvn.net/downloads.html.

Izberite arhitekturo (32 ali 64-bitno), ki ustreza vaši napravi, in pred nadaljevanjem namestite program.

5. korak - Nastavite repozitorij SVN na odjemalskem računalniku

V tem koraku bomo v mapi Dokumenti uporabili mapo z imenom webapp . Ta mapa vsebuje datoteko HTML in dve mapi, imenovani skripti in slogi z datotekami Javascript in CSS (script.js oziroma styles.css), ki jih želimo dodati v nadzor različic.

Z desno miškino tipko kliknite spletno stran in izberite SVN Checkout. To bo ustvarilo lokalno kopijo oddaljenega skladišča (ki je trenutno prazno) in inicializiralo mapo za nadzor različic:

V URL repozitorija vnesite http://192.168.0.100/svn/tecmint in se prepričajte, da lokalni imenik za prevzem ostane enak, nato kliknite V redu:

Vnesite uporabniško ime in geslo (glejte 2. korak) in kliknite V redu:

Vprašani boste, ali želite plačati v neprazen imenik. Za nadaljevanje plačila potrdite. Ko je končana, se poleg imena mape prikaže zelena kljukica:

6. korak - Spremenite spremembe in razmestite datoteke v oddaljeno odlagališče SVN

Ponovno z desno miškino tipko kliknite webapp in izberite Zavedi tokrat. Nato napišite opisni komentar, da boste kasneje prepoznali to objavo, in preverite datoteke in mape, ki jih želite namestiti v repozitorij. Na koncu kliknite V redu:

Odvisno od velikosti datotek prevzem ne sme trajati več kot minuto. Ko bo končana, boste videli, da smo zdaj na reviziji 1, ki se ujema z različico in datotekami, navedenimi v spletnem vmesniku:

Če več ljudi dela z istimi datotekami, boste želeli posodobiti lokalno kopijo, da bo na voljo najnovejša različica. To lahko storite tako, da z desno miškino tipko kliknete webapp in v kontekstnem meniju izberete Posodobi.

Čestitamo! Uspešno ste nastavili strežnik SVN in izvedli/posodobili preprost projekt pod nadzorom različic.

Povzetek

V tem članku smo razložili, kako namestiti in konfigurirati strežnik repozitorija Apache Subversion na strežniku CentOS 7 in kako v njem shraniti spremembe s pomočjo TortoiseSVN.

Prosimo, upoštevajte, da je za SVN in TortoiseSVN veliko več kot tisto, kar lahko tukaj ustrezno pokrijemo (še posebej o tem, kako se vrniti na prejšnje revizije), zato boste morda želeli več informacij in primerov konfiguracije uporabiti v uradnih dokumentih (TortoiseSVN).

Kot vedno nas obvestite, če imate kakršna koli vprašanja! Uporabite spodnji obrazec za komentar, da nas kadar koli kontaktirate.