Mar
16
2011

Instalando un servidor Git

En una entrada anterior ya vimos la razón de uso de un sistema de control de versiones, además optamos por la elección de Git ya que era el que mejores características nos ofrecía.
A través de esta entrada vamos a aprender como instalar un servidor de Git, y la gestión de repositorios, usuarios y accesos.

Comenzamos con la instalación en Gentoo de dev-vcs/git, concretamente en esta instalación hemos usado los siguientes USE=»bash-completion blksha1 cgi curl iconv perl». Después configuramos el fichero /etc/conf.d/git-daemon con los siguientes datos, donde xxx.xxx.xxx.xxx será la Ip donde queramos que el servidor Git escuche y pondremos la ruta completa donde se alojaran nuestros proyectos en base-path.

GITDAEMON_OPTS="--syslog --enable=receive-pack --base-path=/home/git/repositories /home/git/repositories --listen=xxx.xxx.xxx.xxx"
GIT_USER="nobody"
GIT_GROUP="nobody"

Una vez configurado preparamos el servicio para que se inicie en cada arranque del sistema con rc-add git-daemon default y para finalizar arrancamos el servicio con /etc/init.d/git-daemon start. Ahora podríamos funcionar directamente con nuestro servidor Git, pero lo interesante es que toda la gestión de proyectos, accesos y usuarios la gestionemos a través de un configurador independiente.

GITOSIS

Para trabajar con repositorios Git la forma más segura y efectiva de hacerlo es mediante gitosis, permite acceso a través de SSH con un control de acceso muy limitado y no necesitamos para ello cuentas shell de usuario. Gestiona múltiples repositorios con una única cuenta de usuario shell (esta cuenta estará limitada para poder ejecutar sólo comandos git) y utiliza claves SSH para identificar a los usuarios de los proyectos. Como en Gentoo se trata de un paquete fuera de la rama estable deberemos de activarlo de la siguiente manera y posteriormente instalarlo de la forma convencional:

echo "dev-vcs/gitosis ~x86" >> /etc/portage/package.keywords
emerge -av dev-cvs/gitosis

Configurando Gitosis

Primero generamos la clave ssh en nuestra máquina mediante ssh-keygen -t rsa, enviamos la clave pública que se genera al servidor git mediante scp (la clave pública ssh id_rsa.pub estará en nuestro directorio de usuario .ssh/) para después inicializar el sistema de gitosis con la siguiente orden sudo -H -u git gitosis-init < id_rsa.pub. Tras esta orden ya tenemos el repositorio gitosis-admin creado y que será el que vamos a utilizar para seguir configurando gitosis. Pero antes de dejar que el usuario git se conecte al servidor vía ssh debemos de confirmar que puede hacer login en el sistema, verificando antes los ficheros password y shadow.

En este momento ya estamos en condiciones para clonar el repositorio gitosis-admin que será el que utilizaremos para la gestión de proyectos, permisos, usuarios y grupos. Ejecutamos por tanto la orden git clone git@servidor.dominio.com:gitosis-admin.git esto nos generará un directorio gitosis-admin donde encontraremos el fichero gitosis.conf que será el que utilizaremos para configurar todos los aspectos del servidor git. Voy a poneros un ejemplo de un fichero gitosis.conf para un proyecto con un grupo de usuarios para ilustrar el funcionamiento.

[gitosis]
dirmode = 755
daemon = no

[repo proyectoA]
description = Documentación general proyecto A
owner = El propietario o propietarios del proyecto A

[repo proyectoB]
description = Documentación general proyecto B
owner = El propietario o propietarios del proyecto B

[group gitosis-admin]
writable = gitosis-admin
members = admin@hostname admin2@server

[group proyectos]
writable = proyectoA proyectoB
members = usuario@hostname usuario2@server

Una lectura muy recomendada y más extensa para la gestión de gitosis la podemos encontrar aquí.

Entradas relacionadas

Sobre el autor: Juan Carlos Giménez Moncada

Luchando con el Open Source desde 1996...

Comentarios cerrados.