Usted está aquí:Inicio/MG Developers/Blog/Guía rápida de instalación de Subversion (SVN) en CentOS

Publicaciones recientes

Por Qué Elegirnos

  • Más de 400 proyectos puestos en producción durante los últimos 15 años demuestran el compromiso con nuestros clientes, certifican nuestra metodología y reflejan la capacidad de nuestro equipo de profesionales.

  • En MicroGestion existe un compromiso genuino con la calidad, la formación continua de nuestros profesionales y la mejora continua de nuestros procesos son la evidencia de dicho compromiso.

  • Creemos que los siguientes rasgos son esenciales para el ejercicio de nuestra actividad:

    » Entusiasmo, como requisito para llevar a cabo un proceso creativo.
    » Proactividad, como engranaje de la dinámica de grupos.
    » Responsabilidad, como condición fundamental para asumir compromisos en cada nivel de la empresa.
    » Trabajo en grupo, como mecánica de trabajo elegida para lograr sinergia.

    Asimismo nuestra capacidad de ejecución se fundamenta en el respeto de los siguiente valores:

    » Flexibilidad, necesaria para buscar el mejor camino en cada proyecto.
    » Compromiso, para formar equipos con conocimiento de dominio y orientación al logro.
    » Solvencia, que nos permite diseñar la mejora alternativa tecnológicas para cada solución.

  • En MicroGestion las personas son el factor más importante para el éxito de los proyectos; la conformación y gestión del capital humano se lleva a cabo teniendo en cuenta los siguientes lineamientos:

    » Determinando el conjunto correcto de personas para cada proyecto.
    » Desarrollando un ambiente donde existan oportunidades de aprendizaje.
    » Propiciando la confianza y el respeto dentro del equipo.
    » Permitiendo el desacuerdo y previendo una manera de resolverlo.
    » Preguntando, no inquiriendo.
    » Reconociendo los logros.

26 Ago

Guía rápida de instalación de Subversion (SVN) en CentOS

La siguiente guía permite instalar Subversion bajo CentOS (Linux) utilizando Apache como servidor de acceso a los repositorios mediante el protocolo http.

Nota: los comandos detallados en esta guía, salvo aclaración en contrario, se asumen ejecutados con la identidad de root.

Acerca de la versión de CentOS

Aunque el procedimiento de instalación de subversion en CentOS es similar para todas las versiones, conviene conocer la versión y el bitnes del OS. Los siguientes comandos permiten identificar la versión de CentOS y la arquitectura del procesador.

# cat /etc/redhat-release
# uname -a

Instalación y configuración de Subversion en CentOS

Instalación de los paquetes de binarios requeridos por Subversion

# yum install subversion
# yum install mod_dav_svn

Creación de un repositorio

Los siguiente comandos realizan la creación del directorio /var/svn y un repositorio denominado repo001 dentro del mismo.

# mkdir /var/svn
# svnadmin create /var/svn/repo001

Para permitir que el repositorio sea expuesto por http utilizando un servidor Apache tendremos que cambiar el owner del repositorio asignado el usuario utilizado por el servidor.

# chown -R apache /var/svn/repo001

Verificar el contenido del nuevo directorio "repo001" correspondiente al repositorio creado.

# ls -l /var/svn/repo001/
total 48
drwxr-xr-x 2 apache root 4096 Aug 15 14:52 conf
drwxr-sr-x 6 apache root 4096 Aug 15 14:52 db
-r--r--r-- 1 apache root    2 Aug 15 14:52 format
drwxr-xr-x 2 apache root 4096 Aug 15 14:52 hooks
drwxr-xr-x 2 apache root 4096 Aug 15 14:52 locks
-rw-r--r-- 1 apache root  229 Aug 15 14:52 README.txt

Configuración del servidor web Apache

Consideraciones si está habilitado SELinux

SELinux o "Security-Enhanced Linux" es un mecanismo que proporciona políticas de control de acceso obligatorio al sistema operativo, estas políticas definen como las aplicaciones y los usuarios pueden acceder a los archivos, directorios, etc. De esta manera se incorpora una capa de protección adicional, asignando un "Contexto de seguridad" a cada archivo, directorio y proceso; cuando un proceso accede a un archivos esta capa de seguridad verificará que el contexto de seguridad del mismo sea compatible con el contexto de seguridad del archivo al que desea acceder.

Ejecutando el comando sestatus podemos conocer el estado de SELinux.

# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

Para ejecutar Subversion con Apache será necesario establecer el contexto de seguridad de los repositorios para que el servidor Apache pueda acceder al contenido de los mismos.

De manera similar a como el comando chmod establece los permisos tradicionales de Linux, el comando chcon es utilizado para establecer el contexto de seguridad de los archivos.

# chcon -R --type httpd_sys_content_t /var/svn/repo001

