Instalar y configurar Subversion (SVN) con Apache

Servidor Web, Apache, PHP, MySQL, SQLite

Instalar y configurar Subversion (SVN) con Apache

Notapor Aitortxo » Mié 11 Nov 2009 13:09

Buenas a todos.

En su día configuramos un PC para que hiciera de servidor SVN a través de Apache.
Ahora hemos visto que un NAS sería mejor solución, nos hemos decantado por un TS-439 y me encuentro con 'dificultades' para ponerlo en marcha ya está funcionando.

Los pasos que he seguido son:
1) Instalar el IPKG a través de QPKG
http://www.qnap.com -> downloads -> IPKG -> selecciono el correspondiente al TS-439
descargar, e instalar el paquete a través del administrador
Habilitarlo
2) Instalar SVN a través de IPKG
entrar en el NAS por ssh (o enchufarle una pantalla, un teclado USB y entrar como admin)
teclear ipkg install svn
3) Comprobar que el SVN funciona con el protocolo file:/
Creamos una carpeta /home/svn/testProject que servirá para alojar la base de datos del servidor SVN
teclear mkdir /home/svn
teclear mkdir /home/svn/testProject
Creamos la estructura de la base de datos en testProject
teclear svnadmin create /home/svn/testProject
Creamos una carpeta /home/workspace que será nuestra carpeta de trabajo
teclear mkdir /home/workspace
Hacemos un CheckOut del testProject en nuestra carpeta de trabajo
teclear svn co file:///home/svn/testProject /home/workspace/testProject
Aparece Checked out revision 0. Funciona correctamente
Se habrá creado la carpeta /home/workspace/testProject lista para trabajar con SVN.
4) Comprobar que el SVN funciona con el protocolo svn:/
No lo veo interesante, por lo que entiendo es necesario modificar el archivo svnserve.conf de cada carpeta de base de datos de SVN
El protocolo http:/ permite definir un SVNRootPath que unifica grupos de proyectos
5) Comprobar que el SVN funciona con el protocolo http:/
Al instalar SVN se han creado dentro de /opt/libexec los archivos:
mod_dav_svn.so
mod_authz_svn.so
que tengo que cargar dentro del archivo de configuración de Apache
Y un archivo de configuración en /opt/etc/apache2/conf.d
mod_dav_svn.conf
que parece estar preparado para incluirlo en el archivo de configuración de Apache.
Tiene las dos líneas LoadModule y el resto está comentado


En mi primer post probé a aprovechar el WebServer del NAS para que sirviera SVN a través de HTTP... pero me resultó imposible.
Así que intenté los mismos pasos con un nuevo Apache. Y funcionó sin problemas.
Así que actualizo el post para que todo se pueda hacer siguiendo los pasos.


5a) Instalar un nuevo Apache a través de IPKG
teclear ipkg install apache
En la instalación aparecen dos errores
1.- que no reconoce el usuario 'Nobody' (que es lógico si en el NAS no existe este usuario)
2.- error de postinst (supongo que será un error al comprobar si apache puede arrancar)
El ejecutable del nuevo Apache se encuentra en /opt/sbin/httpd
El fichero de configuración del nuevo Apache es /etc/apache2/httpd.conf
El puerto de escucha inicial es 8000
El error 1 se soluciona haciendo que el nuevo Apache lo ejecute un usuario del NAS.
El error 2 se 'soluciona':
Añadiendo una línea ServerName <IP_NAS>:<PUERTO_NAS>, y
comentando las líneas referentes al SSL (por el momento no estoy interesado, y comentando estas líneas me arranca Apache)
Yo he creado un usuario llamado 'SVN':
desde Web Admin -> Access Right Management -> Users -> Create a New User
Nombre SVN, sin quota, sin grupo, sin carpeta personal, permisos RW solo en la carpeta compartida SVN
desde ssh tecleo vi /etc/apache2/httpd.conf
tecleo i para entrar en modo de edición
bajo hasta User nobody
modifico la línea de forma que la línea diga User SVN
bajo hasta #ServerName http://www.example.com:8000
suponiendo que la IP del NAS es 192.168.1.250, y no hemos modificado la línea Listen 8000
modifico la línea de forma que la línea diga ServerName 192.168.1.250:8000
(comprueba que no aparece # al inicio de la línea)
bajo hasta <IfModule ssl_module>
e inserto un # al inicio de las 4 líneas entre <IfModule ssl_module> ... </IfModule>
pulso la tecla Esc para salir del modo de edición
teclear :wq para guardar y salir

Ya está, iniciemos el nuevo Apache:
teclear /opt/sbin/httpd -k start
esperamos 5 segundos, y podemos comprobar si el nuevo Apache se está ejecutando en el puerto 8000:
Abrir el firefox y (suponiendo que el NAS está en 192.168.1.250) teclear http://192.168.1.250:8000
Si todo ha ido bien, debería aparecer un It Works!

5b) Habilitar SVN a través de HTTP
edito el fichero de configuración del nuevo Apache tecleando vi /etc/apache2/httpd.conf
tecleo i para ponerme en modo inserción
bajo hasta el final
tecleo include /opt/etc/apache2/conf.d/mod_dav_svn.conf
Pulso la tecla Esc para salir del modo de inserción
Tecleo :wq para guardar y salir

