Webmaster > Tutoriales y Manuales

Como crear un repositorio SVN y gestión básica

(1/1)

shakaran:
Requisitos
- Acceso SSH (a partir del plan ebasic en Quijost)

Información adicional
- La versión SVN de Quijost es 1.4.2 1.6.11 (por defecto con CentOS 5.5 5.8 )

Crear un repositorio Subversion es un tarea increíblemente simple. La utilidad svnadmin que facilita Subversion provee un subcomando "create" para hacer justamente esto:


--- Código: ---$ svnadmin create /home/tu_usuario/public_html/ruta_repositorio
--- Fin del código ---

Siendo "tu_usuario" el usuario de quijost de cuenta de alojamiento y "ruta_repositorio" el nombre del repositorio que quieras utilizar.

Con ello crearas un repositorio SVN con el almacenamiento de sistema de ficheros de datos por defecto.

Antes de Subversion 1.2, por defecto era "Berkeley DB", posteriores son "FSFS". Puedes elegir explícitamente
el sistema de ficheros con el argumento "--fs-type", que acepta como parámetro "fsfs" o "bdb".

FSFS:

--- Código: ---$ svnadmin create --fs-type fsfs /home/tu_usuario/public_html/ruta_repositorio
--- Fin del código ---

BDB:

--- Código: ---$ svnadmin create --fs-type bdb /home/tu_usuario/public_html/ruta_repositorio
--- Fin del código ---

Gestión básica de un repositorio SVN

1 - Realizar cambios en el repositorio

En un repositorio es posible modificar, añadir o eliminar cualquier archivo. Para añadir un archivo:


--- Código: ---svn add archivo
--- Fin del código ---

O podemos eliminar un archivo:


--- Código: ---svn delete archivo
--- Fin del código ---

2 - Actualizar el repositorio

Cuando queramos confirmar los cambios y que se apliquen en el repositorio, ejecutaremos:


--- Código: ---svn commit -m "Mensaje de actualizacion"
--- Fin del código ---

3 - Acceder al repositorio

Por último, puedes ver el contenido del repositorio:


--- Código: ---svn list http://www.tudominio.com/mirepo
--- Fin del código ---

También puedes verlo vía web accediendo a:

http://www.tudominio.com/mirepo

Más información en el manual completo: http://svnbook.red-bean.com/

Escain:
Introducción
Con el fin de mejorar este tutorial, aportaré como he configurado el subversion para que responda a través de internet, funcione correctamente con el http://tortoisesvn.net/ y habilitar contraseñas según los proyectos.

Queremos no solo que el subversión funcione, sino que pueda haber varios proyectos en nuestro repertorio y cada uno tenga unos permisos de acceso distintos, de forma que algunos usuarios puedan acceder a ciertos proyectos y otros no.
También deseamos que la comunicación con el servidor sea seguro, mediante https.

Instalación en el servidor con Centos 5
El primer paso es instalar el svn:

--- Código: ---yum -y install mod_dav_svn mod_ssl subversion
--- Fin del código ---

Crear los distintos repertorios para el subversion:

* /usr/subversion/svn/ Para guardar los distintos proyectos.
* /usr/subversion/access/ Para los archivos de permisos, contraseñas y certificados
--- Código: ---mkdir /usr/subversion
mkdir /usr/subversion/svn
mkdir /usr/subversion/access

--- Fin del código ---

Modificar el propietario/grupo:

--- Código: ---chown -R apache /usr/subversion
chgrp -R apache /usr/subversion
--- Fin del código ---

Crear un proyecto de prueba:

--- Código: ---svnadmin create /usr/subversion/svn/prueba
--- Fin del código ---

Crear un fichero de usuarios:
Creamos un fichero de usuario, es un fichero estándar que contiene sencillamente una lista de nombres de usuarios y sus respectivas contraseñas codificadas, del que apache verificará si el usuario tiene los permisos adecuados.
     Nota: los valores entre < y > son a tu elección.
El archivo de usuarios (que vamos a llamar users por ejemplo) lo colocaremos en la carpeta access.

--- Código: ---htpasswd -c /usr/subversion/access/users <usuario1>
    <pass>
    <pass>
htpasswd /usr/subversion/access/users <usuario2>
    <pass>
    <pass>
htpasswd /usr/subversion/access/users <usuario3>
    <pass>
    <pass>
...

--- Fin del código ---

Configurar el acceso de cada usuario:
Ahora configuraremos un archivo que asigna qué usuarios pueden acceder a qué proyecto. En nuestro caso solo tenemos uno, pero podría haber muchos.
Creamos un archivo (ACL por ejemplo) en nuestra carpeta access:

--- Código: ---nano /usr/subversion/access/ACL
--- Fin del código ---
Y escribimos lo siguiente:

--- Código: ---[prueba:/]
@pruebaTeam=rw

[groups]
pruebaTeam=usuario1, usuario2

--- Fin del código ---

Una pequeña explicación:
Para cada proyecto, escribimos:

