Instalar y configurar un servidor de GIT y GitWeb

PREVIO: ESTA INSTALACIÓN HA SIDO PROBADA EN UNA UBUNTU 10.04 SERVER RECIÉN INSTALADA PARA REALIZAR ESTE DOCUMENTO

PASO 1. Actualizar el sistema

apt-get update
apt-get install nano

PASO 2. Instalar core de GIT

apt-get install apache2 git-core gitweb

PASO 3. Estructura base y usuario de acceso

mkdir -p /home/user/git
mkdir -p /home/user/www.git
chown -R git:git /home/user/git
chown -R www-data:www-data /home/user/www.git/
adduser --system --shell /bin/bash --gecos 'git user' --group  --disabled-password   --home /home/user/git git

PASO 4. Activamos los colores de la consola

git config --global color.ui auto
git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto

PASO 5. Configuración Apache - GitWeb

nano -w /etc/apache2/conf.d/gitweb

dejamos el fichero con este contenido

Alias /git /home/user/www.git

<Directory /home/user/www.git >
    Allow from all
    AllowOverride all
    Order allow,deny
    Options +ExecCGI
    DirectoryIndex gitweb.cgi

    <files gitweb.cgi>
       SetHandler cgi-script
      </files>


SetEnv GITWEB_CONFIG /etc/gitweb.conf

PASO 6. Copiamos ficheros básicos para GitWeb

cp -a /usr/share/gitweb/* /home/user/www.git/
cp -a /usr/lib/cgi-bin/gitweb.cgi /home/user/www.git/

PASO 7. Configuramos GitWeb

nano -w /etc/gitweb.conf

dejamos el fichero con este contenido

$projectroot = '/home/user/git/';
$git_temp = "/tmp";
$home_text = "indextext.html";
$projects_list = $projectroot;
$stylesheet = "/git/gitweb.css";
$logo = "/git/git-logo.png";
$favicon = "/git/git-favicon.png";

reiniciamos Apache

/etc/init.d/apache2 restart

En este punto ya podemos acceder a nuestra aplicación GIT a través de la URL:

http://ip.del.servidor/git/

PASO 8. Iniciando un proyecto

cd /home/user/git/
mkdir prueba.git
cd prueba.git

ahora lo iniciamos

git init --bare
git config --global user.name "Nombre Responsable"
git config --global user.email "correo@responsable.com"
git commit -a

ajustamos los permisos

chown -R git:git /home/user/git
chmod -R 775 /home/user/git
chmod -R g+ws *
chgrp -R git *
git repo-config core.sharedRepository true

PASO 9. Script de inicio

nano -w /etc/init.d/git-daemon

con el contenido

#!/bin/sh
test -f /usr/bin/git || exit 0
. /lib/lsb/init-functions
GITDAEMON_OPTIONS="daemon --reuseaddr --verbose --base-path=/home/user/git/ --detach"
case "$1" in
    start)  log_daemon_msg "Starting git-daemon"
    start-stop-daemon --start -c git:git --quiet --background \
    --exec /usr/bin/git -- ${GITDAEMON_OPTIONS}
    log_end_msg $?
    ;;
    stop)   log_daemon_msg "Stopping git-daemon"
    start-stop-daemon --stop --quiet --name git-daemon
    log_end_msg $?
    ;;
    *)      log_action_msg "Usage: /etc/init.d/git-daemon {start|stop}"
    exit 2
    ;;
esac
exit 0

le damos los permisos adecuados

chmod u+x /etc/init.d/git-daemon

lo instalamos

update-rc.d git-daemon defaults

lo iniciamos

/etc/init.d/git-daemon start

y ya tenemos nuestro servidor GIT y podemos verlo a través de la URL:

http://ip.servidor/git/

PASO 10. Autorización GitWeb

cd /etc/
htpasswd -c /etc/git.htpasswd miusuario

creamos ahora el fichero .htaccess dentro del directorio de GitWeb

nano -w /home/user/www.git/.htaccess

con el contenido

AuthType Basic
AuthName "Git"
AuthUserFile /etc/.git.htpasswd
Require valid-user

reiniciamos el servidor Apache y probamos el acceso vía web a la URL:

http://ip.servidor/git/

donde nos debe pedir usuario y password.

PASO 11. Autorización SSH para GIT

Para la autorización debemos crear usuarios de sistema apuntando su home al directorio de GIT. Por ejemplo:

useradd -s /bin/sh -d /home/user/git/ miusuario
usermod -G git
password miusuario

2 Respuestas

  1. Jesus Israel Perales Martinez

    ya disculpa no leei bien
    nano /etc/apache2/sites-available/default
    nano /etc/apache2/ports.conf
    /etc/init.d/apache2 restart

  2. Jesus Israel Perales Martinez

    Como puedo cambiar el puerto de gitweb no quiero que este sobre el 80 lo necesito en otro pues ya tengo ocupado el 80 por una app :S

Responder a Jesus Israel Perales Martinez