Mostrando entradas con la etiqueta debian. Mostrar todas las entradas
Mostrando entradas con la etiqueta debian. Mostrar todas las entradas

jueves, 27 de octubre de 2011

Añadir gitweb a nuestro servidor Git gestionado por Gitolite



Después de configurar nuestro servidor Git gestionado por Gitolite, tal y como comentaba en mi anterior post "Instalación de un Servidor Git gestionado con Gitolite", he decidido añadirle la posibilidad de ver los repositorios mediante el frontend gitweb.

Para esta configuración partiré de la máquina virtual que ya tenemos creada y  detallaré los pasos para configurar-la y dejar configurado el acceso mediante gitweb.

Configurar usuario git


Para que gitweb pueda funcionar correctamente es necesario que nuestro usuario git (que es el encargado de los repositorios) tenga los mismos permisos que www-data, para que este pueda leer y tratar los repositorios, para ello tendremos que hacer lo siguiente

root@gitserver:~# usermod -a -G git www-data

Configurar Gitolite


Hay que configurar una variable de gitolite para que funcione correctamente, para ello hemos de editar el fichero .gitolite.rc y modificar la variable $REPO_UMASK para que contenga el valor 0027.


vi /home/git/.gitolite.rc


También hay que cambiar los permisos del fichero projects.list y del directorio repositories, para que el servidor apache pueda leer el contenido y mostrarlo en la interfaz gitweb.


chmod -R g+rx /home/git/repositories
chmod g+r /home/git/projects.list


Instalación y configuración de gitweb

Como partimos de la distribución Debian, la forma más fácil de instalar gitweb es mediante el comando apt-get. De paso instalaremos el paquete que nos permitirá ver el código marcado según el lenguaje que utilicemos.

apt-get install hightlight gitweb

Ahora hay que configurar gitweb para que apunte a nuestros repositorios. Para ello modificar las variables del fichero /etc/gitweb.conf 

  • cambiar projectroot a "/home/git/repositories"

  • cambiar projects_list a "/home/git/projects.list"


Ahora podemos reiniciar el servidor web y conectarnos a nuestro gitweb apuntando en nuestro navegador a http://gitserver/gitweb  (donde gitserver es la ip de tu maquina)

apache2ctl restart.

Configurar git-daemon para acceso anónimo solo de lectura


Si lo deseamos,  podemos configurar un git de tal forma que existan proyectos que puedan ser clonados de forma anónima, sin necesidad de configurar claves RSA. Para ello tendremos que configurar el servicio que se encarga de ello. De forma sencilla instalaremos el git-daemon.

apt-get install git-daemon-run


Después hay que editar el fichero /etc/sv/git-daemon/run , añadir el -ugitdaemon:git y modificar el base path. El contenido del fichero ha de ser el siguiente.
root@gitserver:/home/git# cat /etc/sv/git-daemon/run
#!/bin/sh
exec 2>&1
echo 'git-daemon starting.'
exec chpst -ugitdaemon:git \
"$(git --exec-path)"/git-daemon --verbose --reuseaddr \
--base-path=/home/git/repositories/ /home/git/repositories/


Reiniciamos el git-daemon

root@gitserver:/home/git# sv restart git-daemon
ok: run: git-daemon: (pid 3707) 0s


Y ya tendremos listo nuestro servicio git-daemon funcionando correctamente, por lo que ya podremos clonar los repositorios de forma anonima utilizando como url
git://gitserver/testing.git

Modificar el aspecto visual de gitweb


El siguiente apartado es totalmente opcional, pero muy aconsejable si queremos que nuestra interfaz de gitweb tenga un aspecto más amigable y similar a github. (Popular gestor de repositorios, gratuito para proyectos opensource y de pago para privados)

Editar el fichero /etc/gitweb.conf y añadir estas lineas al final


$projects_list_description_width = 100;

# Enable blame, pickaxe search, snapshop, search, and grep
# support, but still allow individual projects to turn them off.
# These are features that users can use to interact with your Git trees. They
# consume some CPU whenever a user uses them, so you can turn them off if you
# need to. Note that the 'override' option means that you can override the
# setting on a per-repository basis.
$feature{'blame'}{'default'} = [1];
$feature{'blame'}{'override'} = 1;

$feature{'pickaxe'}{'default'} = [1];
$feature{'pickaxe'}{'override'} = 1;

$feature{'snapshot'}{'default'} = [1];
$feature{'snapshot'}{'override'} = 1;

$feature{'search'}{'default'} = [1];

$feature{'grep'}{'default'} = [1];
$feature{'grep'}{'override'} = 1;

$feature{'show-sizes'}{'default'} = [1];
$feature{'show-sizes'}{'override'} = 1;

$feature{'avatar'}{'default'} = ['gravatar'];
$feature{'avatar'}{'override'} = 1;

$feature{'highlight'}{'default'} = [1];
$feature{'highlight'}{'override'} = 1;


Modificar el aspecto visual mediante el tema gitweb-theme.  Descargamos el zip y lo descomprimimos en el directorio temporal.


root@gitserver:/tmp/kogakure-gitweb-theme-ccb4b48# mv /usr/share/gitweb/gitweb.js /usr/share/gitweb/gitweb.js.orig
root@gitserver:/tmp/kogakure-gitweb-theme-ccb4b48# mv /usr/share/gitweb/gitweb.css /usr/share/gitweb/gitweb.css.orig
root@gitserver:/tmp/kogakure-gitweb-theme-ccb4b48# cp gitweb.css /usr/share/gitweb/
root@gitserver:/tmp/kogakure-gitweb-theme-ccb4b48# cp gitweb.js /usr/share/gitweb/


Por último, comentaros que aquí tenéis la imagen para VirtualBox.


