sábado, 9 de abril de 2011

Configurando apache para trabajar con repositorios Subversion en windows

En esta ocasión voy a explicar como configurar subversion para el control de versiones de nuestros proyectos.

De antemano advierto que solo se configurará Subversion para tener acceso vía web, esto por razones diversas, por lo general, los IDE's con los que trabajamos poseen plug-in's que acceden a nuestros repositorios de esta manera, por lo que no es necesario tener en ejecución el servidor svnserve para tener acceso a nuestros repositorios, bien desde nuestra red o bien desde Internet.

Se asume que ya se tiene instalado apache, en mi caso lo tengo instalado vía wamp versión 2.1e.

Este trae:

  • apache versión 2.2.17

  • php versión 5.3.3

  • mysql versión 5.5.8

  • PhpMyadmin versión 3.2.0.1

  • SQLBuddy versión 1.3.2

Primero que nada debemos descargarnos la aplicación en cuestión Subversion, la podemos encontrar aquí, para efectos de este mini-how-to, se utilizó la versión 1.6.6.

Para instalarlo basta con siguiente, siguiente, siguiente; a menos que quieras cambiar la dirección de instalación de subversion, la deberían tener en C://archivos de programas/Subversion.

Yo en lo particular lo he instalado en la carpeta de instalación de wamp, C:\wamp\bin\subversion\Subversion.

Ya instalado Subversion, haremos los siguientes ajuste:


  1. Tomamos los dos archivos .so que se encuentran en la carpeta bin de la instalación de subversion, en mi caso C://wamp/bin/subversion/Subversion/bin y los copiamos en la carpeta modules de nuestra instalación de apache C:\wamp\bin\apache\Apache\modules. A diferencia de otros tutoriales que se consiguen en la web

  2. Editamos el archivo httpd.conf, ubicado en la carpeta conf de la instalación de apache C:\wamp\bin\apache\Apache\conf, buscamos la sección de LoadModule y la linea LoadModule dav_module modules/mod_dav.so descomentarla.
    comentada

    #LoadModule dav_module modules/mod_dav.so

    descomentada

    LoadModule dav_module modules/mod_dav.so

    y al final de esta sección le añadimos las siguientes dos lineas (puede ser en el lugar que queramos):

    LoadModule dav_svn_module modules/mod_dav_svn.so

    LoadModule authz_svn_module modules/mod_authz_svn.so



  3. Ahora nos dirigimos al final del archivo agregamos la siguiente linea:
    Include conf/extra/httpd-subversion.conf

  4. Este archivo será el que utilicemos para crear la seguridad y el acceso a nuestros repositorios vía web.

  5. Pues bien, vamos a crear el archivo httpd-subversion.conf en la carpeta ubicada en C:\wamp\bin\apache\Apache\conf\extra, este archivo contendrá la siguiente información:

  6. <location /svn>

    # Le dice a Apache qué módulo será responsable de servir esa URL - en este caso, el módulo de Subversion.
    DAV svn

    # Para Subversion 1.3 y superiores, esta directiva habilita el listado de todos los repositorios disponibles bajo SVNParentPath.
    SVNListParentPath on

    # Activa la versión automática de WebDAV sin un cliente SVN.
    SVNAutoversioning on

    # Opciones de indexacion.
    Options Indexes MultiViews IncludesNoExec

    # Le dice a Subversion que busque repositorios en C:/ruta/de/mis/repositorios.
    SVNParentPath C:/ruta/de/mis/repositorios

    # Utilizado para mejorar la visualización desde un navegador de web.
    SVNIndexXSLT /svnindex.xsl

    # Se utiliza para activar la autenticación básica, es decir, Usuario/contraseña.
    AuthType Basic

    # Se utiliza cuando aparece el diálogo de autenticación como información para indicar que se necesita su autenticación.
    AuthName "Mis Repositorios"

    # Especifica qué archivo de contraseñas se utiliza para la autentificación.
    AuthUserFile C:/wamp/bin/apache/Apache2.2.17/usuarios.conf

    # Lugar del archivo de Acceso para las rutas dentro del repositorio de Subversion.
    #AuthzSVNAccessFile C:/wamp/bin/apache/Apache2.2.17/acceso.conf

    # Obliga a apache a solicitar autenticación usuario/contraseña
    Require valid-user


    </location >

    Para mayor información de como configurar esta sección pueden referirse a la siguiente dirección.

    Nota: En <location /svn>, /svn (puede ser cualquier nombre), es el nombre con el que accederemos vía web, es decir, http:/<monbre de mi servidor>//svn


  7. Después de todo esto, necesitamos crear el archivo de usuarios que podrán acceder a nuestros repositorios, tal como se especificara en el punto anterior, le colocaremos el nombre de usuarios.conf, este archivo lo colocaremos en la carpeta raíz de apache C:/wamp/bin/apache/Apache, aunque puede ir en el lugar que mejor no parezca. Para esto hacemos win+r escribimos cmd y nos abre la consola de MS-DOS (tambien se puede hacer inicio->ejecutar->cmd) y escribimos los siguiente:
    C:\wamp\bin\apache\Apache\bin\htpasswd -cm "C:\wamp\bin\apache\Apache\usuarios.conf" administrador
  8. nos solicitará la contraseña para el usuario administrador dos veces. Si queremos agregar nuevos usuarios solo tendremos que ejecutar la siguiente linea
    C:\wamp\bin\apache\Apache\bin\htpasswd -m "C:\wamp\bin\apache\Apache\usuarios.conf" nuevousuario
    Nótese que en esta ocasión solo se ha colocado la opción -m y no -cm; esto es porque la opción c crea el archivo que le hemos colocado, para más información refiérase a la documentación de Subversion aquí.

  9. Por otro lado tenemos el acceso a los repositorios a través de lo que se llama rutas de acceso, este archivo lo crearemos al igual que en el punto anterior en la carpeta C:/wamp/bin/apache/Apache con el editor de texto de nuestra preferencia, en él colocaremos la siguiente información:
    [aliases]

    administrador = CN=Nombre del administrador,OU=area de trabajo,DC=grupo de trabajo,DC=empresa
    usuario1 = CN=Nombre del Usuario1,OU=area de trabajo,DC=grupo de trabajo,DC=empresa
    usuariodev = CN=Nombre del Usuariodev,OU=area de trabajo,DC=grupo de trabajo,DC=empresa
    usuariodoc = CN=Nombre del usuariodoc,OU=area de trabajo,DC=grupo de trabajo,DC=empresa


    [groups]
    administratores = &administrador, &usuario1
    desarrolladores = &usuariodev
    documentadores = &usuariodoc
    invitados = anonymous, anonimo

    # Regla de acceso por defecto para TODOS los repositorios
    # Todo el mundo puede leer, los administradores pueden escribir.
    [/]
    * = r
    @administrador = rw

    # Dar a los documentadores acceso de escritura
    # a todas las carpetas de documentación
    [miproyecto:/trunk/doc]
    @documentador = rw

    [miproyecto:/trunk]
    @administrador = rw
    @desarrollador = rw
    @documentador = r
    usuariodev = rw

    [miproyecto:/branches]
    @administrador = rw
    @desarrollador = rw
    usuariodev = r

    [miproyecto:/tags]
    @administrador = rw
    @desarrollador = rw
    @documentador = r
    usuariodev = r

    [miotroproyecto:/]
    @administrador = rw
    @desarrollador = rw
    @documentador = rw

    Nota: este es un ejemplo para visualizar algunas combinaciones que se pudieran hacer en este archivo.

