No es nada difícil instalar un servidor de Subversion en un linux, pero hay que tener unas cuantas cosas en cuenta si queremos que se integre bien con Plesk y poder alojar todos nuestros proyectos bajo un subdominio del tipo https://svn.midominio.com/repositorio1
Como siempre, para toquetear el servidor necesitas tener acceso al sistema por consola con el usuario root. Este tutorial funciona con Plesk 8 y Plesk 9 (concretamente Plesk 9.2) corriendo sobre un Linux CentOS, que no es otra cosa que un servidor dedicado de 1and1. Y siendo honrados, hay que decir que básicamente es la adaptación y traducción del howto que yo usé escrito por Ale Le (en inglés).
NOTA: Cambia “repositorio1″ por el nombre que le quieras dar y “dominio.com” por tu nombre de dominio.
Resumen de los pasos a seguir:
- Instalar el servidor de Subversion
- Configurar apache
- Crear el repositorio Subversion
- Configurar Plesk
- Crear usuarios y repositorios
Paso 1: Instalar el servidor de Subversion
# yum install subversion
Una vez hecho login con el usuario root, usamos yum para instalar los paquetes de subversion (si en vez de CentOs utilizas otra distribución, quizás tengas que usar aptget u otro gestor de paquetes). Para comprobar que la versión de subversion es la correcta ejecuta# svn --version
y tendría que darte 1.4 (en concreto, yo tengo 1.4.2)
Paso 2: Configurar Apache
Gracias a yum hemos instalado Subversion con gran facilidad y podríamos usarlo ya con los protocolos y puertos de subversion. Ahora hemos de configurar apache para que cuando alguien llame a https://svn.midominio.com/repositorio1
se esté conectando a subversion via WEBDAV.
# yum install mod_dav_svn
Instalamos el mod_dav_svn para apache (DAV es la tecnología que nos permitirá hacer commits a través de http). Este comando debería instalar todos los paquetes que dependan para su funcionamiento (comomod_authz_svn
). Puedes ver los módulos de apache que tienes instalados en# ll /etc/httpd/modules
# vi /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
Puede ser que el archivo ya esté creado, aunque con un nombre subversion.conf.ALGO : si estas dos lineas aparecen arriba y no están comentadas, ya nos vale. Hemos de asegurarnos de que apache está cargando el archivomod_dav_svn.so
al arrancar. En/etc/httpd/conf/httpd.conf
podemos ver que después de cargar módulos básicos haceInclude conf.d/*.conf
. Por lo que crearemos un archivo llamado/etc/httpd/conf.d/subversion.conf
y le insertamos el código arriba escrito.
Paso 3: Crear el repositorio Subversion
# mkdir /var/svn/
# mkdir /var/svn/repositorio1
Crearemos el directorio svnrepo en /var/, donde se alojarán los repositorios de subversion# svnadmin create /var/svn/repositorio1
Instalamos un repositorio en ese directorio mediante el comando svnadmin createchmod -R 777 /var/svn/repositorio1
Muy importante es dar permisos de escritura a este directorio. Si no es así, apache no podrá modificar estos archivos y por tanto, los commits nunca funcionarán.
Paso 4: Configurar Plesk
- Creamos un subdominio mediante el panel de control de Plesk.
Dentro del dominio en el que queremos colgar nuestro servidor de subversion. Hay que ir al panel del dominio > Sitio Web > Crear subdominio y le llamamos “svn”, por ejemplo. Si al crear el dominio hemos activado https y hemos dicho que vaya al mismo sitio que http, podremos acceder por https a nuestro repositorio. # vi /var/www/vhosts/dominio.com/subdomains/svn/conf/vhost.conf
<Location /repositorio1>
DAV svn
SVNPath /var/svn/repositorio1
AuthType Basic
AuthName “Subversion repositorio1”
AuthUserFile /etc/svn-auth-file
Require valid-user
</Location>
Como Plesk sobreescribe el archivo/var/www/vhosts/dominio.com/conf/httpd.conf
y el/var/www/vhosts/dominio.com/subdomains/svn/conf/httpd.conf
cada vez que tocamos algo en el panel de control, hemos de hacer los cambios en otro fichero que creamos con el nombrevhost.conf
. En ese fichero introducimos el código que he puesto arriba. Con eso le decimos a apache que use DAV y que el repositorio de svn está en/var/svnrepo/
y que para autenticar pida cualquier usuario válido en el archivo de passwords/etc/svn-auth-file
(luego lo creamos).# /usr/local/psa/admin/sbin/websrvmng -u --vhost-name=dominio.com
Como siempre que añadamos un archivo al directorioconf
de un dominio, hemos de decir a Plesk que regenere elhttpd.conf
incluyendo un “include” a nuestrovhost.conf
. Al ponername=dominio.com
sólo regenerará ese dominio.# /etc/init.d/httpd restart
Una vez el include está en httpd.conf, reiniciamos el apache y así leerá el nuevo archivo vhost.conf. Ahora ya tenemos montado el servidor y el subdominio apuntando a nuestro subversion en http://svn.dominio.com/repositorio1 o https://svn.dominio.com/repositorio1 si lo hemos configurado así (pruébalo, venga!)
Paso 5: Crear usuarios y repositorios
# htpasswd -c /etc/svn-auth-file usuario1
La aplicación htpasswd crea un archivo en/etc/svn-auth-file
e introduce un usuario con nombreusuario1
(en seguida nos pide que escribamos y confirmemos su contraseña). ¡Alerta! Si queremos crear más usuarios, no debemos usar la opción-c
, ya que esta crea un nuevo fichero, sobreescribiendo el anterior. Para el segundo y siguientes usuarios, usaremos# htpasswd /etc/svn-auth-file usuario2
. Si queremos borrar un usuario, podemos editar el fichero o usar la opción-D
mayúscula.- Además, a mi me interesa tener varios repositorios, sólo he de hacer los pasos 3, 4 (sólo el punto 2, añadiendo un bloque debajo del otro) y 5 cambiando “repositorio1″ por otro nuevo repositorio
- Si sólo quiero dar acceso a ciertos usuarios a repositorios concretos, puedo hacerlo cambiando la linea en vhost.conf
Require valid-user
porRequire user usuario1 usuario2
Por favor, dejad comentarios si veis algún fallo o sugerencia. Espero que esto os ahorre unas cuantas horas de investigación
Genial el tutorial. Lo he seguido al dedillo y me ha funcionado a la primera como un tiro.
Y lo mejor de todo es que con los comentarios que pones de los comandos hasta lo he entendido !
gracias
a mandar amigo 😀
Excelente post, yo también estoy con 1and1 pero con plesk 10, lo voy a probar y supongo que todo sea igual. Gracias por el post
supones?? yo te confirmo que es igual 😀
Fantástico tutorial! Muchas gracias por compartirlo. Yo estoy igual que Reynier de la Rosa (1and1 + Plesk 10) y me ha funcionado bien, pero en el paso 4, punto 3, me ha mostrado el siguiente aviso:
# /usr/local/psa/admin/sbin/websrvmng -u –vhost-name=dominio.com
WARNING: You are using obsoleted option, use corresponding option of httpdmng.
Como digo, ha funcionado a pesar del aviso. Para evitar el aviso, ¿habría que usar el siguiente comando?
# /usr/local/psa/admin/bin/httpdmng –reconfigure-domain dominio.com
ese aviso te lo da porque tendras un .htaccess que tendrá valores antiguos pero no es preocupante ese warning ,
si con ese comando se reconfigura
El tutorial es fantastico. Sin embargo, lo acabo de probar (1and1 + Plek 10.2) y tengo problemas al rearrancar el servidor http:
Stopping httpd: [ OK ]
Starting httpd: Syntax error on line 5 of /var/www/vhosts/mobi-do.com/subdomains/svn/conf/vhost.conf:
AuthName takes one argument, The authentication realm (e.g. «Members Only»)
[FAILED]
Alguna idea?
Oh, oh! perdonad, funciona perfectamente, ha sido un efecto «copy paste» con las comillas, mezclado con una deficiencia en sangre de cafeina 😉
Gracias de nuevo por el tutorial!
es viernes normal que ya no se haga bien ni copy paste…. jjajjaja
gracias a ti francisco
Illo genial me ha venido de perlas eres un crack!!
Muchas gracias por el tutorial!!! Me ha servido mucho! =)
gracias anasilvia por tu comentario¡¡¡¡¡¡¡¡