Ghidul suprem pentru configurarea Apache Subversion SVN și TortoiseSVN pentru controlul versiunilor


Dacă munca dvs. necesită gestionarea documentelor, paginilor web și a altor tipuri de fișiere care sunt actualizate în mod regulat, este posibil să doriți să utilizați un mecanism de control al versiunilor dacă nu faceți acest lucru deja.

Printre altele, acest lucru vă permite (și un grup de potențiali colaboratori) să urmăriți modificările aduse unui anumit fișier și vă permite să reveniți la o versiune anterioară dacă se întâlnește o problemă sau când o actualizare nu a produs rezultatul așteptat. .

În ecosistemul software liber, cel mai utilizat sistem de control al versiunilor se numește Apache Subversion (sau SVN pe scurt). Cu ajutorul mod_dav_svn (modulul Apache pentru Subversion), puteți accesa un depozit Subversion folosind HTTP și un server web.

Acestea fiind spuse, haideți să ne suflecăm mânecile și să instalăm aceste instrumente pe un RHEL/CentOS 7, Fedora 22-24, Debian 8/7 și Server Ubuntu 16.04-15.04. Pentru testele noastre vom folosi un server CentOS 7 cu IP 192.168.0.100.

Pe partea client (o mașină Windows 7), vom instala și vom folosi TortoiseSVN (care se bazează pe Apache Subversion) ca interfață pentru SVN.

Mediul nostru de testare

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

Pasul 1 - Instalarea și configurarea SVN pe Linux

După cum tocmai am menționat, ne vom baza pe Apache pentru a accesa depozitul SVN folosind o interfață web. Dacă nu este deja instalat, asigurați-vă că îl adăugați la lista de pachete, așa cum se arată mai jos:

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

În timpul instalării pe CentOS 7, un fișier de configurare Apache pentru SVN va fi creat ca /etc/httpd/conf.modules.d/10-subversion.conf. Deschideți fișierul și adăugați următorul bloc de configurare:

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

Notă: pe Debian/Ubuntu trebuie să adăugați linii de mai jos la /etc/apache2/mods-enabled/dav_svn fișier .conf.

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

Pe Debian/Ubuntu, trebuie să activați modulul dav_svn Apache:

# a2enmod dav_svn

Câteva precizări:

  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.

Pasul 2 – Adăugați utilizatorii autorizați să acceseze SVN

Acum vom folosi htpasswd pentru a crea o parolă pentru conturile cărora li se va permite să acceseze SVN. Numai pentru primul utilizator, vom avea nevoie de opțiunea -c.

Conturile permise și parolele criptate bcrypt (-B) vor fi stocate în /etc/httpd/subversion-auth în perechi cheie-valoare. Rețineți că, conform standardelor actuale, criptarea implicită MD5 sau SHA utilizată de htpasswd este considerată nesigură.

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

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

Nu uitați să setați dreptul de proprietate și permisiunile pentru fișierul de autentificare:

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

Pasul 3 - Adăugați securitate și creați depozit SVN

Deoarece veți accesa SVN printr-o interfață web, va trebui să permiteți traficul HTTP (și opțional HTTPS) prin firewall.

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

Prin reîncărcarea configurației firewall cu --reload, setările permanente sunt puse în aplicare imediat.

Creați un depozit SVN inițial numit tecmint:

# svnadmin create /websrv/svn/tecmint

Schimbați proprietarul și proprietarul grupului în apache în mod recursiv:

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

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

În cele din urmă, va trebui să modificați contextul de securitate al /websrv/svn/tecmint (rețineți că va trebui să repetați acest pas dacă decideți să creați alte depozite mai târziu):

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

Notă: Este posibil ca ultimele două comenzi să nu se aplice dacă instalați SVN pe un VPS cu SELinux dezactivat.

Reporniți Apache și verificați că depozitul este disponibil.

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

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

Apoi lansați un browser web și direcționați-l către http://192.168.0.100/svn/tecmint. După ce am introdus acreditările pentru utilizatorul valid pe care l-am creat în Pasul 1, rezultatul ar trebui să fie similar cu:

În acest moment nu am adăugat niciun cod la depozitul nostru. Dar asta vom face într-un minut.

Pasul 4 – Instalați TortoiseSVN în clientul Windows 7

După cum am menționat în introducere, TortoiseSVN este o interfață ușor de utilizat pentru Apache Subversion. Este un software liber licențiat conform GPL și poate fi descărcat de pe https://tortoisesvn.net/downloads.html.

Alegeți arhitectura (32 sau 64 de biți) care corespunde mașinii dvs. și instalați programul înainte de a continua.

Pasul 5 – Configurați depozitul SVN pe mașina client

În acest pas vom folosi un folder numit webapp în interiorul Documente. Acest folder conține un fișier HTML și două foldere numite scripturi și stiluri cu un fișier Javascript și un fișier CSS (script.js și, respectiv, styles.css) pe care dorim să le facem adăugați la controlul versiunilor.

Faceți clic dreapta pe webapp și alegeți SVN Checkout. Aceasta va crea o copie locală a depozitului de la distanță (care este goală în acest moment) și va inițializa folderul pentru controlul versiunilor:

În adresa URL a depozitului, tastați http://192.168.0.100/svn/tecmint și asigurați-vă că directorul local de plată rămâne același, apoi faceți clic pe OK:

Introduceți numele de utilizator și parola (consultați Pasul 2) și faceți clic pe OK:

Veți fi întrebat dacă doriți să verificați într-un director care nu este gol. Confirmați pentru a continua cu finalizarea achiziției. După ce este finalizat, lângă numele folderului va apărea o bifă verde:

Pasul 6 – Commiteți modificări și implementați fișiere în depozitul SVN la distanță

Faceți clic dreapta pe webapp din nou și alegeți Commit de data aceasta. Apoi, scrieți un comentariu descriptiv pentru a identifica ulterior acest commit și verificați fișierele și folderele pe care doriți să le implementați în depozit. În cele din urmă, faceți clic pe OK:

În funcție de dimensiunea fișierelor, confirmarea nu ar trebui să dureze mai mult de un minut. Când este finalizat, veți vedea că acum ne aflăm la reviziunea 1, care se potrivește cu versiunea și fișierele enumerate în interfața web:

Dacă există mai multe persoane care lucrează la aceleași fișiere, veți dori să Actualizați copia locală pentru a avea cea mai recentă versiune disponibilă pentru a lucra. Puteți face acest lucru făcând clic dreapta pe webapp și alegând Actualizare din meniul contextual.

Felicitări! Ați configurat cu succes un server SVN și ați angajat/actualizat un proiect simplu sub controlul versiunii.

rezumat

În acest articol, am explicat cum să instalați și să configurați un server de depozit Apache Subversion pe un server CentOS 7 și cum să efectuați modificări în acel depozit utilizând TortoiseSVN<.

Vă rugăm să rețineți că în SVN și TortoiseSVN există mult mai mult decât ceea ce putem acoperi în mod adecvat aici (în special cum să revenim la versiunile anterioare), așa că vă recomandăm să consultați documentul oficial docs (TortoiseSVN) pentru mai multe informații și cazuri de configurare.

Ca întotdeauna, nu ezitați să ne anunțați dacă aveți întrebări! Simțiți-vă liber să folosiți formularul de comentarii de mai jos pentru a ne contacta oricând.