Instalar Subversion en Apache (Windows)
Vamos a ampliar las posibilidades de nuestro servidor web con una nueva funcionalidad: Subversión.
Subversion es un sistema de control de versiones que ha ganado mucho terreno a otros similares gracias a su potencia, además de que es muy utilizado en proyectos de código abierto. Con esto podremos tener un servidor donde compartir (o no) nuestros desarrollos, pero en cualquier caso, nos servirá aunque sea a nivel personal a llevar un total control sobre ellos.
Tengo que advertir que el proceso va a ser largo, ya que vamos a instalar una serie de programas para dejarlo funcionando al 100%.
Pero antes de nada, vamos a descargarnos lo que necesitamos para poder llevar a cabo esta operación:
- Servidor web XAMPP: puedes seguir los tutoriales correspondientes en este mismo blog
- Subversion: en este caso utilizamos el instalador (archivo .msi) de la última versión estable, la 1.5.1
- TortoiseSVN: un cliente para navegar por el repositorio. Se ha utilizado la versión 1.5.3
- Traducción al español de TortoiseSVN: en la misma página de descarga de TortoiseSVN, pero más abajo, veremos la lista de idiomas.
- Aconsejo también descargar los PDF de ayuda que hay justo al lado del idioma
Una vez tenemos todo lo necesario, empezamos:
Subversion
Si aún no lo has hecho, lo primero es instalar XAMPP y configurarlo.
Una vez lo tengas funcionando, vamos a instalar Subversion. Hemos elegido el instalador (.msi) en lugar de la versión comprimida (.zip) porque nos ahorrará algún paso y se hará más sencillo.
Ejecutamos el instalador (Setup-Subversion-1.5.1.en-us.msi) y empieza el proceso:
Nos aparece la pantalla de bienvenida. Pulsamos en “Next”.
Nos muestra algo de información sobre Subversion. Pulsamos “Next”.
En esta pantalla tenemos que seleccionar nuestra versión de Apache, que es la 2.2.x.
Si quieres asegurarte de la versión o no sabes cuál es, puedes entrar en http://localhost, y en el menú de la izquierda (siempre y cuando estés utilizando XAMPP) pinchas en la opción phpinfo(), que suele estar de las primeras. Otra cosa que puedes hacer es crearte un fichero .php (por ejemplo, phpinfo.php) y escribir en ese fichero phpinfo(), guardarlo en la carpeta htdocs (o la ruta que tengas puesta para los ficheros de tu servidor web) y ejecutar ese fichero escribiendo en tu navegador http://localhost/phpinfo.php.
Una vez tengamos a la vista toda la información que nos muestra este comando, vamos a buscar el texto “Apache Version”, y justo a la derecha veremos la versión de Apache que tenemos instalada.
Cuando hayamos seleccionado la opción correspondiente, pinchamos en “Next”.
Aquí tenemos que seleccionar la carpeta de destino.
Después, pinchamos “Next”.
Estamos listos para instalar. Pinchamos en “Install”.
Esperamos con paciencia…
La instalación termina y nos da algunas instrucciones para seguir adelante con la configuración, pero no le hacemos mucho caso
Pinchamos en “Finish”…y ahora es cuando empieza lo bueno
Configurar Apache
Primero vamos a crear una carpeta, a la que vamos a llamar svn, que es donde vamos a guardar nuestros proyectos bajo el control de Subversion. Yo he elegido una partición aparte, y he creado mi carpeta en G:\svn.
Subversion se ha instalado pero tenemos que hacer algunos ajustes manualmente.
Para que Apache lo reconozca hay que copiar dos ficheros:
- C:\Program Files\Subversion\bin\mod_dav_svn.so
- C:\Program Files\Subversion\bin\mod_authz_svn.so
en la carpeta modules de Apache (dependerá de dónde lo tengáis instalado):
- C:\xampp\apache\modules
Ahora, vamos a abrir el fichero de configuración de Apache:
- C:\xampp\apache\conf\httpd.conf
Quitamos el comentario de las siguientes líneas (es decir, borramos las almohadillas):
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so
Y justo debajo, añadimos estas dos (que hacen referencia a los ficheros copiados anteriormente):
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
Como estamos en XAMPP, tenemos varios ficheros de configuración, así que vamos a utilizarlos.
Abrimos el fichero httpd-xampp.conf:
- C:\xampp\apache\conf\extra\httpd.conf
y al final del todo, escribimos lo siguiente:
<IfModule dav_svn_module> <Location /svn> DAV svn SVNListParentPath on SVNParentPath G:/SVN </Location> </IfModule>
Estas líneas también se pueden guardar en el fichero httpd.conf, pero de este modo tenemos cada cosa en su sitio y queda mejor organizado.
Con esto último, lo que conseguimos es que Apache sepa a qué ruta tiene que dirigirse cuando se lo pida un cliente SVN (como el que vamos a instalar más adelante), y también queda el repositorio a la vista para el resto de usuarios.
Lo que hemos escrito es una configuración básica y cualquiera tendrá acceso, pero es posible bloquearlo estableciendo usuarios y contraseñas a través de un fichero adicional pensado para ello.
TortoiseSVN
El siguiente paso es instalar el cliente TortoiseSVN.
Para ello ejecutamos el archivo que nos descargamos anteriormente: TortoiseSVN-1.5.3.13783-win32-svn-1.5.2.msi
El asistente nos da la bienvenida. Pinchamos en “Next”.
Aceptamos la licencia y pinchamos “Next”.
Si queremos instalarlo en una ruta diferente, pinchamos en “Browse”. Después, pinchamos en “Next”.
Ya estamos listos para comenzar la instalación. Pinchamos en “Install”.
Instalación en proceso. Tardará poco…
Terminó la instalación. Pinchamos en “Finish”.
Nos aconseja reiniciar el ordenador. Vamos a hacerle caso
no sólo por esto último, sino para que todo lo que hemos hecho hasta el momento haga efecto y se arranque el servidor de Subversion y Apache lo reconozca.
TortoiseSVN en español
Sólo nos queda por instalar nuestro idioma.
Ejecutamos para ello el fichero correspondiente: LanguagePack_1.5.3.13783-win32-es.msi
Pinchamos en “Next”.
Empieza la instalación del idioma.
Instalación finalizada. Pinchamos en “Finish”.
Ahora tenemos que configurarlo para que coja el nuevo idioma.
Para ello, abrimos el menú de Windows: botón “Inicio > Programas > TortoiseSVN > Settings
En la ventana que aparece, veremos que nos sale a la derecha la selección del idioma. Desplegamos y escogemos “español”. Pinchamos “Aplicar” y “Aceptar”.
¡¡Terminado!! Todas las instalaciones están listas
Probando, probando…
Por fin ha llegado el momento de probar todo lo que hemos estado haciendo.
Lo primero es comprobar que tenemos acceso a través de un navegador web, donde ponemos, en la barra de direcciones: http://localhost/svn/
Nos saldrá una página como esta:
Lógicamente no sale ningún proyecto porque aún no lo hemos creado, pero al menos ya sabemos que podemos acceder vía web.
Es el momento de crear un proyecto.
Vamos a la carpeta que creamos anteriormente (en mi caso G:\svn), y ahí creamos una nueva carpeta que vamos a llamar proyecto.
Entramos y, bien desde el menú “Archivo” o haciendo click en el espacio en blanco de la ventana, vamos a la opción “TortoiseSVN > Crear un repositorio aquí”
Nos mostrará un mensaje de que el repositorio ha sido creado y veremos el nuevo contenido de la carpeta.
Pero el nuevo repositorio está vacío porque no hay ningún proyecto guardado. Así que tenemos que ir a la carpeta donde tengamos el proyecto que vamos a enviar al control de versiones, y ahí, igual que antes, vamos al menú “Archivo > TortoiseSVN > Importar…”
Aparecerá una nueva ventana donde pondremos la ruta para la carpeta que hemos creado antes:
Pinchamos en “Aceptar” y empieza la copia de ficheros.
Una vez haya terminado, pinchamos en “Aceptar”.
Para comprobar que nuestro proyecto está en el repositorio, abrimos nuevamente el navegador y escribimos la ruta: http://localhost/svn
Veremos que ahora nos sale el proyecto que hemos creado, y si pinchamos, debería salir la lista de todos los ficheros que lo componen.
La última prueba será el sentido inverso, es decir, obtener un proyecto del servidor SVN para poder trabajar en local con el proyecto.
Para ello vamos a la carpeta donde vamos a obtenerlo (aunque no es necesario). Abrimos el menú “Archivo > Obtener…”, y nos mostrará la siguiente ventana:
Lo primero es especificar la ruta del repositorio, que es, en nuestro caso, http://localhost/svn/proyecto, y la ruta donde se va a guardar. Si la ruta que le damos no existe, nos preguntará si queremos crearla antes.
Pinchamos en “Aceptar” y comienza la copia de ficheros.
Cuando termine, pinchamos en “Aceptar”.
Y ahora sí. Por fin…hemos terminado
Lo mejor es que echéis un vistazo a la ayuda del programa, tanto de TortoiseSVN como de Subversion, para ampliar información.
Ahora ya podéis llevar un total control de vuestros proyectos y compartirlos.
De todas formas, lo que aquí se ha explicado es una instalación “sencilla”, es decir, no se han establecido contraseñas de acceso para el servidor SVN, las pruebas han sido sólo de forma local (una prueba desde otro ordenador sería interesante), no se ha explicado la confirmación ni la actualización de proyectos…y un largo etcétera.
Pero todo eso es otra historia…y otro post









































