La guia definitiva per configurar Apache Subversion SVN i TortoiseSVN per al control de versions


Si el vostre treball requereix gestionar documents, pàgines web i altres tipus de fitxers que s'actualitzen periòdicament, és possible que vulgueu utilitzar un mecanisme de control de versions si encara no ho feu.

Entre altres coses, això us permet (i també un grup de col·laboradors potencials) fer un seguiment dels canvis fets en un fitxer determinat i us permet tornar a una versió anterior si es troba un problema o quan una actualització no ha produït el resultat esperat. .

A l'ecosistema del programari lliure, el sistema de control de versions més utilitzat s'anomena Apache Subversion (o SVN per abreujar). Amb l'ajuda de mod_dav_svn (el mòdul d'Apache per a Subversion), podeu accedir a un repositori de Subversion mitjançant HTTP i un servidor web.

Dit això, arremanguem-nos i instal·lem aquestes eines en un servidor RHEL/CentOS 7, Fedora 22-24, Debian 8/7 i Ubuntu 16.04-15.04. Per a les nostres proves utilitzarem un servidor CentOS 7 amb IP 192.168.0.100.

Al costat del client (una màquina amb Windows 7), instal·larem i utilitzarem TortoiseSVN (que es basa en Apache Subversion) com a interfície per a SVN.

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

Pas 1: instal·lació i configuració de SVN a Linux

Com acabem d'esmentar, confiarem en Apache per accedir al repositori SVN mitjançant una interfície web. Si encara no està instal·lat, assegureu-vos d'afegir-lo a la llista de paquets tal com es mostra a continuació:

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

Durant la instal·lació a CentOS 7, es crearà un fitxer de configuració d'Apache per a SVN com a /etc/httpd/conf.modules.d/10-subversion.conf. Obriu el fitxer i afegiu el següent bloc de configuració:

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

Nota: a Debian/Ubuntu, heu d'afegir les línies següents al fitxer /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>

A Debian/Ubuntu, heu d'habilitar el mòdul Apache dav_svn:

# a2enmod dav_svn

Un parell d'aclariments:

  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.

Pas 2: afegiu usuaris permesos per accedir a SVN

Ara utilitzarem htpasswd per crear una contrasenya per als comptes que podran accedir a SVN. Només per al primer usuari, necessitarem l'opció -c.

Els comptes permesos i les contrasenyes xifrades amb bcrypt (-B) s'emmagatzemaran a /etc/httpd/subversion-auth en parells clau-valor. Tingueu en compte que, segons els estàndards actuals, el xifratge MD5 o SHA predeterminat utilitzat per htpasswd es considera insegur.

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

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

No us oblideu d'establir la propietat i els permisos adequats per al fitxer d'autenticació:

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

Pas 3: afegiu seguretat i creeu un repositori SVN

Com que accedireu a SVN mitjançant una interfície web, haureu de permetre el trànsit HTTP (i opcionalment HTTPS) a través del vostre tallafoc.

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

Si torneu a carregar la configuració del tallafoc amb --reload, la configuració permanent s'aplicarà immediatament.

Creeu un repositori SVN inicial anomenat tecmint:

# svnadmin create /websrv/svn/tecmint

Canvieu el propietari i el propietari del grup a Apache de forma recursiva:

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

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

Finalment, haureu de canviar el context de seguretat de /websrv/svn/tecmint (tingueu en compte que haureu de repetir aquest pas si decidiu crear altres repositoris més endavant):

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

Nota: És possible que les dues últimes ordres no s'apliquin si esteu instal·lant SVN en un VPS amb SELinux desactivat.

Reinicieu Apache i comproveu que el dipòsit estigui disponible.

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

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

A continuació, inicieu un navegador web i apunteu-lo a http://192.168.0.100/svn/tecmint. Després d'introduir les credencials de l'usuari vàlid que hem creat al pas 1, la sortida hauria de ser similar a:

En aquest moment no hem afegit cap codi al nostre repositori. Però ho farem en un minut.

Pas 4: instal·leu TortoiseSVN al client de Windows 7

Com hem esmentat a la introducció, TortoiseSVN és una interfície fàcil d'utilitzar per a Apache Subversion. És programari lliure amb llicència GPL i es pot descarregar des de https://tortoisesvn.net/downloads.html.

Trieu l'arquitectura (32 o 64 bits) que correspon a la vostra màquina i instal·leu el programa abans de continuar.

Pas 5: configureu el repositori SVN a la màquina client

En aquest pas utilitzarem una carpeta anomenada webapp dins de Documents. Aquesta carpeta conté un fitxer HTML i dues carpetes anomenades scripts i estils amb un fitxer Javascript i un fitxer CSS (script.js i styles.css, respectivament) que volem afegir al control de versions.

Feu clic amb el botó dret a l'aplicació web i seleccioneu SVN Checkout. Això crearà una còpia local del dipòsit remot (que està buit en aquest moment) i inicialitzarà la carpeta per al control de versions:

A l'URL del dipòsit, escriviu http://192.168.0.100/svn/tecmint i assegureu-vos que el directori de pagament local segueix sent el mateix i, a continuació, feu clic a D'acord:

Introduïu el nom d'usuari i la contrasenya (consulteu el pas 2) i feu clic a D'acord:

Se us demanarà si voleu pagar en un directori no buit. Confirmeu per continuar amb la compra. Un cop s'hagi completat, apareixerà una marca de verificació verda al costat del nom de la carpeta:

Pas 6: cometeu canvis i implementeu fitxers al repositori SVN remot

Feu clic amb el botó dret a webapp de nou i seleccioneu Commet aquesta vegada. A continuació, escriviu un comentari descriptiu per identificar més tard aquesta confirmació i comproveu els fitxers i carpetes que voleu desplegar al repositori. Finalment, feu clic a D'acord:

Depenent de la mida dels fitxers, la confirmació no hauria de trigar més d'un minut. Quan estigui completa, veureu que ara estem a la revisió 1, que coincideix amb la versió i els fitxers que apareixen a la interfície web:

Si hi ha diverses persones treballant en els mateixos fitxers, voldreu actualitzar la vostra còpia local per tenir la darrera versió disponible per treballar-hi. Podeu fer-ho fent clic amb el botó dret a webapp i escollint Actualitza al menú contextual.

Felicitats! Heu configurat correctament un servidor SVN i heu compromès/actualitzat un projecte senzill sota control de versions.

Resum

En aquest article hem explicat com instal·lar i configurar un servidor de dipòsit Apache Subversion en un servidor CentOS 7 i com fer canvis en aquest dipòsit mitjançant TortoiseSVN.

Tingueu en compte que hi ha molt més a SVN i TortoiseSVN del que podem cobrir adequadament aquí (especialment com tornar a les revisions anteriors), de manera que us recomanem que consulteu els documents oficials (TortoiseSVN) per obtenir més informació i casos de configuració.

Com sempre, no dubteu a fer-nos saber si teniu cap pregunta! No dubteu a utilitzar el formulari de comentaris a continuació per contactar amb nosaltres en qualsevol moment.