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 no lo está haciendo.

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

En el ecosistema de 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 (el módulo de Apache para Subversion), puede acceder a un repositorio de Subversion utilizando HTTP y un servidor web.

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

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

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

Paso 1 - Instalar y configurar 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:

SVN

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

Módulo class = code-label> /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 dav_svn Apache :

# a2enmod dav_svn

Un par de aclaraciones:

  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.

Paso 2 - Agregar usuarios permitidos para acceder a SVN

Ahora usaremos htpasswd para crear una contraseña para las cuentas a las que se les permitirá acceder a SVN. Solo para el primer usuario, necesitaremos la opción -c .

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 para los estándares de hoy, el cifrado predeterminado de MD5 o SHA 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 correcta y los permisos 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 - Agregar seguridad y crear un repositorio SVN

Dado que accederá a SVN a través de una interfaz web, deberá permitir el tráfico de 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 firewall con --reload , las configuraciones permanentes se implementan de inmediato.

Cree un repositorio SVN inicial llamado tecmint :

# svnadmin create /websrv/svn/tecmint

Cambie el propietario y el propietario del grupo a apache recursivamente:

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

Reinicie Apache y verifique que el repositorio esté disponible.

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

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

A continuación, inicie un navegador web y diríjalo a http://192.168.0.100/svn/tecmint . Después de ingresar las credenciales para el usuario válido que creamos en Paso 1 , la salida debería ser similar a:

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 gratuito 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: configuración del repositorio SVN en la máquina cliente

En este paso utilizaremos una carpeta llamada webapp dentro de Documentos . Esta carpeta contiene un archivo HTML y dos carpetas llamadas scripts y estilos con Javascript y un archivo CSS ( script.js y styles.css , respectivamente) que queremos Añadir al control de versiones.

Haga clic con el botón derecho en 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:

En la URL del repositorio, escriba http://192.168.0.100/svn/tecmint y asegúrese de que el directorio de pago local siga siendo el mismo, luego haga clic en Aceptar :

Ingrese el nombre de usuario y la contraseña (consulte Paso 2 ) y haga clic en Aceptar :

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

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

Haz clic derecho en webapp nuevamente y elige Confirmar esta vez. A continuación, escriba un comentario descriptivo para identificar luego este compromiso y verifique los archivos y carpetas que desea implementar en el repositorio. Finalmente, haga clic en Aceptar :

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

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 con el botón derecho en webapp y seleccionando Actualizar en el menú contextual.

¡Felicitaciones! Ha configurado correctamente un servidor SVN y ha comprometido/actualizado un proyecto simple bajo el control de versiones.

Resumen

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

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

Como siempre, no dude en hacernos saber si tiene alguna pregunta. Siéntase libre de usar el formulario de comentarios a continuación para comunicarse con nosotros en cualquier momento.

Todos los derechos reservados © Linux-Console.net • 2019-2021