--- Código: ---[<repoName>:<repoPath>]
<usuario>=<permisos>
<usuario>=<permisos>
...

--- Fin del código ---
Nota: los permisos empiezan por ser nulos para todos y se asignan, por lo que si en una linea das por ejemplo "rw" y a la siguiente asignas solo "r", el usuario tendrá "rw"
Los permisos son "r" = lectura, "w"=escritura.

Se pueden crear grupos de usuarios mediante:

--- Código: ---[groups]
<nombreGrupo>=<usuario>, <usuario>, ...

--- Fin del código ---

Configurar Apache:
Debemos elegir nuestro dominio/directorio que corresponderá al subversion, por ejemplo, en nuestro caso usaremos http://<dominio>/svn/<proyecto>
Accedemos al archivo de configuración del subversion para apache:

--- Código: ---nano /etc/httpd/conf.d/subversion.conf
--- Fin del código ---

* Quitamos las lineas de LimitExcept Para que nos pida contraseña también para descargar y no solo para el commit.
* Añadimos AuthzSVNAccessFile /usr/subversion/access/ACL dentro del Location
* Modificamos la linea SVNParentPath a /usr/subversion/svn
* Modificamos la linea <Location.. por <Location /svn>
* Modificamos la linea AuthUserFile a /usr/subversion/access/usersEl archivo final queda aproximadamente como:

--- Código: ---LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

#diversos comentarios

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

Listen 447

#Elegimos nuestro puerto, por ejemplo 447 para el svn ssl
<VirtualHost miHost:447>
#la raiz no puede ser subversion, para evitar acceso a /access
#style es una buena opción, allí guardaremos la hoja .xsl
DocumentRoot "/usr/subversion/styles"
#nuestro servidor
ServerName miHost
#activar SSL
  SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
#las carpetas de los certificados, aun no creadas
SSLCertificateFile /usr/subversion/access/ssl.crt
SSLCertificateKeyFile /usr/subversion/access/ssl.pem
#la carpeta de subversion, en nuestro caso /svn
<Location /svn>
DAV svn
SVNParentPath /usr/subversion/svn
AuthzSVNAccessFile /usr/subversion/access/ACL
Satisfy all
Require valid-user
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /usr/subversion/access/users
</Location>
</VirtualHost>

--- Fin del código ---

No olvides de sustituir miHost por tu host real, por ejemplo: quijost.com

Claves SSL:
El siguiente paso es insertar los certificados si los tenemos: ssl.pem para la clave privada y ssl.crt para el certificado.
En nuestro caso, como no tenemos dinero de sobra, crearemos un certificado auto-firmado:


--- Código: ---cd /sur/subversion/access
openssl genrsa -des3 -rand file1:file1 -out ssl.key 1024
openssl rsa -in ssl.key -out ssl.pem
openssl req -new -key ssl.pem -out ssl.csr
openssl x509 -req -days 365 -in ssl.csr -signkey ssl.pem -out ssl.crt

--- Fin del código ---
Hay que responder a algunas preguntas, pero tampoco requieren de mucha explicación: claves, nombres, etc.
El .csr es el archivo que hay que pasar a las entidades para que nos proporcionen un certificado real.
También hay que tener en cuenta que el nombre del host no puede ser una IP si queremos un certificado real, y debe ser obligatoriamente el nombre de nuestro servidor web, por ejemplo quijost.com

Iniciamos el servicio:
service httpd start

Otras operaciones interesantes:
Puede hacer un backup de todo el svn con:

--- Código: ---svnadmin dump /usr/subversion/svn/prueba > /usr/subversion/prueba.dmp

--- Fin del código ---

Y puede volver a cargar un backup mediante:

--- Código: ---svnadmin load /usr/subversion/svn/prueba < /usr/subversion/prueba.dmp

--- Fin del código ---

Muy práctico para no tener disgustos o para transferir el servidor svn a otro lado.

Espero que les sea útil ;)



Nuestro Subversion esta listo, una vez instalado el TortoiseSVN en tu sobremesa, creas una carpeta y haces un "SVN Checkout" que viene en el menú al hacer clic derecho sobre la carpeta.
Te  pedirá la clave de alguno de los usuarios que hemos creado y listo.
No te olvides de hacer commit después de trabajar.
Puede acceder a el mediante:
https://mihost:447/svn/prueba

shakaran:
¡Bienvenido y muchas gracias por tu aporte Escain!

Como comentario adicional, para estos cambios adicionales es requisito disponer de un VPS ya que se deben acceder a configuraciones de Apache (que en cuentas compartidas no se permite).

También pueden unificarse los comandos:


--- Código: ---chown -R apache /usr/subversion
chgrp -R apache /usr/subversion
--- Fin del código ---

Por:

--- Código: ---chown -R apache.apache /usr/subversion
--- Fin del código ---

Esperamos que completes el manual con la parte SSL. Muy buen trabajo.

Navegación

[0] Índice de Mensajes

Ir a la versión completa