reinicio el nuevo Apache tecleando /opt/sbin/httpd -k restart
Compruebo la página anterior y veo que el Apache ha conseguido arrancar con las líneas LoadModule

5c) Configurar mod_dav_svn.conf para que apunte a nuestro proyecto
mod_dav_svn.conf viene con un ejemplo de configuración de proyecto SVN.
pongamos el nuestro:
editamos /opt/etc/apache2/conf.d/mod_dav_svn.conf
Después de los LoadModule, escribimos:
<Location /reposTEST>
DAV svn
SVNParentPath /share/SVN/reposTEST
</Location>

Guardar y salir

SVNParentPath permite definir una carpeta de forma que las subcarpetas ya son accesibles en cuanto se crean (en lugar de tener que añadir un </Location...> para cada proyecto)

Reinicio el nuevo Apache para probarlo.

5d) Probar SVN a través de HTTP
siguendo pasos similares al 3, nos movemos a /home/workspace
tecleamos cd /home/workspace
Hacemos un CheckOut del testProject en nuestra carpeta de trabajo, al que cambiaremos el nombre para diferenciar.
teclear svn co http:192.168.1.250:8020/reposTEST/testProject /home/workspace/testProject_HTTP
Aparece Checked out revision #. Funciona correctamente
Se habrá creado la carpeta /home/workspace/testProject_HTTP lista para trabajar con SVN.

5e) Añadir ficheros al repositorio.
A ver si tengo un ratillo para seguir con el documento.
El problema es que si no se hace nada más, no será posible añadir ficheros al repositorio.
Como la carpeta compartida SVN se ha creado desde WebAdmin, el usuario es Admin y pertenece al grupo de administradores.
Habrá que cambiar el Owner y Group de las carpetas de proyectos para que sea SVN.
Antes habrá que crear un grupo SVN desde WebAdmin (al que añadiremos todos los usuarios que necesiten trabajar con SVN)
teclear chown -R SVN.SVN /share/SVN/reposTEST/
A partir de ahora, el usuario SVN, y cualquier usuario que pertenezca al grupo SVN podrán añadir ficheros al repositorio

5f) Habilitar control de usuarios

-----------------------------------------------------------------------
- - - Ya está resuelto - - -
Y a partir de aquí empiezan los problemas.
Sin más, compruebo que hay dos servidores Apache
Uno Apache 2.2.13??. relacionado con /home/httpd, y puerto 8080 que se utiliza para la administración del NAS vía web
Otro Apache/2.2.6 relacionado con /usr/local/apache/bin/apache que se utiliza (des)habilitando el WebServer del NAS
(pongo ?? porque no encuentro ahora la forma de saber la versión, pero era algo así)

Entiendo que tendré que utilizar el Apache del WebServer para que sirva SVN a través de él
Su archivo de configuración está en /usr/local/apache/conf/apache.conf
lo edito tecleando vi /usr/local/apache/conf/apache.conf
tecleo i para ponerme en modo inserción
bajo hasta el final
tecleo include /opt/etc/apache2/conf.d/mod_dav_svn.conf
Pulso la tecla Esc para salir del modo de inserción
Tecleo :wq para guardar y salir

Reinicio el Apache para que se tengan en cuenta los cambios
Paro el Servidor Web desde la web del administrador Network Services -> Web Server
Inicio de nuevo el servidor desde la web del administrador.
Voy al System Administration -> System Logs y veo que el Servidor Web no se ha arrancado

Si el Servidor Web no arranca por las dos líneas LoadModule, ya no hace merece la penta configurar nada más.