El mecanismo anterior persiste los cambios entre reinicios del sistema, sin enbargo ante un proceso de re-etiquetado ("relabeled') se perderán, por ello es conveniente indicar a SELinux cual será la "política" por omisión para los archivos ubicados en el repositorio utilizando el comando semanage fcontext.

# semanage fcontext -a -t httpd_sys_content_t "/var/svn/wds/src(/.*)?" 
# semanage fcontext -a -t httpd_sys_script_rw_t "/var/svn/wds/src/[^/]+/(dav|db)(/.*)?" 
# semanage fcontext -a -t httpd_sys_script_exec_t "/var/svn/wds/src/[^/]+/hooks(/.*)?" 
# restorecon -Rv /var/svn/wds/src

El modificador -a del comando fcontext indica que estaremos agregando una regla y con el modificador -t especificamos el contexto aplicar en los archivos.

Utilizaremos el contexto httpd_sys_content_t para los archivos generales del repositorio. Dentro de los directorios dav y db se encuentran los archivos fuente y otros archivos que son modificados por el servidor, en este caso utilizaremos el contexto httpd_sys_script_rw_t. En el directorio hooks se disponen los programas que serán ejecutados ante determinados comandos o eventos dentro del servidor, por ello utilizaremos el contexto httpd_sys_script_exec_t.

El comando restorecon permite restaurar -aplicar en nuestro caso- los permisos por omisión de los archivos.

Archivo de credenciales para autenticación básica

Cuando se configura el acceso a los repositorios mediante un servidor Apache, el mecanismo de autenticación básico (HTTP Basic authentication) es la forma mas simple de agregar seguridad para la verificación de identidades.

Utilizando la utilidad htpasswd podremos administrar las credenciales de los usuarios en un archivo, el siguiente comando permite crear el archivo y agregar un nuevo usuario al mismo.

# htpasswd -c -m /etc/svn-auth.htpasswd user01   
New password:
Re-type new password:
Adding password for user user01

Nota: la primera vez que utilizamos el comando htpasswd tendremos que utilizar el parámetro -c para crear el archivo.

Modificar configuración del servidor Apache para exponer los repositorios

Si necesitamos acceder a los repositorios a través de http será necesario configurar el servidor Apache para que actue como servidor SVN.

Para realizar las siguientes modificaciones será necesario editar el el archivo /etc/httpd/conf.d/subversion.conf.

Identificar la sección de carga de módulos y verificar que se encuentra habilitada la carga de los módulos mod_dav_svn.so y mod_authz_svn.so.

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

Al final del archivo agregar la siguiente definición para exponer los repositorios svn:

<Location>
  DAV svn
  # Directiva para exponer multiples repositorios
  SVNParentPath /var/svn  
  # Autenticación Basica
  AuthName "Repositorio Subversion"
  AuthType Basic
  AuthUserFile /etc/svn-auth.htpasswd  
  # Autorizar solo usuarios autenticados
  Require valid-user
</Location>

La definición precedente permitirá:

  • exponer todos los repositiores definidos en la ubicación /var/svn
  • autenticación básica de acuerdo a las credenciales definidas en el archivo /etc/svn-auth.htpasswd.
  • acceso solo a los usuarios autenticados.

Referencias

Modificado por última vez en Martes, 01 Octubre 2013 09:21
Valora este artículo
(3 votos)
Diego Mendoza

Diego Mendoza se desempeña como arquitecto de software en MicroGestion participando en el proceso de análisis y diseño de soluciones que tengan requerimientos de alta disponibilidad, integración de ambientes heterogéneos, orientación a servicios, gestión de procesos de negocio, etc.

Sitio Web: www.microgestion.com/index.php/mg-developers/blog/author/988-diegomendoza
2 comentarios
  • edwin barrientos retuerto

    Hola gran instructivo, sin embargo al ejecutar el comando
    semanage fcontext -a -t httpd_sys_script_rw_t "/var/svn/wds/src/[^/]+/(dav|db)(/.*)?"
    En un CentOS 7 se obtiene un error.

    Podrias indicarme por que??

    Gracias

    edwin barrientos retuerto Viernes, 08 Julio 2016 05:55 Enlace al Comentario
  • Jose

    Gracias por el tutorial, pero una duda.

    Tengo X numero de usuarios registrados en local, en el servidor Linux.
    Y quiero que, si registro un usuario nuevo o uno existente, pueda acceder al SVN, como lo haria?

    Sin tener que estar registrando el usuario de esa forma que pones, que directamente el svn tome los usuarios del sistema para acceder al SVN

    Jose Martes, 16 Febrero 2016 14:08 Enlace al Comentario
Deja un comentario

Asegúrate de llenar la información requerida marcada con (*). No está permitido el Código HTML. Tu dirección de correo NO será publicada.

Comuníquese con nosotros telefónicamente +54 011 4382-0878 o vía correo electrónico Esta dirección de correo electrónico está protegida contra spambots. Usted necesita tener Javascript activado para poder verla.