Servidor Subversion para Windows y servidor Subversion
portable
Servidor
Subversion para Windows y servidor Subversion portable. 1
Referencias
y manual de Subversion. 3
Instalación
del servidor Subversion SVNServer 3
Configuración
del SVN Server 5
Instalación
del servidor Apache HTTPD.. 6
Arrancando
el servidor HTTPD local 11
Configuración
del servidor HTTPD.. 13
Añadir
usuarios de Subversion al Servidor Subversion. 14
Crear la
versión portable del servidor Subversion con Apache. 15
Uso de la
versión portable. 17
Instalación
del cliente TortoiseSVN.. 17
Pruebas
desde un cliente SVN.. 20
Organización
del repositorio. 22
Resumen
En este artículo vamos a instalar uno de los sistemas de control
de versiones más populares, el servidor Subversion SVNServer para Windows, con
soporte para conexiones HTTP mediante un servidor Apache HTTPD y además
realizaremos una configuración portable del servidor.
Introducción
En nuestro trabajo diario y para cualquier tipo de
proyectos, trabajamos con documentos, archivos, imágenes, hojas de cálculo,
código fuente y todo tipo de ficheros informáticos, normalmente organizados en
carpetas en las que vamos guardando la información.
La mayor parte de las veces, quizás por falta de tiempo,
quizás por desconocimiento o quizás por un poquito de dejadez (seamos
sinceros), los tenemos todos ellos dispersos en grandes carpetas llenas de
documentos y ficheros, que muchas veces son borradas «accidentalmente» o
dejadas en el olvido.
Si además formamos parte de un grupo de trabajo u
organización, la proliferación de «unidades compartidas», que se convierten en
verdaderos maremágnum de ficheros, sin organización metodológica, duplicidad de
ficheros o gestión manual de las versiones de los mismos, con el agravante de
las copias locales no actualizadas, hacen que compartir la información deje de
ser un beneficio y se convierta en un problema.
Afortunadamente hoy día contamos con sistemas de control de
versiones e incluso gestores documentales que nos ayudan en este trabajo. Los
sistemas de control de versiones nos ayudan a crear almacenes de ficheros en
los que cada elemento viene identificado con una versión, de manera que se
centraliza y coordina la gestión de los mismos. Los sistemas de gestión
documental aportan además un gran número de funciones avanzadas de organización
y búsqueda de la información, pero estos sistemas, dada su complejidad, los
dejaremos para quizás otro artículo.
Las ventajas que nos aporta utilizar un sistema de control
de versiones son, por ejemplo:
- Creación y mantenimiento centralizado de repositorios
- Fácil creación y organización de las carpetas de ficheros
- Control de las versiones de los ficheros
- Creación de copias locales de todo o parte del
repositorio, que nos permite trabajar de forma independiente en cada PC
con la información del repositorio - Sistemas de sincronización y coordinación entre los
diferentes miembros del grupo u organización, para que el trabajo de un
usuario no perjudique (al menos sin avisar) al trabajo de otro usuario. - Fácil creación de copias de seguridad y recuperación de la
información, incluso a una fecha dada. - Visualización del histórico de cambios en el repositorio,
con identificación del usuario que realiza cada cambio. - Y la mejor, es un producto Open Source, maduro y estable,
incluido dentro de los proyectos gestionados por la organización Apache.
En este artículo vamos a utilizar el servidor de control de
versiones Subversion Server, que es un software Open Source de la fundación
Apache. Este servidor tiene una forma de trabajar parecida a la del popular
CVS, aunque se han introducido gran cantidad de mejoras que facilitan su
utilización.
Objetivo
Nuestro objetivo es instalar un servidor Subversion,
accesible mediante el protocolo HTTP en nuestro PC local, de manera que lo
podamos llevar en un dispositivo de almacenamiento móvil, es decir un servidor
«Portable», de manera que podamos ejecutarlo en cualquier PC nuestro. Así, el
servidor que vamos a instalar contendrá:
·
Los binarios necesarios para ejecutar el
servidor Subversion por HTTPD
·
El repositorio inicial donde se almacenará
la información que queremos guardar bajo un control de versiones.
Requisitos
Para la instalación del servidor Subversion portable sobre
Windows necesitamos tres componentes software: el servidor Subversion, el
servidor Apache HTTPD y un cliente de Subversion, como puede ser TortoiseSVN.
Los dos primeros los podemos obtener de la sección de descargas de la Apache Software Foundatiion (http://www.apache.org) y el
TortoiseSVN de http://tortoisesvn.tigris.org/
El software necesario es:
- httpd-2.2.15-win32-x86-openssl-0.9.8m-r2.msi. Servidor
Apache HTTPD 2.2 - Setup-Subversion-1.6.6.msi. Servidor SVN Server de Apache
(antes Tigris) - TortoiseSVN-1.6.8.19260-win32-svn-1.6.11.msi. Cliente de
SVN para probar el sistema
Antes de comenzar quiero indicar que primero instalaremos el
servidor en local y luego lo haremos «Portable»
Carpeta de repositorios
Debemos crear una carpeta que almacenará el repositorio Subversion,
pon ejemplo c:\repositoriosvn. Daremos los permisos necesarios para que el
sistema y los administradores tengan control total sobre el repositorio.
Referencias y manual de Subversion
Al instalar SVN Server se instala un manual de Subversion en
el que viene un capítulo dedicado a la instalación de SVN Server y otro de SVN
sobre Apache 2.2. Está en la carpeta bin del Subversion Server como archivo
svn-book.chm. El capítulo 6 está dedicado a la configuración del servidor.
Además hay muy buena información en las páginas de
TortoiseSVN tanto de instalación del servidor como de manejo de Subversion a
través de TortoiseSVN.
Instalación del servidor Subversion SVNServer
Ejecutamos el programa de instalación
Pulsamos «Next»
Pulsamos «Next»
Pulsamos «Next»
Pulsamos «Instalar»
Pulsamos «Finish»
Configuración del SVN Server
Primero se debe crear la carpeta raíz para el repositorio e
inicializarla. Abrimos una ventana de línea de comandos en la carpeta de
instalación del servidor Subversion y ejecutamos:
C:\Archivos de programa\Subversion\bin>mkdir f:\Repositorio\RepositorioSVN C:\Archivos de programa\Subversion\bin>svnadmin create f:\Repositorio\RepositorioSVN
Esto crea la carpeta RepositorioSVN y la inicializa.
Para que el servidor SVN se ejecute automáticamente al
arrancar el servidor debe ser instalado como servicio. Esto se hace con el
comando de Windows SC:
C:\Archivos de programa\Subversion\bin>sc create SVN binpath= "\"C:\Archivos de programa\Subversion\bin\svnserve.exe\" --service -r c:\repositoriosvn" displayname= "Subversion Server" depend= "Tcpip" start= auto [SC] CreateService CORRECTO C:\Archivos de programa\Subversion\bin>net start svn El servicio de Subversion Server está iniciándose. El servicio de Subversion Server se ha iniciado con éxito. C:\Archivos de programa\Subversion\bin>
Ojo con el uso de las comillas y el nombre svnserve.exe.
Os preguntareis si no configuramos nada del servidor Subversion.
Se podría hacer, pero como se va a realizar el acceso mediante un módulo de
Apache HTTPD, será en éste donde se configure todo.
Instalación del servidor Apache HTTPD
Ejecutar el programa de instalación httpd-2.2.15-win32-x86-openssl-0.9.8m-r2.msi
Pulsamos «Next»
Aceptar y pulsamos «Next»
Pulsamos «Next»
Debemos escribir el dominio en el que estamos, por ejemplo
dominio.es, el nombre del servidor, por ejemplo Subversion.dominio.es, y el
correo del administrador, por ejemplo admin.@dominio.es.
Evidentemente lo puedes sustituir por lo que creas oportuno.
Por defecto se arrancará el servidor como un servicio
Windows accesible por todos los usuarios del sistema. Esto nos permitirá
probarlo. Como siempre, luego podremos quitarlo fácilmente.
Pulsamos «Next»
Elegimos la típica, y siguiente
Pulsamos «Next»
Pulsamos «Install». El servidor HTTPD se instalará en
nuestro sistema.
Durante la instalación sale una ventana auxiliar
Se ignora y sale la pantalla principal de instalación
Finalizamos pulsando «Finish»
Arrancando el servidor HTTPD local
En la bandeja del sistema junto al reloj aparece ahora el
icono de configuración de Apache HTTPD, , que permite abrir el panel de
control del servidor Apache HTTPD
Antes de arrancar el Apache http hay que asegurarse de que
el puerto que se va a utilizar esté libre. Por ejemplo, de que no haya un
Tomcat ya arrancado…
Si el servidor no puede arrancar se debe consultar el visor
de eventos de Windows, en las Herramientas administrativas del Panel de Control
de Windows.
Una vez que el servidor está arrancado, se puede probar su
funcionamiento abriendo la dirección http://localhost
. Por defecto el servidor HTTPD se configura para arrancar en el puerto 80, que
es el estándar para un servidor Web basado en HTTP.
Configuración del servidor HTTPD
El servidor Apache HTTPD se configura mediante el archivo
httpd.conf que se encuentra en C:\Archivos de programa\Apache Software
Foundation\Apache2.2\conf. En este archivo hay que realizar los siguientes
cambios:
- Configurar el puerto de escucha de Apache HTTPD al puerto
8090 (o cualquiera que estimemos oportuno) - Listen 8090
- Descomentar (para habilitar) los módulos
- LoadModule dav_module modules/mod_dav.so
- LoadModule dav_fs_module
modules/mod_dav_fs.so - Al final de los módulos hay que añadir los módulos de
WebDav de Subversion Server - #LoadModule version_module
modules/mod_version.so - #LoadModule vhost_alias_module modules/mod_vhost_alias.so
- #moculos para Subversion
- LoadModule dav_svn_module
modules/mod_dav_svn.so - LoadModule authz_svn_module
modules/mod_authz_svn.so - Justo debajo insertar la carpeta virtual para el
repositorio subversion.
#LoadModule version_module modules/mod_version.so #LoadModule vhost_alias_module modules/mod_vhost_alias.so #modulos para Subversion LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so # For Subversion repository # For Subversion repository <Location /svn> DAV svn SVNListParentPath on SVNPath /svn_repository AuthType Basic AuthName "Proyectos y documentos" AuthUserFile /Subversion/Apache2.2/passwd Require valid-user </Location>
- Copiar las bibliotecas dinámicas mod_dav_svn.so y
mod_authz_svn.so desde la carpeta bin de Subversion a la carpeta modules
de Apache HTTPD - Importante: REINICIAR EL EQUIPO. Parece ser
(por lo leído en artículos) que no vale solo con re arrancar el servidor
de apache, sino que hay que reiniciar completamente el equipo para que
coja estas dlls el servidor Apache…. - Para probar si está funcionando correctamente basta abrir
con el navegador la página http://localhost:8000/repositoriosvn - Tal y como se ha configurado, el servidor Apache
solicitará usuario y contraseña para ese repositorio
Añadir usuarios de Subversion al Servidor
Subversion
Para crear el fichero de contraseñas del servidor Apache
HTTPD hay que usar el comando
C:\Archivos de programa\Apache Software Foundation\Apache2.2>bin\htpasswd -c passwd usuario Automatically using MD5 format. New password: ******* Re-type new password: ******* Adding password for user usuario C:\Archivos de programa\Apache Software Foundation\Apache2.2>type passwd usuario:$apr1$po9TdgCG$6W9wyELPGBqVMFqJ3zfpK0 C:\Archivos de programa\Apache Software Foundation\Apache2.2>
Con este comando hemos creado el fichero de contraseñas y
además hemos añadido un usuario. Después de añadir contraseñas hay que
reiniciar el servidor HTTPD para que coja los cambios.
Se accede al repositorio con este usuario para probar si
funciona
Para añadir más usuarios se puede utilizar el comando con la
opción –b, que especifica la contraseña en la propia línea de comandos:
C:\Archivos de programa\Apache Software Foundation\Apache2.2>bin\htpasswd -b passwd cgonzalez nuevapw Automatically using MD5 format. Adding password for user cgonzalez C:\Archivos de programa\Apache Software Foundation\Apache2.2>type passwd usuario:$apr1$po9TdgCG$6W9wyELPGBqVMFqJ3zfpK0 cgonzalez:$apr1$05x0vS9W$UQqDJpQaldojyIG1EmBN// C:\Archivos de programa\Apache Software Foundation\Apache2.2>
Con el mismo comando se puede actualizar la contraseña. Para
facilitar la administración de los usuarios se ha creado un fichero de carga de
usuarios en la carpeta de Apache HTTPD /cargarysyaruis,bat) que actualiza los
usuarios que tiene líneas del tipo
crearusuarios.bat bin\htpasswd -b passwd jlayunta usuario bin\htpasswd -b passwd cgonzalez nuevapw
Cada vez que se ejecuta este script hay que luego rearrancar
el Apache HTTPD
Crear la versión portable del servidor Subversion
con Apache
Una vez instalado el servidor Subversion y el servidor
Apache HTTPD, generar una versión portable del mismo es sencillo:
- Copiamos la carpeta completa del servidor Apache dentro de
la carpeta de Subversion - Creamos un archivo svnstart.bat que arranca el servidor Subversion
y el apache. . Un ejemplo sería:
C:\Subversion\svnstart.bat
cd start "Subversion Server" /MIN bin\svnserve.exe -d -r /svn_repository cd Apache2.2 cd bin start "Apache 2.2 for Subversion" /MIN httpd.exe -d /Subversion/Apache2.2 -f /Subversion/Apache2.2/conf/httpd.conf rem usuar usuario: usuario, contraseña: usuario start http://localhost:8090/svn
- Modificamos el archivo de configuración de Apache HTTPD,
httpd.conf. Hay varias cosas que modificar:
- Las rutas de los repositorios y ficheros en las etiqueta
Location- Modificar convenientemente el valor de la ruta DocumentRoot «C:/Subversion/Apache2.2/htdocs»
- Dado que <Directory /> está configurado para que no
tenga acceso nadie, asegurarse de que existe una etiqueta
<Directory> que permite acceso a la raíz de htdocs, por ejemplo;
C;\Subversion\Apache2.2\conf\httpd.conf ... DocumentRoot "C:/Subversion/Apache2.2/htdocs" # # Each directory to which Apache has access can be configured with respect # to which services and features are allowed and/or disabled in that # directory (and its subdirectories). # # First, we configure the "default" to be a very restrictive set of # features. # <Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all </Directory> # # Note that from this point forward you must specifically allow # particular features to be enabled - so if something's not working as # you might expect, make sure that you have specifically enabled it # below. # # # This should be changed to whatever you set DocumentRoot to. # <Directory "C:/Subversion/Apache2.2/htdocs"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.2/mod/core.html#options # for more information. # Options Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. # Order allow,deny Allow from all </Directory>Uso de la versión portable
Para usar la versión portable simplemente debemos hacer
doble clic en el svnstart.bat para levantar el servidor Subversion. Es muy
rápido. Dejo como ejercicio probar si se pueden eliminar las letras de las
rutas para que todo el servidor sea realmente portable, de manera que lo pueda
instalar en un disco externo, por ejemplo, y llevar el servidor y el
repositorio con vosotros a todas partes. De esta manera podríamos tener un
mecanismo muy rápido para sincronizar carpetas entre casa y la oficina, Además
la copia de seguridad del repositorio es tan simple como copiar la carpeta
svn_repository a un lugar seguro, o hacer un zip de ella y guardarlo cada pocos
días.Instalación del cliente TortoiseSVN
Instalar TortoiseSVN ejecutando TortoiseSVN-1.6.8.19260-win32-svn-1.6.11.msi
Pulsamos «Next»
Acepto y pulsar «Next»
Pulsamos «Next»
Pulsamos «Next»
Pulsar «Finish»
Puede ser necesario cerrarla sesión pues se modifica el
Explorer. Puede bastar matar el proceso Explorer.exe y volver a ejecutar el
Explorer desde el Administrador de tareas…
Nota: se puede instalar el paquete de idioma en español para
el TortoiseSVN. Yo no lo hago pues así luego puedo buscar en Google temas
avanzados, pero se puede hacer sin problemas. Si así queréis.Pruebas desde un cliente SVN
Para manejar el repositorio se
debe crear una copia local del mismo o de la parte del repositorio que se
quiera modificar. Para ello se crea una carpeta, por ejemplo Mis
documentos\svn_repo y hacemos un checkuut del repositorio sobre ella:
Con el botón secundario del ratón
elegimos la opción «SVN checkout»
Escribimos
la URL del servidor Subversion pulsamos OK
Se solicita el usuario necesario
Pulsar
OK La carpeta ahora muestra en el explorador de Windows el símbolo de SVN
Dentro
de la carpeta c:\svn_repo tendremos la carpeta oculta .svn, que inicialmente
tiene un tamaño de menos de 1kB.
Organización del repositorio
Subversion utiliza un sistema de carpetas para organizar los
ficheros almacenados bajo el control de versiones, por debajo de la carpeta raíz
del repositorio.Suele ser habitual organizar un repositorio Subversion con
la siguiente estructura:
- thrunk
- branches
- tags
En la carpeta thrunk se crean los
provectos en su rama principal. Luego las diferentes ramas y versiones
etiquetadas se crean en las carpetas branches y tags, respectivamente, también
organizadas por proyectos
Otra organización alternativa
sería:
- proyecto1
- thrunk
- branches
- tags
- proyecto1
- thrunk
- branches
- tags
- proyecto1
- thrunk
- branches
- tags
- proyecto1
- thrunk
- branches
- tags
- …
Realmente Subversion no impone
una estructura, pues trata a proyectos, ramas y etiquetas como carpetas. Todo
esto lo discutiremos más a fondo en el artículo siguiente que publicaremos,
dedicado a evaluar el rendimiento de un repositorio Subversion. Además
aprenderemos a crear múltiples repositorios dentro de un mismo servidor, configurando
de manera independiente el acceso a los mismos.
Conclusión
Como podéis ver, ya no tenemos ninguna excusa para instalar
y utilizar un servidor Subversion para nuestro trabajo diario, bien en nuestra
organización, bien como repositorio personal de información. Además el coste
del producto evaluado es nulo, ya que la licencia utilizada lo permite usar
libremente en nuestras empresas y organizaciones. Es más, es un producto
ampliamente utilizado en grandes empresas de desarrollo de software.Si queréis ahondar más en cómo maneja Subversion
internamente el repositorio os invito a leer el siguiente artículo que
publicaré sobre rendimiento de un repositorio Subversion, en el que se
aclararán muchas dudas de su funcionamiento.
Buenisima la información gracias
Muy buena guia, pero tengo un problema al intentar ejecutar con el comando net start svn.
Podrias indicarme que estoy haciendo mal, me da el siguiente error.
C:\Subversion\bin>net start svn
El servicio no está respondiendo a la función de control.
Puede obtener más ayuda con el comando NET HELPMSG 2186.