Nota: En el punto 5 la linea #AuthzSVNAccessFile C:/wamp/bin/apache/Apache2.2.17/acceso.conf aparece comentada, esto es porque por alguna razón que desconozco por el momento, apache no está permitiendo acceder a los repositorios a través de los grupos definidos; mientras resuelvo el problema se mantendrá comentada.

Nota: En el mismo punto 5 la linea #SVNIndexXSLT /svnindex.xsl también esta comentada, este archivo es un compendio de 2 archivos el svnindex.xsl y svnindex.css; estos archivos van en la carpeta que indica la directiva DocumentRoot del archivo de configuración httpd.conf de Apache. Los archivos se pueden conseguir en la web con solo escribir svnindex.xsl



1 comentario:

Dorso dijo...

Buenas, sabes que hago todo tal cual lo indicas y sigue sin levantarme el wamp, probé seguir varios tutoriales pero con ninguno consigo tener éxito. El problema lo tengo cuando agrego las líneas:
LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

al httpd.conf, ahí deja de levantar...y obviamente que esos archivos se encuentran en d:\wamp\bin\apache\apache2.2.17\modules
Ya no sé qué hacer...estoy intentando con la versión 1.6.6 de subversion. Al principio me había bajado la última versión (van por la 1.6.16) pero no había ningún tutorial para configurar esa versión ya que no tiene archivos .so, ni libdb*.dll ni intl3_svn.dll.
Qué puede ser lo que está pasando? según vi en foros la mayoría tiene exáctamente el mismo problema, pero ninguno lo resolvió