Esta sección describirá cómo activar, administrar y asegurar un servidor Subversion.
Las siguientes instrucciones instalarán un servidor Subversion, que será configurado para utilizar OpenSSH como método seguro de acceso remoto, con svnserve disponible para accesoes anónimos.
La configuración del servidor Subversion consiste en los siguientes pasos:
Necesitarás ser root para la parte inicial de la configuración. Crea el usuario y grupo svn con los siguientes comandos:
groupadd svn &&
useradd -c "SVN Owner" -d /home/svn -m -g svn -s /bin/false svn
Si piensas tener múltiples repositorios, deberías tener un grupo dedicado a cada repositorio para facilitar la administración. Crea el grupo svntest para el repositorio de pruebas y añade el usuario svn a dicho grupo con los siguientes comandos:
groupadd svntest &&
usermod -G svntest svn
Adicionalmente, deberías establecer umask 002 mientras trabajas con un repositorio para que todos los nuevos ficheros sean escribibles por el propietario y el grupo. Esto se hace mandatorio creando un guión envoltorio para svn y svnserve:
mv /usr/bin/svn /usr/bin/svn.orig && mv /usr/bin/svnserve /usr/bin/svnserve.orig && cat >> /usr/bin/svn << "EOF" #!/bin/sh umask 002 /usr/bin/svn.orig "$@" EOF cat >> /usr/bin/svnserve << "EOF" #!/bin/sh umask 002 /usr/bin/svnserve.orig "$@" EOF chmod 0755 /usr/bin/svn{,serve}
Si utilizas Apache para trabajar con el repositorio sobre HTTP, aunque sea para acceso anónimo, deverías envolver /usr/sbin/httpd en un guión similar.
Con subversion-1.1.0 y posteriores, está disponible un nuevo tipo de almacenamiento de datos en el repositorio, FSFS. Hay una penalización en velocidad con el nuevo controlador, sin embargo el repositorio puede ubicarse ahora en un montaje de red, y cualquier corrupción no requiere ahora de un administrador que recupere el repositorio. Para más información y comparación entre FSFS y BDB, mira http://svnbook.red-bean.com/svnbook-1.1/ch05.html#svn-ch-5-sect-1.2.A. Opcionalmente puedes pasar bdb en vez de fsfs en el siguiente comando para crear un almacenamiento de datos BerkelyDB.
Crea un nuevo repositorio Subversion con los siguientes comandos:
install -d -m0755 /srv &&
install -d -m0755 -o svn -g svn /srv/svn/repositories &&
svnadmin create --fs-type fsfs /srv/svn/repositories/svntest
Ahora que el repositorio está creado, necesitamos poblarlo con algo útil. Necesitarás tener preparado un esquema de directorios predefinido exacto al aspecto que quieras que tenga el repositorio. Por ejemplo, este es el esquema establecido para BLFS con un raíz de svntest/. Necesitarás establecer un árbol de directorios similar al siguiente:
svntest/ # El nombre del repositorio trunk/ # Contiene el árbol de las fuentes existentes BOOK/ bootscripts/ edguide/ patches/ scripts/ branches/ # Necesario para ramas adicionales tags/ # Necesario para etiquetar los puntos de liberación
Una vez hayas creado un esquema de directorios como el mostrado arriba, estás preparado para hacer la importación inicial:
svn import -m "Initial import." \
[/path/to/source/tree] \
file:///srv/svn/repositories/svntest
Ahora sigue adelante y cambia la información de propietario y grupo del repositorio, y añade tu usuario normal a los grupos svn y svntest:
chown -R svn:svntest /srv/svn/repositories/svntest &&
chmod -R g+w /srv/svn/repositories/svntest &&
chmod g+s /srv/svn/repositories/svntest/db &&
usermod -G svn,svntest,[añade los grupos existentes] [usuario]
svntest es el grupo asignado al repositorio svntest. Como se ha mencionado antes, esto facilita la administración de múltiples repositorios cuando se utiliza OpenSSH para la autenticación. Yendo más allá, necesitarás añadir tu usuario normal, y cualquieras usuarios adicionales que desees que tengan acceso de escritura al repositorio, a los grupos svn y svntest.
Adicionalmente, notarás que el nuevo durectorio db del respositorio es set-groupID. Si la razón no es inmediatamente óbvia, cuando se utiliza cualquier método externo de autenticación (como ssh), el bit pegajoso se establece para que todos los nuevos ficheros sean propiedad del usuario, pero con el grupo svntest. Cualquiera en el grupo svntest puede crear ficheros, pero el grupo entero tendrá acceso de escritura a esos ficheros. Esto evita expulsar a otros usuarios del repositorio.
Ahora, sigue adelante, regresa a tu cuenta de usuario normal, y dale un vistazo a tu nuevo repositorio usando svnlook:
svnlook tree /srv/svn/repositories/svntest/
Puede que necesites salir y volver a entrar para que se refresque tu membresía a los grupos. 'su [usuario]' también debería funcionar.
Como se mencionó antes, estas instrucciones configurarán el servidor para usar sólo ssh para acceso de escritura al repositorio y proporcionar acceso anónimo mediante svnserve. Hay otras formas de proporcionar acceso al repositorio. Dichas configuraciones adicionales están mejor explicadas en http://svnbook.red-bean.com/.
Es necesario hacer la configuración del acceso para cada repositorio. Crea el fichero svnserve.conf para el repositorio svntest con los siguientes comandos:
cp /srv/svn/repositories/svntest/conf/svnserve.conf \ /srv/svn/repositories/svntest/conf/svnserve.conf.default && cat > /srv/svn/repositories/svntest/conf/svnserve.conf << "EOF" [general] anon-access = read auth-access = write EOF
No hay mucho en el archivo de configuración. Notarás que sólo se requiere la sección general. Mira en el fichero svnserve.conf.default la información sobre el uso del método de autenticación incorporado en svnserve.
Hay varias formas de iniciar svnserve. La forma más común es iniciarlo como un proceso inetd o xinetd. Alternativamente, puedes utilizar un guión de arranque para lanzar el servicio al inicio.
Si no deseas facilitar acceso anónimo a tus repositorios o usar la autenticación incorpodada de svnserve, no necesitas ejecutar svnserve.
Si utilizas inetd, añade una línea a /etc/inetd.conf usando los siguientes comandos:
cat >> /etc/inetd.conf << "EOF" svn stream tcp nowait svn /usr/bin/svnserve svnserve -i EOF
Si utilizas xinetd, el siguiente comando creará el fichero de Subversion server como /etc/xinetd.d/svn:
cat >> /etc/xinetd.d/svn << "EOF" # Begin /etc/xinetd.d/svn service svn { port = 3690 socket_type = stream protocol = tcp wait = no user = svn server = /usr/bin/svnserve server_args = -i -r /srv/svn/repositories } # End /etc/xinetd.d/svn EOF
Por último, si simplemente prefieres lanzar el servidor en el arranque, instala el guión de arranque svn incuido en el paquete blfs-bootscripts-20050313.
make install-svn
Last updated on 2005-04-10 20:06:09 +0200