El servidor Web también se puede reiniciar por SSH con:
/etc/init.d/Qthttpd.sh restart

Que devuelve:
Syntax error on line 215 of /etc/config/apache/apache.conf:
Syntax error on line 2 of /opt/etc/apache2/conf.d/mod_dav_svn.conf:
Cannot load /opt/libexec/mod_dav_svn.so into server: /opt/lib/libsvn_subr-1.so.0:
undefined symbol:sqlite3_open_v2

Podría alguien ayudarme desde el punto en que lo dejo?


Un saludo,
Aitortxo.

Mi equipo es un TS-439, recién reseteada.
Versión de Firmware 1014T (3.1.2), recién actualizada.

svn --version
svn, version 1.6.6 (r40053) compiled Oct 22 2009
RA modules:
ra_neon (http, hptts)
ra_svn (with cyrus_SASL authentication, handles 'svn' scheme)
ra_local (handles 'file' scheme)

ipkg status
apr 1.3.8-1
apr-util 1.3.9-1
cyrus-sasl-libs 2.1.22-2
e2fslibs 1.41.9-1
expat 2.0.1-1
gdbm 1.8.3-2
libdb 4.2.52-3
libxml2 2.7.6-1
ncurses 5.7-1
neon 0.28.4-1
openldap-libs 2.3.43-1
openssl 0.9.81-1
readline 6.0-1
sqlite 3.6.20-1
svn 1.6.6-1
zlib 1.2.3-3
Última edición por Aitortxo el Jue 12 Nov 2009 14:15, editado 2 veces en total
Aitortxo
 
Mensajes: 2
Registrado: Lun 09 Nov 2009 23:33

Re: SVN a través de APACHE

Notapor Ruben [QNAP Club] » Mié 11 Nov 2009 21:06

Hola Aitortxo,

Asegúrate de que incluyes un directorio que no contiene algún archivo perdido, que pueda provocar el error del servidor en el arranque. Ejecutando "apachectl configtest" te dará una lista de los archivos que están siendo procesados durante la comprobación de la configuración.

Saludos,

Rubén Rodríguez
[QNAP Club en Español]
Ruben [QNAP Club]
 
Mensajes: 436
Registrado: Dom 04 Oct 2009 10:05
Ubicación: España

Re: SVN a través de APACHE

Notapor Aitortxo » Jue 12 Nov 2009 12:53

Hola Rubén:

Gracias por la rápida respuesta, se ve que este foro está vivo.

He ejecutado apachectl configtest, como comentas:
./mnt/ext/opt/apache/bin/apachectl configtest

y me responde:

Syntax error on line 215 of /etc/config/apache/apache.conf:
Syntax error on line 2 of /opt/etc/apache2/conf.d/mod_dav_svn.conf:
Cannot load /opt/libexec/mod_dav_svn.so into server: /opt/lib/libsvn_subr-1.so.0:
undefined symbol:sqlite3_open_v2

La línea 215 de apache.conf es aquella en la que enlazo con /opt/etc/apache2/conf.d/mod_dav_svn.conf, y dice:
include /opt/etc/apache2/conf.d/mod_dav_svn.conf

La línea 2 de mod_dav_svn.conf carga el módulo mod_dav_svn.so, y dice:
LoadModule dav_svn_module /opt/libexec/mod_dav_svn.so


- - -

Al final he optado por instalar un apache adicional y ya funciona todo:
Apache de Administración - puerto 8080
Apache de WebServer - puerto 80
Apache de SVN - puerto 8020

El nuevo Apache que he instalado a través de IPKG es de la versión 2.2.13-1, mientras que el Apache de WebServer es la 2.2.6
Podría ser este el problema?

Modifico el primer post para que esté todo junto.

Muchas gracias,
Aitor.
Aitortxo
 
Mensajes: 2
Registrado: Lun 09 Nov 2009 23:33

Re: SVN a través de APACHE

Notapor Ruben [QNAP Club] » Sab 14 Nov 2009 21:15

Hola Aitortxo,

Me alegro de que ya esté solucionado. No obstante, debería ser posible instalar Subversion (SVN) con la versión anterior de Apache, la 2.2.6. Tienes un manual, aunque en inglés, de cómo instalar y configurar Subversion (SVN) en este enlace.

Saludos,

Rubén Rodríguez
[QNAP Club en Español]
Ruben [QNAP Club]
 
Mensajes: 436
Registrado: Dom 04 Oct 2009 10:05
Ubicación: España


Volver a Servidor Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado