La guía definitiva para configurar Apache Subversion SVN y TortoiseSVN para el control de versiones

Si su trabajo requiere el manejo de documentos, páginas web y otro tipo de archivos que se actualizan regularmente, es posible que desee utilizar un mecanismo de control de versiones si aún no lo está haciendo.

Entre otras cosas, esto le permite a usted (y también a un grupo de colaboradores potenciales) realizar un seguimiento de los cambios realizados en un archivo determinado, y le permite volver a una versión anterior si se encuentra un problema o cuando una actualización no ha producido el resultado esperado. .

En el ecosistema del software libre, el sistema de control de versiones más utilizado se llama Apache Subversion (o SVN para abreviar). Con la ayuda de mod_dav_svn (módulo de Apache para Subversion), puede acceder a un repositorio de Subversion usando HTTP y un servidor web.

Dicho esto, arremangémonos e instalemos estas herramientas en un servidor RHEL / CentOS 7 , Fedora 22-24 , Debian 8/7 y Ubuntu 16.04-15.04 . Para nuestras pruebas usaremos un servidor CentOS 7 con IP 192.168.0.100 .

En el lado del cliente (una máquina con Windows 7 ), instalaremos y usaremos TortoiseSVN (que se basa en Apache Subversion) como una interfaz para SVN.

Nuestro entorno de prueba

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

Paso 1: instalación y configuración de SVN en Linux

Como acabamos de mencionar, confiaremos en Apache para acceder al repositorio SVN mediante una interfaz web. Si aún no está instalado, asegúrese de agregarlo a la lista de paquetes como se muestra a continuación:

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

Durante la instalación en CentOS 7 , se creará un archivo de configuración de Apache para SVN como /etc/httpd/conf.modules.d/10-subversion.conf . Abra el archivo y agregue el siguiente bloque de configuración:

/etc/httpd/conf.modules.d/10-subversion.conf

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

Configurar el módulo Apache SVNConfigurar el módulo Apache SVN

Nota : En Debian / Ubuntu , debe agregar las siguientes líneas al /etc/apache2/mods-enabled/dav_svn.confarchivo.

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

En Debian / Ubuntu , debe habilitar el módulo &ltstrong&gtApache dav_svn&lt/strong&gt :

# a2enmod dav_svn

Un par de aclaraciones:

  1. La directiva SVNParentPath indica el directorio donde posteriormente se crearán nuestros repositorios. Si este directorio no existe (lo que probablemente sea el caso), créelo con:
    # mkdir -p /websrv/svn
    

    Es importante tener en cuenta que este directorio NO debe estar ubicado dentro, o superponerse, DocumentRoot de un host virtual que actualmente está siendo servido por Apache. ¡Esto es espectacular!

  2. La directiva AuthUserFile indica el archivo donde se almacenarán las credenciales de un usuario válido. Si desea permitir que todos accedan a SVN sin autenticación, elimine las últimas cuatro líneas en el bloque Ubicación. Si ese es el caso, omita el paso 2 y diríjase directamente al paso 3 .
  3. Aunque puede tener la tentación de reiniciar Apache para aplicar estos cambios recientes, no lo haga todavía, ya que todavía necesitamos crear el archivo de autenticación con usuarios válidos para SVN y el repositorio en sí.

Paso 2: agregar usuarios permitidos para acceder a SVN

Ahora usaremos htpasswd para crear una contraseña para las cuentas que podrán acceder a SVN. Solo para el primer usuario, necesitaremos la -copción.

Las cuentas permitidas y las contraseñas cifradas con bcrypt ( -B) se almacenarán en / etc / httpd / subversion-auth en pares clave-valor. Tenga en cuenta que, según los estándares actuales, el cifrado MD5 o SHA predeterminado utilizado por htpasswd se considera inseguro.

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

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

No olvide establecer la propiedad y los permisos correctos para el archivo de autenticación:

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

Paso 3: agregue seguridad y cree un repositorio SVN

Dado que accederá a SVN a través de una interfaz web, deberá permitir el tráfico HTTP (y opcionalmente HTTPS ) a través de su firewall.

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

Al volver a cargar la configuración del cortafuegos con --reload, la configuración permanente se aplica de inmediato.

Cree un repositorio SVN inicial llamado tecmint :

# svnadmin create /websrv/svn/tecmint

Cambie el propietario y el propietario del grupo 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

Finalmente, deberá cambiar el contexto de seguridad de /websrv/svn/tecmint(tenga en cuenta que tendrá que repetir este paso si decide crear otros repositorios más adelante):