http://www.megaupload.com/?d=41QOJL6W
http://www.megaupload.com/?d=UDH6Z22N
http://www.megaupload.com/?d=KZJ0B116
http://www.megaupload.com/?d=YK10YPYT
http://www.megaupload.com/?d=4R5FHN57
http://www.megaupload.com/?d=K3WHU28B

lunes, 24 de octubre de 2011

Instalación de un servidor Git gestionado con Gitolite



Por motivos de trabajo, tengo la posibilidad de realizar un cambio en el repositorio de control de versiones para el departamento. Por lo que voy a plantear la posibilidad de migrar todo el código desde StarTeam (un SCM desfasado que nadie conoce) a Git (sin duda uno de los mejores SCM que hay actualmente).

Para ello voy a montar una maquina virtual con una distribución linux debian, a la que voy a instalar los siguientes componentes.

  • git. Sistema de control de versiones.

  • gitolite. Sistema para gestionar los repositorios mediante una única cuenta.


Al final del tutorial dispondréis de una imagen preparada y lista para funcionar con todos los pasos ya realizados. Esta imagen será realizada con VirtualBox un sistema de virtualización gratuito disponible para todos los sistemas (Linux/Mac/Windows)

Lo primero que necesitamos es disponer de un linux funcionando. Para este servidor utilizaré un cd de instalación de debian netinst versión 6.0.3  e instalaré solo lo indispensable para que podamos disponer de un servidor mínimo y funcional. Queda fuera de este tutorial la instalación de debian desde una imagen, por lo que procederé a detallar los pasos una vez disponemos de un sistema linux funcionando correctamente.

Instalación de Git


 Primero instalamos las herramientas de git

apt-get install git

Creación de usuario git


Crearemos un usuario con username "git" , que será el encargado de gestionar los repositorios.

sudo adduser --system --shell /bin/bash --gecos 'git version control' --group --disabled-password --home /home/git git

Generación de Clave RSA del Administrador del repositorio

Antes de instalar gitolite, es necesario que creemos una clave RSA para el usuario que administrará los repositorios GIT. En mi caso, voy a administrarlo mediante una máquina windows, por lo que utilizaré PuTTY. (Queda fuera de este tutorial la instalación y configuración de PuTTY, pero es tan fácil como descargar el fichero putty-installer y ejecutarlo).

A continuación generaremos una clave SSH-2 RSA mediante PuTTY Key Generator. Le daremos a Generate y guardaremos las claves, public key y private key. Tendremos que guardar estas claves.



A continuación subiremos el fichero public key a nuestro servidor (al directorio temporal por ejemplo). El fichero gitserver.pub corresponde a lo que hay dentro del cuadrado (ssh-rsa AAA....)

 Instalación de gitolite


La instalación de gitolite puede llevarse a cabo desde debian de la siguiente forma.
apt-get install gitolite
Pero para esta instalación prefiero instalar la última versión de gitolite, descargandola desde la página web https://github.com/sitaramc/gitolite

Para ello entraremos como usuario root, y nos cambiaremos al usuario git (recordar que el usuario git no tiene password a menos que se lo hayamos dado).

root@gitserver:~# su - git

Añadimos al PATH el directorio $HOME/bin mediante la modificación del .bash_profile con nuestro editor favorito, el contenido ha de contener la siguiente línea.

export PATH=/home/git/bin:$PATH
git@gitserver:~$ cd sitaramc-gitolite/src/
git@gitserver:~/sitaramc-gitolite/src$ ./gl-system-install
using default values for EUID=105:
/home/git/bin /home/git/share/gitolite/conf /home/git/share/gitolite/hooks


Después ejecutaremos el gl-setup desde el path (no desde el directorio src)

git@gitserver:~$ gl-setup /tmp/
gitserver.pub
.ICE-unix/
sitaramc-gitolite-v2.1-31-gf0cedeb.zip
.X11-unix/
git@gitserver:~$ gl-setup /tmp/gitserver.pub
The default settings in the rc file (/home/git/.gitolite.rc) are fine for most
people but if you wish to make any changes, you can do so now.

hit enter...
creating gitolite-admin...
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
creating testing...
Initialized empty Git repository in /home/git/repositories/testing.git/
[master (root-commit) ce2e627] start
2 files changed, 6 insertions(+), 0 deletions(-)
create mode 100644 conf/gitolite.conf
create mode 100644 keydir/gitserver.pub


A partir de ahora ya tenemos disponible un servidor GIT con autentificación, para gestionarlo hemos de clonar el siguiente repositorio con la clave privada generada anteriormente (como usuario administrador)
git clone git@server:gitolite-admin
En mi caso, como utilizo una máquina virtual, he de clonar la IP 10.16.77.96, por lo que el cuadro de dialogo del TortoiseGit (el client GIT que utilizo para windows) queda de la siguiente forma.



Si quieres saber como se gestionan los usuarios/grupos en gitolite, puedes consultar mi post "PROXIMAMENTE" donde detallo como se gestionan los repositorios, usuarios y grupos.

Por último, aquí os dejo la imagen VirtualBox con un servidor GIT funcionando con Gitolite. (La imagen se ha subido a MegaUpload para ahorrarme mucho ancho de banda)


http://www.megaupload.com/?d=8ZL5QOOU
http://www.megaupload.com/?d=L4OW5CVC
http://www.megaupload.com/?d=UM14HWG9
http://www.megaupload.com/?d=TSWJK2F8
http://www.megaupload.com/?d=5ZU9ARKY
http://www.megaupload.com/?d=Q7SUT2TZ


Recuerda dejar un comentario y compartir el artículo si te ha sido útil.

 

Por último, os recomiendo visitar mi último post donde añado gitweb al servidor. Añadir gitweb a nuestro servidor Git gestionado por Gitolite