sábado, 28 de agosto de 2010

Bienvenidos!!!

Muchas gracias por ser parte de este blog, hoy es el inicio de un trabajo donde se desea plasmar aquellos conocimientos adquiridos durante los procesos de análisis y desarrollo de software en lo que estuve involucrado.

Como configurar Subversion en Centos con YUM

Estos son los pasos básicos para configurar un svn en nuestro servidor CentOS. No se profundiza mucho en todas las funcionalidades que podemos lograr con subversion; sin embargo lo que buscamos es poder configurar subversion de manera básica para poder contar con un repositorio lo mas rápido posible. Todos sabemos que un repositorio, es de suma importancia en cualquier desarrollo de software formal o informal.


Requerimientos

  • CentOS 4.x/RHEL 4
  • CentOS 5.1/RHEL 5
  • CentOS 5.5/RHEL 5

Instalación


Primero, debemos instalar los paquetes necesarios para svn, en caso que NO tengas apache (httpd) instalado, procede a instalarlo y luego instalamos svn (subversion); para facilitar pasos de instalación de herramientas, les recomiendo usar yum, recuerden que tienen que estar logueados como un usuario con privilegios, podemos decir que root.

[root@pinguino ~]# yum install httpd

[root@pinguino ~]# yum install mod_dav_svn subversion


Configuración

Apache (configuración básica)

Supondremos que ya se encuentran instalados los paquetes mencionados anteriormente, entonces procedemos a iniciar apache, este paso podría no ser necesario lo que tratamos es de ir paso a paso, para que cualquier persona pueda configurar un svn.


[root@pinguino ~]# vim /etc/httpd/conf/httpd.conf -- Edite lo que necesite y guarde
[root@pinguino ~]# service httpd start -- Iniciar apache
[root@pinguino ~]# chkconfig httpd on -- Indica que el servidor web estará disponible para todos los niveles de ejecución especificados para dicho servicio

Una pequeña prueba para verificar que apache se encuentra corriendo, simplemente ingresamos a un browser y digitamos http://, si nos muestra la pantalla default de apache entonces estamos bien.


Subversion en Apache

El siguiente paso es realizar la configuración del svn dentro de apache, básicamente lo que tenemos que hacer es crear un archivo subversion.conf en /etc/httpd/conf.d, en caso que no existe de lo contrario lo sobreescribiremos y realizaremos la configuración.

[root@pinguino ~] cd /etc/httpd/conf.d/
[root@pinguino ~] vim subversion.conf

# Asegurese de quitar el comentario en estas lineas en caso que se
# encuentre comentadas

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


<VirtualHost
<ip del servidor>:80>
ServerAdmin admin@
<nombre del dominio>.com
ServerName svn.
<nombre del dominio>.com
ServerAlias "www.svn.
<nombre del dominio>.com"

DocumentRoot "/var/www/svn.
<nombre del dominio>.com"

<Directory "/var/www/svn.
<nombre del dominio>.com">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

# Aqui se define el path para los repos, por ejemplo el url para el svn,
# seria http://svn.<nombre del dominio>.com/repos/<nombre del repo>
<Location /repos>
DAV svn

SVNParentPath /var/www/svn.
<nombre del dominio>.com

# Aqui es donde definimos el archivo que contiene usuarios y passwords,
# tambien el archivo de los access list, donde se pueden crear grupos
# ya sea grupos de lectura o de escritura
AuthzSVNAccessFile /etc/svn-acl-conf
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/svn-auth-conf
Require valid-user

# Las siguientes lineas permiten lecturas anonimas al repositorio,
# para lograr escribir se necesita credenciales
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
</VirtualHost>


Lo que nos faltar
ía para concluir con nuestra configuración, es agregar los usuario que tienen las credenciales para poder escribir y agregar archivos al repositorio. Inicialmente, para crear y agregar un usuario al archivo, se utiliza htpasswd -cm; sin embargo para agregar el segundo usuario tenemos que utilizar htpasswd -m para agregar usuario adicionales, ya que con -cm se crea el archivo y se agrega el usuario cada vez por lo que siempre existiría solamente un usuario.


[root@pinguino ~] htpasswd -cm /etc/svn-auth-conf usuario
New password:
Re-type new password:
Adding password for user usuario
[root@pinguino ~] htpasswd -m /etc/svn-auth-conf otro_usuario
New password:
Re-type new password:
Adding password for user otro_usuario



Para concluir, debemos crear y configurar la lista de acceso que se encuentra en el archivo de configuraci
ón que se encuentra en apache, esto es opcional en particular yo lo recomiendo para tener un mejor control de las personas y realizar grupos o perfiles dependiendo de los usuarios que vamos a crear en el repositorio.
Para lo anterior, debemos crear el archivo /etc/svn-acl-conf; donde la nomenclara es la siguiente:

[nombre_del_repo : path_del_repo]
user = access

donde, access puede ser r (read), rw (read-write), o si de lo contrario vacio que significa que no va a tener acceso de nada. El default los ACL no le dan acceso a ningun usuario al menos que se configure. Supongamos que tenemos un repositorio llamado PRUEBA donde nos gustaria darle acceso de lectura a usuario1, pero a usuario2 nos gustaria que tuviera acceso de escritura y lectura; veamos este ejemplo:

[prueba:/]
usuario1 = r
usuario2 = rw

Tambien es posible crear grupos de usuarios para agruparlos, a continuacion vemos un ejemplo:

[groups]
dev = usuario2, usuario3

[prueba:/]
usuario1 = r
@dev = rw

Si se desea hacer todos los repositorios leibles para todos los usuario, entonces agregamos lo siguiente:

[/]
* = r


A este punto, estamos listo con la configuracion necesaria para el repositorio, ahora lo unico que nos queda por realizar es crear el repositorio; donde vamos a utilizar svn tools, que nos ayuda a la creacion de repo.
A continuacion los comandos para realizarlo.

[root@pinguino ~] cd /var/www/
[root@pinguino ~] mkdir svn
[root@pinguino ~] cd svn
[root@pinguino ~] svnadmin create repos
[root@pinguino ~] chown -R apache.apache repos
[root@pinguino ~] service httpd restart

Listo!!! solo queda que probemos el repositorio en un browser, unicamente tenemos que ingresar la siguiente direccion http://ip_del_servidor/repos, en ese pagina debemos visualizar un Revision 0:/ page.

Cualquier pregunta o consulta, por favor escriban en un comentario.


Enlaces de interés