Den Ultimate Guide fir Apache Subversion SVN an TortoiseSVN opzestellen fir Versiounskontrolle


Wann Är Aarbecht Dokumenter, Websäiten an aner Zorte vu Fichieren erfuerdert, déi reegelméisseg aktualiséiert ginn, wëllt Dir vläicht e Versiounskontrollmechanismus benotzen wann Dir dat net scho maacht.

Dëst erlaabt Iech ënner anerem (an och e Grupp vu potenziellen Kollaborateuren) Ännerungen ze verfolgen, déi op eng bestëmmte Datei gemaach goufen, a léisst Iech zréck op eng fréier Versioun zréckrollen wann en Thema begéint gëtt oder wann en Update net dat erwaart Resultat produzéiert huet. .

Am fräie Software-Ökosystem gëtt de meescht verbreet benotzte Versiounskontrollsystem Apache Subversion genannt (oder kuerz SVN). Mat der Hëllef vu mod_dav_svn (Apache Modul fir Subversion), kënnt Dir Zougang zu engem Subversion Repository mat HTTP an engem Webserver benotzen.

Dat gesot, loosst eis Är Ärmelen oprollen an dës Tools op engem RHEL/CentOS 7, Fedora 22-24, Debian 8/7 an Ubuntu 16.04-15.04 Server installéieren. Fir eis Tester benotze mir en CentOS 7 Server mat IP 192.168.0.100.

Op der Client Säit (eng Windows 7 Maschinn) installéiere mir TortoiseSVN (déi op Apache Subversion baséiert) als Interface op SVN.

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

Schrëtt 1 - SVN op Linux installéieren an konfiguréieren

Wéi mir just gesot hunn, wäerte mir op Apache vertrauen fir Zougang zum SVN Repository mat engem Webinterface ze kréien. Wann et net schonn installéiert ass, vergewëssert Iech et an d'Lëscht vu Packagen ze addéieren wéi hei ënnendrënner:

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

Wärend der Installatioun op CentOS 7 gëtt eng Apache Konfiguratiounsdatei fir SVN als /etc/httpd/conf.modules.d/10-subversion.conf erstallt. Öffnen d'Datei a füügt de folgende Konfiguratiounsblock un:

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

Bemierkung: Op Debian/Ubuntu musst Dir ënnert Zeilen an /etc/apache2/mods-enabled/dav_svn.conf Datei addéieren.

<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 musst Dir dav_svn Apache Modul aktivéieren:

# a2enmod dav_svn

E puer Erklärungen:

  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.

Schrëtt 2 - Füügt erlaabt Benotzer Zougang zu SVN

Mir wäerten elo htpasswd benotzen fir e Passwuert fir Konten ze kreéieren déi erlaabt sinn Zougang zu SVN. Nëmme fir den éischte Benotzer brauche mir d'Optioun -c.

Erlaabt Konten a bcrypt-verschlësselte Passwierder (-B) ginn an /etc/httpd/subversion-auth a Schlësselwäertpaaren gespäichert. Notéiert datt no de Standarden vun haut d'Standard MD5 oder SHA Verschlësselung benotzt vun htpasswd als onsécher ugesi gëtt.

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

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

Vergiesst net déi richteg Besëtzer an Permissiounen op d'Authentifikatiounsdatei ze setzen:

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

Schrëtt 3 - Füügt Sécherheet a erstellt SVN Repository

Well Dir Zougang zu SVN iwwer e Webinterface kritt, musst Dir HTTP (an optional HTTPS) Traffic duerch Är Firewall erlaben.

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

Andeems Dir d'Firewall Konfiguratioun nei lued mat --reload, ginn déi permanent Astellungen direkt a Kraaft gesat.

Erstellt en initial SVN Repository mam Numm tecmint:

# svnadmin create /websrv/svn/tecmint

Ännert de Besëtzer a Gruppbesëtzer op Apache rekursiv:

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

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

Schlussendlech musst Dir de Sécherheetskontext vun /websrv/svn/tecmint änneren (Notéiert datt Dir dëse Schrëtt widderhuelen musst wann Dir decidéiert spéider aner Repositories ze kreéieren):

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

Notiz: Déi lescht zwee Kommandoen kënnen net gëllen wann Dir SVN op engem VPS installéiert mat SELinux behënnert.

Restart Apache a kontrolléiert datt de Repository verfügbar ass.

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

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

Da lancéiert e Webbrowser a weist en op http://192.168.0.100/svn/tecmint. Nodeems Dir d'Umeldungsinformatiounen fir de gëltege Benotzer aginn hutt, dee mir am Schrëtt 1 erstallt hunn, sollt d'Ausgab ähnlech sinn:

Zu dësem Zäitpunkt hu mir kee Code zu eisem Repository bäigefüügt. Mä mir wäerten dat an enger Minutt maachen.

Schrëtt 4 - Installéiert TortoiseSVN am Windows 7 Client

Wéi mir an der Aféierung ernimmt hunn, ass TortoiseSVN eng userfrëndlech Interface fir Apache Subversion. Et ass gratis Software lizenzéiert ënner der GPL a ka vun https://tortoisesvn.net/downloads.html erofgeluede ginn.

Wielt d'Architektur (32 oder 64-Bit) déi mat Ärer Maschinn entsprécht an installéiert de Programm ier Dir weidergeet.

Schrëtt 5 - Setup SVN Repository op Client Machine

An dësem Schrëtt benotze mir en Dossier mam Numm Webapp bannent Dokumenter. Dësen Dossier enthält eng HTML-Datei, an zwee Classeure genannt Scripten a Stiler mat engem Javascript an enger CSS-Datei (bzw.

Rietsklickt Webapp a wielt SVN Checkout. Dëst wäert eng lokal Kopie vum Remote Repository erstellen (deen am Moment eidel ass) an den Dossier fir d'Versiounskontroll initialiséieren:

An der URL vum Repository, gitt http://192.168.0.100/svn/tecmint a gitt sécher datt de lokale Kasseverzeechnes d'selwecht bleift, da klickt OK:

Gitt de Benotzernumm a Passwuert (kuckt op Schrëtt 2) a klickt OK:

Dir wäert gefrot ginn ob Dir an en net eidelen Verzeichnis wëllt auschecken. Confirméieren fir mat der Kees weiderzekommen. Wann et fäerdeg ass, erschéngt e grénge Scheckzeechen nieft dem Dossiernumm:

Schrëtt 6 - Engagéiert Ännerungen an Deploy Dateien op Remote SVN Repository

Rietsklickt nach eng Kéier op Webapp a wielt dës Kéier engagéieren. Als nächst schreift e beschreiwende Kommentar fir spéider dësen Engagement z'identifizéieren, a kontrolléiert d'Dateien an d'Ordner déi Dir an de Repository wëllt ofsetzen. Endlech klickt OK:

Ofhängeg vun der Gréisst vun de Dateien, däerf d'Verpflichtung net méi wéi eng Minutt daueren. Wann et fäerdeg ass, gesitt Dir datt mir elo op der Versioun 1 sinn, déi d'Versioun an d'Dateien entsprécht, déi am Webinterface opgezielt sinn:

Wann et e puer Leit op déiselwecht Dateie schaffen, wëllt Dir Är lokal Kopie aktualiséieren fir déi lescht Versioun verfügbar ze hunn fir unzeschaffen. Dir kënnt dat maachen andeems Dir op Webapp klickt a wielt Update aus dem Kontextmenü.

Gratulatioun! Dir hutt e SVN-Server erfollegräich ageriicht an en einfache Projet ënner Versiounskontroll engagéiert/aktualiséiert.

Resumé

An dësem Artikel hu mir erkläert wéi Dir en Apache Subversion Repository Server op engem CentOS 7 Server installéiere an konfiguréieren, a wéi Dir Ännerungen an deem Repository mat TortoiseSVN engagéiert.

Notéiert w.e.g. datt et vill méi fir SVN an TortoiseSVN ass wéi dat wat mir hei adequat ofdecken (speziell wéi Dir op fréier Versioune zréckkënnt), sou datt Dir wëllt op déi offiziell Dokumenter (TortoiseSVN) fir méi Informatioun a Konfiguratiounsfäll referéieren.

Wéi ëmmer, zéckt net eis ze soen wann Dir Froen hutt! Fillt Iech gratis de Kommentarformular hei ënnen ze benotzen fir eis zu all Moment z'erreechen.