Apache subversion sobre OpenSuse I

Empecemos bien.

Este post es el resultado de un proyecto que realicé en mi antigua empresa y que me sirvió para adentrarme en el conocimiento de Apache. Espero que os sirva porque subversion puede ser muy util para empresas que necesitan tener un sistema controlado de las revisiones y versiones de sus datos.

Propuesta:

La idea inicial es utilizar un servidor web Apache el cual estara integrado con el servidor subversion, que a su vez manejara las peticiones hacia los repositorios de un servidor de datos donde estan alojados los repositorios de los diferentes proyectos que pueda tener una empresa. La localizacion de los repositorios puede estar en un servidor linux o windows.

A su vez accedemos a los distintos repositorios con autenticacion LDAP del dominio, lo cual lo configuraremos en Apache. Esto es una medida de seguridad de las multiples que se os puedan ir ocurriendo. Ya sabemos que apache brinda muchas posibilidades.

En mi caso, el servidor Apache lo tenemos alojado en un servidor externo llamado “servidorweb”.

Tareas previas a la instalación:
Antes que nada debemos de conocer un poco el funcionamiento de subversion, para ello podemos echarle un vistazo a la documentacion de la pagina oficial: http://subversion.tigris.org/

Ademas para el uso habitual de Subversion usaremos Tortoise SVN y que nos podemos descargar gratuitamente desde su pagina oficial: http://tortoisesvn.tigris.org/

Proceso de instalación de los paquetes

Necesitaremos tener instalados los siguientes paquetes mediante yast de OpenSuse:

Paquete

Version

Descripcion

apache2

2.2.3

The Apache Web Server

apache2-doc

2.2.3

Additional Package Documentation

apache2-prefork

2.2.3

Apache 2 “prefork” MPM (Multi-Processing Module)

subversion

1.4.0

A Concurrent Versioning system similar to but better than CVS

subversion-doc

1.2

A Concurrent Versioning System Similar to, but Better than CVS

subversion-tools

1.4.0

Tools for Subversion

subversion-server

1.4.0

Apache server module for Subversion server

Si por algun motivo falta algun paquete o libreria necesaria para lanzar correctamente Apache, éste nos lo dirá y podremos añadirlo desde Yast.

Proceso de configuracion de Apache:

Editaremos el fichero de Apache para que cargue los modulos que hay disponibles, al haberlo instalado desde Yast, el fichero estará en la siguiente localización:

/etc/sysconfig/apache2

El cual nos muestra una linea como esta:

APACHE_MODULES=”actions alias auth_basic authn_file authz_host authz_groupfile authz_default authz_user authn_dbm autoindex cgi dir env expires include log_config mime negotiation setenvif ssl suexec userdir php5 dav dav_svn authnz_ldap ldap “

a la que hemos añadido al final los siguientes modulos:

dav
dav_svn
authnz_ldap
ldap

donde los dos primeros son para la integracion con subversion y los ultimos para LDAP. Con esto tendremos cargados los modulos que necesita Apache para la integracion con Subversion.

Proceso de configuracion de repositorios en Apache:

Ahora tenemos que decirle a Apache los repositorios los cuales añadiremos como directorios de Apache en los archivos de configuracion.

Al instalar los paquetes de subversion se nos crea el siguiente fichero:

/etc/apache2/conf.d/subversion.conf

al cual Apache llama apuntando a todos los ficheros .conf de la ruta “/etc/apache2/conf.d/”. Lo que editemos aqui sera lo que carguemos en Apache.

Editamos el fichero y añadimos la configuracion para un repositorio:

<Location /svn/prueba>
DAV svn
SVNPath /srv/svn/repositorios/servidor-ficheros/prueba

AuthType Basic
AuthName “Authorization for project2 required”
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPBindDN “CN=ldapauth,CN=Users,DC=dominio,DC=com”
AuthLDAPBindPassword ldapauth
AuthLDAPURL “ldap://servidor-ldap.dominio.com:3268/DC=dominio,DC=com?sAMAccountName?sub?(objectClass=*)”
require valid-user
</Location>

Los datos explicativos de este fichero de configuracion son:

  • DAV svn –> Usar subversion
  • SVNPath –> Directorio donde reside el repositorio de subversion
  • AuthType Basic –> Autenticacion de tipo basico
  • AuthName  “Authorization for project2 required” –> Cabecera que aparecera al pedir la autenticacion.
  • AuthBasicProvider ldap –> Autenticacion por LDAP
  • AuthzLDAPAuthoritative off –>
  • AuthLDAPBindDN “CN=ldapauth,CN=Users,DC=dominio,DC=com” –> Localizacion en el arbol del Active Directory donde esta el usuario para la autenticacion con el LDAP
  • AuthLDAPBindPassword ldapauth –> Usuario para la autenticacion con el LDAP
  • AuthLDAPURL “ldap://servidor-ldap.dominio.com:3268 /DC=dominio,DC=com?sAMAccountName?sub?(objectClass=*)” –> URL de busqueda que hace sobre el LDAP y sobre la que se buscaran los usuarios para el acceso al servidor. Aqui el numero de puerto dependera de a que servidor apuntemos o de como lo tengamos configurado en nuestro dominio.
  • require valid-user –> Requiere un usuario valido

Para la consulta LDAP se puede depurar usando todo tipo de busquedas que permita el modulo LDAP de Apache, una sencilla aplicada a nuestro ejemplo para que solo haga la busqueda de los usuarios que pertenezcan al grupo “Sistemas” seria:

AuthLDAPURL “ldap://ldap-server:3268 /DC=dominio,DC=com?sAMAccountName?sub?(memberOf=CN=Sistemas,OU=GruposCreados,DC=dominio,DC=com)”

Montaje de repositorios en el servidor:

En mi caso los datos se van a almacenar en un servidor windows, por lo que tendré que montar la carpeta contenedora de los repositorios y referenciarlos en mi servidor OpenSuse. Para ello deberemos de contar con una carpeta compartida (donde estaran los repositorios) y un usuario y password del dominio que tenga permisos sobre esa carpeta compartida.

Un riesgo de todo esto es tener un servidor web publico con los repositorios montados localmente en el mismo servidor donde reside Apache. Para ello hay multiples medidas de seguridad (proxy inverso, SSL, reescritura de URLs..) que podemos utilizar. El caso es jugar un poco con ello.

Bien, creamos la carpeta para el repositorio:

mkdir /srv/svn/repositorios/servidor-ficheros/

1.- Montaje manual:

Montar el repositorio de “servidor-ficheros” en el servidor OpenSuse local. Esto se puede hacer a mano con el siguiente comando:

mount -t cifs -o uid=wwwrun,gid=www,username=DOMINIO/subversion,pass=**password** //servidor-ficheros/Subversion /srv/svn/repositorios/servidor-ficheros/

Donde hacemos el montaje mediante el sistema de ficheros cifs (evolucion de samba), y lo montamos con el usuario de Apache y su grupo. Ademas al montarlo autentifica con el usuario de dominio “subversion” sobre “servidor-ficheros”.  Hay que prestar atencion al password.

Podemos desmontar el volumen con el comando:

umount -t cifs //servidor-ficheros/Subversion /srv/svn/repositorios/servidor-ficheros/

2.- Montaje automatico

Para que tambien se carge al inicio lo tenemos que añadir al fichero de montaje de arranque /etc/fstab, el cual podemos editar y añadir al final la ultima linea:

/dev/sda2 / ext3 acl,user_xattr 1 1
/dev/sda3 /home ext3 acl,user_xattr 1 2
/dev/sda1 swap swap defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
/dev/fd0 /media/floppy auto noauto,user,sync 0 0
//servidor-ficheros/subversion /srv/svn/repositorios/servidor-ficheros cifs uid=wwwrun,gid=www,username=DOMINIO/subversion,password=**password**,dmask=0777,fmask=0777

Con esto nos monta el directorio “//servidor-ficheros/Subversion” en /srv/svn/repositorios/servidor-ficheros/

Podemos entrar ahora a explorarlo y ver que aparecen todas las carpetas con los permisos adecuados.

Recargamos Apache
Podemos reiniciar el servidor

rcapache2 restart

o recargar para asegurar de que no da ningun fallo. Es posible que haya que ejecutar este comando en algun proceso anterior:

rcapache2 reload

Podemos acceder mediante tortoise a http://servidor-web/repos/proyecto/

Etiquetas: , ,

Una respuesta to “Apache subversion sobre OpenSuse I”

  1. Apache subversion sobre OpenSuse II « Vuelta al ritual de lo habitual Says:

    […] subversion sobre OpenSuse II By ismich Con el post anterior veiamos como usar un repositorio Subversion en Apache, lo montabamos desde un servidor de […]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: