Voy a explicar en 12 pasos como montar un servidor SVN desde 0, ya se que hay muchos por la red, pero somos más los tontos que nos somos capaces de instalarlo, por eso me he decidido a crear uno SENCILLITO, sin morir en el intento y SIN USAR LA CONSOLA para nada (que a muchos les hará ilusión
), va a ser una guía muy rápida, para profundizar en ciertos aspectos (configuración apache, configuración php, seguridad de carpetas… ) hay mucha información en la red. También está este manual como PDF aquí.
¿Y para qué quiero yo un servidor SVN? Actualmente es la mejor forma de trabajo colaborativo. Más sobre subversión.
* OJITO CON LAS BARRAS INVERTIDAS en la configuración del php.in que Windows es muy caprichoso. En las rutas del php.ini hay que usar la barra \
1. Instalar Apache 2.0.59
2. Instalar PHP 5.2.1
3. Configurar Apache y PHP
3.1 Configurar Apache (Archivo httpd.conf)
-Descomentar las lineas:
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
-Añadir justo después, estas dos lineas:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
-El final del archivo debería ser así:
#BEGIN PHP INSTALLER EDITS – REMOVE ONLY ON UNINSTALL
PHPIniDir “C:/Archivos de programa/PHP/”
LoadModule php5_module “C:/Archivos de programa/PHP/php5apache2.dll”
AddType application/x-httpd-php .php5 .php .phtml .php4 .php3
AddType application/x-httpd-php-source .phps
#END PHP INSTALLER EDITS – REMOVE ONLY ON UNINSTALL
-Y justo debajo, añadir estas lineas:
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath C:/SVN
</Location>
-Buscar “DirectoryIndex” y cambiarla por esta:
DirectoryIndex index.html index.php index.php5 index.php4 index.php3
-Buscar “DocumentRoot” y cambiarla por la que prefieras (aquí es donde se almacenan las webs), yo por ejemplo:
DocumentRoot “C:/servidor”
-Unas 20 líneas abajo también hay que cambiarlo:
<Directory “C:/servidor”>
3.2 Configurar PHP (Archivo php.ini)
-Buscar “short_open_tag” y ponerlo en “On”
-Buscar las cadenas “upload_tmp_dir” y “session.save_path” y si no aparecen poner la ruta que se quiera, por ejemplo la de php (antes crear las carpetas por supuesto)
upload_tmp_dir=”C:\Archivos de programa\PHP\upload”
session.save_path=”C:\Archivos de programa\PHP\session”
4. Instalar y configurar un gestor de base de datos si se quiere (MySQL, SQLserver,.. )
5. Instalar Subversion 1.4.3
6. Copiar archivos .dll y .so de la carpeta subversion/bin a la carpeta Apache/modules
6.1 Reinicar servidor Apache
7. Instalar TortoiseSVN 1.4.3 (+ idioma Español)
8. Crear la carpeta C:/SVN y una subcarpeta dentro de ella con el proyecto (por ejemplo proyecto)entrar en ella, hacer click derecho en espacio en blanco (O menú Archivo), y en el menu contextual “TortoiseSVN > Configuracion” y cambiar el idioma al español.
9. Crear archivos del repositorio. Siguiendo en la carpeta SVN/proyecto, hacer click derecho y en el menú contextual “TortoiseSVN > Crear repositorio aquí”, tipo NSFS.
10. Crear copia de trabajo. Teniendo la carpeta del proyecto (web, archivos c++, o cualquier trabajo comenzado) hacer click derecho en la carpeta y en el menú “TortoiseSVN > Importar” y en la URL del repositorio poner la direccion “file:///C:/SVN/proyecto” o la dirección donde lo hayais creado (esto siendo en local, si fuera el remoto poniendo la dirección mediante el protocolo http:// o svn:// luego lo veremos). Para ver si funciona entrar desde un navegador a la dirección http://localhost/svn/proyecto/ si salen los archivos es que todo ha salido bien, los archivos de la carpeta desde donde importarmos se puede borrar.
11. Hacer la copia local de trabajo (Ahora ya como clientes). Ya solo queda hacer una copia local. Por ejemplo para una web, la haremos en la carpeta C:/servidor/proyecto, dentro de esta carpeta haremos click derecho “SVN Obtener” en la URL del repositorio pondremos file:///C:/SVN/proyecto para el equipo local, http://192.168.1.4/svn/proyecto (la IP que corresponda al equipo servidor) para una red local y si fuera para una red externa http://nuestrodominio.com/svn/proyecto (lo más normal es no tener una IP fija en nuestro equipo así que lo mejor es configurar una cuenta en un servicio como dyndns.com) luego habrá que configurar el router con la cuenta que nos dan, por ejemplo subdominio.dyndns.org.
12. Ya tenemos todo montado, ahora solo nos queda saber como enviar y recibir las modificaciones de los archivos. Todo se hace desde el menú contextual dentro de la carpeta de trabajo local (C:/servidor/proyecto). Podremos enviar las modificaciones (SVN confirmar), recibir las modificaciones de otros usuarios (SVN actualizar) o acciones más complejas como bloquear archivos para que nadie más pueda editarlo mientras lo haces tú, fusionar archivos, o volver a una versión anterior del archivo. Para aprender como usar todas estas funciones, leer la sección “Guía de uso diario” de este PDF.
Espero que sea útil, cualquier comentario o duda será bienvenido.
primo dijo:
Junio 3, 2007 a 9:24 pm
weno, veo que sere el tonto maximo xD
kiero configurar el servidor para poder editar remotamente (desde otro pc xD) desde el dreamweaver, lo configuro para que me coja el DAV, y puedo ver los ficheros, abrirlo, todo… weno todo… todo menos sobreescribir!
A la hora de hacer mis modificaciones y Salvarlas, da un error de que no tengo permisos! (Al intentar guardar, o al intentar crear un fichero desde el navegador del dw). He provado de todo… configurar el archivo svnserve, el passwd,… nada. A ver si alguien tiene idea. Muy bueno el manual por eso
Claudio dijo:
Julio 27, 2007 a 5:59 pm
No puedo realizar la autentificación basada en rutas en SVN.
En un servidor Windows xp sp2 tengo instalado el servidor SVN:
A pesar que logro autentificar el acceso de los usuario mediante un archivo “passwd”, no puedo restringir el acceso (lectura/escritura) de estos usuarios a carpetas específicas. La configuración que tengo en Apache es la siguiente:
En el archivo “httpd.conf” de Apache agregué la siguiente configuración:
DAV svn
SVNPath d:/repostesis/proyecto
# our access control policy
AuthzSVNAccessFile C:\AppServ\Apache2\bin\svnaccessfile.txt
# only authenticated users may access the repository
Require valid-user
# how to authenticate a user
AuthType Basic
AuthName “Subversion repository”
AuthUserFile C:\AppServ\Apache2\bin\passwd
En la carpeta bin de Apache tengo el archivo “svnaccessfile.txt ” en el que indico la restricción de usuarios por carpeta. La configuración que tengo es la siguiente:
[groups]
admin = tallo, cluadio.carlos
[/]
tallo = r
[proyecto: /trunk/documentos]
@admin = rw
claudio = r
tambien probe asi:
[d:/repotesis/proyecto/trunk]
claudio = rw
También, en la misma carpeta bin tengo el archivo “passwd” con los usuarios y password que se pueden conectar a Subversion.
Demás está decir que en el mismo servidor tengo creado el repositorio “d:/repostesis/proyecto” y dentro de éste las carpetas “trunk/documentos” y de la otra forma quiero que claudio sea el unico autorizadio a ver la carpeta “trunk”, tampoco funka.
EL PROBLEMA ES QUE CON ESTA CONFIGURACIÓN, AL CONECTARME POR HTTP, NADA FUNCIONA. ME APARECE UN MENSAJE EN LA PAGINA QUE DICE QUE NO TENGO PERMISOS DE ACCESOS, PERO SI PONGO LA LINEA “AuthzSVNAccessFile C:\AppServ\Apache2\bin\svnaccessfile.txt ” COMO COMENTARIO PUEDO ENTRAR PERFECTAMENTE CON LOS USUARIOS CONFIGURADOS EN EL OTRO ARCHIVO “passwd”.
¿CUAL ES LA SOLUCIÓN POSIBLE DE IMPLEMENTAR O QUÉ ESTOY HACIENDO MAL? De hecho lo único que no me está funcionando es la configuración del comando AuthzSVNAccessFile.
Gracias!!!
Miguel dijo:
Septiembre 18, 2007 a 5:31 pm
Creo que os puedo ayudar un poco más todavía.
Exite ahora mismo un desarrollo, también OpenSource, de la CallebNet, que se basa en SubVersión, pero que se instala en Windows con un solo archivo y te instala él solito todo, con lo que te eliminas el 90% de esos pasos.
1.Instalas CallebnetSVN Server, con o sin Apache (va todo en el instalador y te da la opción).
2.Instalas el cliente TortoiseSVN.
3.Creas el repositorio.(Como explicas)
4.Entras en la carpeta “conf” del repositorio creado (no tocar ni un solo archivo o carpeta que no sean esto), y ahí en los archivos de configuración. Si no quieres ursuarios, ni contraseña en la BBDD, y acceso libre a los usuarios, solo se edita el archivo “svnserve.conf” cambiando la linea:
# anon-access = read
por :
anon-access = write
El cuadradillo es para comentar la linea, lo quitamos y el write es para que los usuarios anonimos tengan acceso completo.
Por cierto el servidor de SubVersion (SVN), se puede instalar como módulo del Apache o como un servio de Windows independiente. Es decir el Apache no es necesario.
La diferencia es que no te lo sirve un servidor web como un windows services, en una red local te ahorras, pero para internet se debería abrir el puerto del SVN (Por defecto el 3690), al Pc que lo tenga instalado para acceder en remoto.
aida dijo:
Septiembre 27, 2007 a 12:17 am
como le puedo implementar seguridad a un servidor apache,es decir usando https, pero q tambien utiliza http, ayudenme porfavor
alberizo dijo:
Septiembre 27, 2007 a 12:51 am
@Miguel, gracias por la info, sin duda que faciliten la tarea esta muy bien, yo prefiero dar yo los pasos y tenerlo más controlado, pero para una configuración rápida genial ^_^
Si lo de apache se que no es necesiario, pero en mi caso me interesaba porque era para desarrollo web, debería haberlo especificado, gracias por el apunte.
@Aida, recuerda que deberías comprar un certificado SSL, puedes creartelos tu misma, pero el navegador avisará que no es seguro, para que sea seguro deberias comprarlo con Verising por ejemplo.
La verdad que no se como se hace, aqui tienes unos manuales para windows:
http://www.geocities.com/sartigas/apachessl.html
y para linux:
http://marcgenou.wordpress.com/2005/12/29/apache-2-con-ssl/
Suerte
coches baratos dijo:
Octubre 7, 2007 a 3:45 am
Alberto:::
¿Has visto esto?
http://www.google.es/search?hl=es&q=Lightbox+JS&btnG=Buscar+con+Google&meta=
Quiero hacerlo con binaros (MySql)
¿Comorrrrrrrrrrrr?¿¿¿
SUgerencias,,,,,,, Please
alberizo dijo:
Octubre 7, 2007 a 9:45 am
¿Con binarios MySQL? Supongo que lo que quieres es mostrar una ventana en forma modal y mostrar la foto que tienes en binario en MySQL.
Es bastante sencillo, crea una capa con: position fixed, con opacity que quieras, y con un tamaño bastante grande 2000×2000 x ejemplo, visibility hidden, y un z-index alto. luego con javascript le cambias la visibility y pones en otra capa con mayor z-index lo que quieras…. (si metes esta capa dentro de la otra, me parece recordar que la opacidad será la de la 1, así que ponlo fuera).
Y luego juegas con lo que quieras para que quede más bonito, podrías hacer que la capa se vaya viendo progresivamente, o poniendo varias capas haciendo un degradado en opacidad…..
Creo que era eso lo que querías.
esequeviene dijo:
Octubre 10, 2007 a 1:40 am
Muy interesante el tutorial… pero me surgio una duda que no he podido resolver…
Suponete yo tengo una estructura como esta
Servidor Xampp como lo tenes definido en el tutorial
Tengo un Alias en apache creado para un proyecto, de ahora en mas lo llamo proyecto1
Cree una carpeta para el SVN, importe los datos de Proyecto 1, y renombre la carpeta del proyecto (la renombre para no borrarla, como dice el tutorial).
Me cree una carpeta en mi computadora (no el servidor), es decir… como cliente, e importe el proyecto entero tal cual lo describis, todo mas que bien andubo a la perfeccion…
Antes, yo usaba //servidor/proyecto1/ para acceder y hacer mis pruebas… pero ahora que he “borrado” esa carpeta… cuando trato de acceder con apache me da un error 403..
el punto es que yo tengo un servidor al cual 6 desarrollares programan, y lo usan de prueba (es nuestro servidor de pruebas), todo esto antes de pasar a un live server… y si uso SVN, pierdo poder probar el proyecto en el Servidor..
Lo que a mi se me ocurre, tengo que tener una copia local + un apache local EN CADA ESTACION DE TRABAJO?
Hay alguna forma de indicarle apache el problema q tengo?
alberizo dijo:
Octubre 10, 2007 a 10:00 am
¿Y a donde apunta ese alias de apache? ¿A la carpeta del SVN? Si miras en esa carpeta no verás PHP´s por ningún lado.
Entonces tienes 2 soluciones:
- Crear una copia local en el servidor, y así es cliente y servidor, y accedes como antes a esa copia local. Claro tendrías que actualizar constantemente la copia local para que se vean los cambios de los commits, para eso o cada uno que suba algo hace un update o pones un crontab en funcionamiento.
Yo usaba este http://cronw.sourceforge.net/
pero acabo de ver este y parece más sencillo http://www.visualcron.com/
Por si no sabes lo que es el crontab, es un programa que ejecuta una acción cada X tiempo.
- Como bien dices, instalar en cada equipo un apache y hacer las pruebas en cada equipo y luego subir las cosas al servidor, esta es la forma que yo lo tengo.
esequeviene dijo:
Octubre 10, 2007 a 1:46 pm
El alias estaria apuntando a la carpeta con los archivos del proyecto, el punto es que si la borro, como hago para dejar un sitio en apache…
La solucion 1, no me parece logico… pero es una buena ayuda
la solucion 2, puede ser factible, pero sigo con otro mismo problema…
Lo que yo necesito es simple (por lo menos explicarlo), cada vez q un cliente de SVN haga un update, que esos datos se updateen en apache del servidor… independientemente… y esto lo necesitaria independientemente de si en los clientes tengo o no apache… basicamente es algo asi como que Apache SIEMPRE tenga una ultima copia actualizada…
Algo asi como que el alias, deberia apuntar a los archivos de SNV, pero por la estructura que vi en el directorio de los SVN, desaparecen los archivos y se guardan de alguna otra forma.
alberizo dijo:
Octubre 10, 2007 a 1:59 pm
Si, si creo que te he entendido, lo que quieres es que si cambias un archivo, probarlo en el servidor y no en cada cliente, pero es que para eso nose…. solo se me ocurre la primera opción que te dije, porque como has visto, la carpeta de SVN no guarda una correlacíon con los otros archivos ya que parte de los archivos es base de datos y los otros son los archivos, a lo mejor se puede hacer…. pero no conozco la forma :S
esequeviene dijo:
Octubre 10, 2007 a 3:56 pm
Bueno, hasta que encuentre la forma que quiero hacerlo… supongamos el modelo que estas usando..
Xampp en clientes, actualizan SVN en servidor, y un proceso CRON que cada XXX cantidad de minutos actuliza el apache…
Que es lo que deberia copiar desde el SVN a apache para poder implementarlo?? o que comando de SVN deberia estar ejecutando?
alberizo dijo:
Octubre 10, 2007 a 7:22 pm
Pues depende lo que quieras, ¿pero si usas un servidor web en cada cliente, para que quieres el cron en el servidor? A no ser que sea un servidor web extranet, y no solo para pruebas en intranet.
Si ejecutas crontab, deberias hacer una llamada a “svn update” …. pero ojo, esto es una solución chusquera que se me ocurrió, si el update falla los resultados son imprevistos
Yo usaba el crontab, para hacer updates en cada cliente, y así evitar que 2 personas hayan modificado el mismo archivo y no tener que ver que lineas son las que valen con el diff. Tambien probé que hiciera los commits, pero si ponia dos cosas a la vez con el crontab, solo me hacía una…. no se porque :S
De todas formas intentaría evitar usar esta medida, si todo el mundo se acostumbra a hacer los commits y updates no habrá problemas.
esequeviene dijo:
Octubre 10, 2007 a 10:39 pm
Bueno, te comento como es que me quedo esto… y si alguna vez logro hacer algo mejor, te aviso.
deje un server con apache, svn y http://FTP... y un repositorio por proyecto.
Tengo un xampp local en cada cliente, y cada uno se conecta al SVN y toma los archivos, todos trabajan localmente…
Cuando es necesario actualizar el servidor de prueba (lo llamo servidor de pruebas por que es ahi donde hay una persona haciendo las pruebas).
Cuando pasa esa etapas de prueba, ya se puede levantar a un live.
Ahora bien, otra cosa off topic, que te parece mejor para manejar un sistema de tickets para la etapa de pruebas, es decir, una vez al dia, tengo una persona probando los sitios.. si encuentra un error lo deja anotado asi al dia siguiente los desarrolladores lo arreglamos. he estado viendo muchos… pero ninguno me convence… tenes alguna recomendacion de alguno que HAYAS USADO con multiusuarios?
Julian Benitez dijo:
Enero 17, 2008 a 4:16 pm
Hola! Sigo todos los pasos que decis, pero me da un error al iniciar Apache. El error dice que no pudo encontrar el modulo mod_authz_svn.so. Que me esta faltando. Gracias
Milor dijo:
Abril 29, 2008 a 9:08 pm
Prueba con:
VisualSVN-Server-1.1.msi
Es un servidor ( creo que gratuito ) que alguien me corriga si estoy equivocado