------------------ 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 : Es posible que los dos últimos comandos no se apliquen si está instalando SVN en un VPS con SELinux desactivado.

Lectura sugerida: aprenda a deshabilitar SELinux temporal o permanentemente en Linux

Reinicie Apache y verifique que el repositorio esté disponible.

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

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

Luego, inicie un navegador web y apúntelo http://192.168.0.100/svn/tecmint. Después de ingresar las credenciales para el usuario válido que creamos en el Paso 1 , el resultado debería ser similar a:

Acceda al repositorio de SVN a través del navegadorAcceda al repositorio de SVN a través del navegador

En este punto no hemos agregado ningún código a nuestro repositorio. Pero lo haremos en un minuto.

Paso 4: instale TortoiseSVN en el cliente de Windows 7

Como mencionamos en la introducción, TortoiseSVN es una interfaz fácil de usar para Apache Subversion. Es un software libre con licencia GPL y se puede descargar desde https://tortoisesvn.net/downloads.html .

Elija la arquitectura ( 32 o 64 bits ) que corresponda a su máquina e instale el programa antes de continuar.

Paso 5: configurar el repositorio SVN en la máquina cliente

En este paso usaremos una carpeta llamada webappdentro de Documentos . Esta carpeta contiene un archivo HTML y dos carpetas llamadas scripts y estilos con un archivo JavaScript y CSS ( script.js y styles.css , respectivamente) que queremos agregar al control de versiones.

Haga clic con el botón derecho en la aplicación web y elija SVN Checkout. Esto creará una copia local del repositorio remoto (que está vacío en este momento) e inicializará la carpeta para el control de versiones:

Configurar SVN en el directorio de clientesConfigurar SVN en el directorio de clientes

En la URL del repositorio, escriba http://192.168.0.100/svn/tecminty asegúrese de que el directorio de pago local siga siendo el mismo, luego haga clic en &ltstrong&gtAceptar&lt/strong&gt :

Configurar el repositorio SVN en el clienteConfigurar el repositorio SVN en el cliente

Ingrese el nombre de usuario y la contraseña (consulte el Paso 2 ) y haga clic en &ltstrong&gtAceptar&lt/strong&gt :

Ingrese las credenciales del usuario SVNIngrese las credenciales del usuario SVN

Se le preguntará si desea realizar el pago en un directorio que no esté vacío. Confirme para continuar con el pago. Una vez que esté completo, aparecerá una marca de verificación verde junto al nombre de la carpeta:

Consulte el directorio SVNConsulte el directorio SVN

Paso 6: Confirmar cambios e implementar archivos en el repositorio SVN remoto

Haga clic derecho de webappnuevo y elija Confirmar esta vez. A continuación, escriba un comentario descriptivo para identificar más tarde esta confirmación y verifique los archivos y carpetas que desea implementar en el repositorio. Finalmente, haga clic en &ltstrong&gtAceptar&lt/strong&gt :

Implementar archivos en el repositorio SVN remotoImplementar archivos en el repositorio SVN remoto

Dependiendo del tamaño de los archivos, la confirmación no debería tomar más de un minuto. Cuando esté completo, verá que ahora estamos en la revisión 1 , que coincide con la versión y los archivos enumerados en la interfaz web:

Confirmar la revisión del repositorio de SVNConfirmar la revisión del repositorio de SVN

Si hay varias personas trabajando en los mismos archivos, querrá actualizar su copia local para tener la última versión disponible para trabajar. Puede hacerlo haciendo clic derecho webappy eligiendo Actualizar en el menú contextual.

¡Felicidades! Ha configurado con éxito un servidor SVN y ha comprometido / actualizado un proyecto simple bajo control de versiones.

Resumen

En este artículo hemos explicado cómo instalar y configurar un servidor de repositorio Apache Subversion en un servidor CentOS 7 , y cómo confirmar cambios en ese repositorio usando TortoiseSVN .

Tenga en cuenta que hay mucho más en SVN y TortoiseSVN de lo que podemos cubrir adecuadamente aquí (especialmente cómo volver a revisiones anteriores), por lo que es posible que desee consultar los documentos oficiales ( SVN y TortoiseSVN ) para obtener más información y casos de configuración.

Como siempre, ¡no dudes en hacernos saber si tienes alguna pregunta! No dude en utilizar el formulario de comentarios a continuación para comunicarse con nosotros en cualquier momento.

SVN

Leave a Comment

Your email address will not be published. Required fields are marked *

Hazlo Linux