Hola,
excelente post!
me ha sido de mucha ayuda.
pero me han quedado unas dudas:
Cómo haría para acceder desde otra pc al repositorio, es decir, que direccion debo poner en el IE?
¿Ademas, necesitaria algo como hamachi para esto?.
Gracias por tu atencion y por el post!
ah!
ademas¿necesito instalar XAAMPP o solo apache?
es que yo programo en c#.
PD: disculpa tanta jodedera, espero no caerte mal.
No hay nada que disculpar. La posibilidad de escribir comentarios está para eso
Sobre tus dudas:
Para acceder al repositorio desde otro ordenador deberás poner la dirección IP del PC donde esté el repositorio.
Si tenemos en cuenta que, desde “localhost”, para acceder al repositorio escribimos “http://localhost/svn”, para acceder desde otro ordenador pondríamos “http://direccionIP/svn” (cambia “direccionIP” por la IP del ordenador donde hayas instalado SVN y ya está).
No necesitas más que la IP para poder acceder desde un ordenador remoto, por lo que no es necesario ningún software adicional como Hamachi ni ninguna otra cosa.
Lo único que necesitas es tener instalado Apache, independientemente de que lo hayas instalado de forma independiente o a través de un paquete como XAMPP, WAMP o cualquier otro.
De todas formas, si normalmente tienes los ordenadores en una red privada (que es lo que hace Hamachi, por ejemplo), aunque no lo he probado, no creo que difiera mucho.
El lenguaje de programación que utilices es independiente. Ten en cuenta que lo que estás haciendo es, desde el navegador web, listar los archivos y poder navegar a través de las carpetas que componen el repositorio.
El resto lo haces con el cliente SVN instalado (en este caso TortoiseSVN), o bien, a través de la línea de comandos del servidor SVN (tema no tratado en este post).
En resumen, basta con instalar Apache de forma independiente. Y con el cliente SVN puedes llevar el control de las versiones de forma fácil, indistintamente del lenguaje que utilices.
Gracias por tu ayuda, me ha esclarecido las ideas mucho.
Saludos!
Hola otra vez,
ya tengo apache + subversion + tortoiseSVN siguiendo los pasos que indicas y me va de perlas.
Hola, gracias por el post, he utilizado AppServ en lugar de XAMPP y apache da este error: httpd.exe:syntax error on line 176 of C:/AppServ/Apache2.2/conf/httpd.conf: Can not load C:/AppServ/Apache2.2/modules/mod_dav_svn.so into server: No se puede encontrar el modulo especificado.
He seguido todos los pasos, el archivo del error si esta en la carpeta modules, en el archivo httpd.conf añadi al final lo que sigue ya que en la carpeta conf/extra de AppServ no hay ningun archivo llamado httpd.conf.
DAV svn
SVNListParentPath on
SVNParentPath C:/svn
He probado ha copiar todos los archivos .dll y .so de la carpeta bin de subversion a la carpeta modules de apache pero sigue sin funcionar.
Espero que puedan ayudarme, gracias de antemano.
Hola otra vez, aclarar que lo que añadi a httpd.conf esta entre las etiquetas IfModulule y Location, al enviar el comentario desaparecieron.
Hola Lucía,
la parte de apache no es indispensable para que funcione lo demás, ya que es sólo una opción más para explorar tus repositorios mediante un navegador web, y si no le vas a dar uso, podrías prescindir de esa parte de la configuración.
En cualquier caso, por lo que comentas, lo que has hecho está bien. Pero vamos a repasar…
Los ficheros de Subversion (dependiendo de donde lo hayas instalado):
C:\Program Files\Subversion\bin\mod_dav_svn.so
C:\Program Files\Subversion\bin\mod_authz_svn.so
se copian en la carpeta “C:/AppServ/Apache2.2/modules”.
En el fichero “C:/AppServ/Apache2.2/conf/httpd.conf” tienes que quitar las almohadillas de las siguientes líneas:
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so
por lo que se quedarían en:
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_module modules/mod_dav.so
Y debajo de esas, añadir estas dos:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
En ese mismo fichero (httpd.conf), añades al final el bloque de las etiquetas IfModule.
Las líneas con las etiquetas “IfModule dav_svn_module” y “/IfModule” no son obligatorias. Son una condición que viene a decir que, si el módulo “dav_svn_module” está cargado, ejecute las líneas que hay entre esas dos. Si las quitas, lo ejecutará siempre.
Comprueba también las rutas y los nombres de los ficheros, incluidas minúsculas y mayúsculas. Todo tiene que esar igual. Un simple fallo de sintaxis haría que no funcionara nada.
Hola Antonio, gracias por tu ayuda, he seguido tu consejo pero no puede ser un error de sintaxis, lo he revisado todo, creo que hay que configurar el archivo conf/extra/httpd-dav.conf de appsev para que funcione pero no sé como hacerlo, esto es lo que contiene:
#
# Distributed authoring and versioning (WebDAV)
#
# Required modules: mod_dav, mod_dav_fs, mod_setenvif, mod_alias
# mod_auth_digest, mod_authn_file
#
# The following example gives DAV write access to a directory called
# “uploads” under the ServerRoot directory.
#
# The User/Group specified in httpd.conf needs to have write permissions
# on the directory where the DavLockDB is placed and on any directory where
# “Dav On” is specified.
DavLockDB “C:/Apache2.2/var/DavLock”
Alias /uploads “C:/Apache2.2/uploads”
Dav On
Order Allow,Deny
Allow from all
AuthType Digest
AuthName DAV-upload
# You can use the htdigest program to create the password database:
# htdigest -c “C:/Apache2.2/user.passwd” DAV-upload admin
AuthUserFile “C:/Apache2.2/user.passwd”
# Allow universal read-access, but writes are restricted
# to the admin user.
require user admin
#
# The following directives disable redirects on non-GET requests for
# a directory that does not include the trailing slash. This fixes a
# problem with several clients that do not appropriately handle
# redirects for folders with DAV methods.
#
BrowserMatch “Microsoft Data Access Internet Publishing Provider” redirect-carefully
BrowserMatch “MS FrontPage” redirect-carefully
BrowserMatch “^WebDrive” redirect-carefully
BrowserMatch “^WebDAVFS/1.[0123]” redirect-carefully
BrowserMatch “^gnome-vfs/1.0″ redirect-carefully
BrowserMatch “^XML Spy” redirect-carefully
BrowserMatch “^Dreamweaver-WebDAV-SCM1″ redirect-carefully
Primero descomenté esta línea: Include conf/extra/httpd-dav.conf, del archivo httpd.conf y he modificado el archivo httpd-dav.conf varias veces pero tengo el mismo error. No se me ocurre que más puedo intentar para solucionarlo y no puedo prescindir de apache porque estoy aprendiendo a desarrollar aplicaciones web con Symfony.
Si comento las líneas: LoadModule dav_svn_module modules/mod_dav_snv.so y
LoadModule authz_svn_module modules/mod_authz_svn.so, apache funciona correctamente, agradezco cualquier sugerencia para solucionarlo, he buscado en foros y he encontrado a gente preguntando por el mismo error pero nadie ha contestado con la solución.
Efectivamente Lucía, muchas preguntas en otros sitios y pocas o ninguna solución.
Seguro que el problema que tienes es alguna tontería. Siempre pasa
Nunca he utilizado AppServ, pero en principio debería ser prácticamente lo mismo, porque al fin y al cabo se instala el mismo software (Apache, PHP, etc…).
No sé si te servirá o ya lo has visto pero, entre otros tantos, he encontrado este enlace que tal vez pueda ayudarte en algo:
http://alberizo.wordpress.com/2007/04/25/manual-para-tontos-de-servidores-svn-en-windows/