Servidor GIT bajo Apache en Raspberry

por el 05/06/16

Muy buenas a todos, hace mucho que no escribo ninguna entrada, pero ando metido en unos proyectos que no me han dejado tiempo (cuando estén más avanzados los publicaré, palabra).

Hoy vengo con una petición de un compañero de trabajo, instalar un servidor GIT en una Raspberry Pi.

Como ya hice en entradas anteriores sobre el tema, la instalación se realizará bajo un servidor web Apache.

En primer lugar necesitaremos:

  • Raspberry Pi (Obvio).
  • Raspbian (Jessie a fecha de esta guía).
  • Adaptador Wifi o conexión Ethernet.
  • Acceso SSH o terminal.

Lo primero de todo, conectamos a nuestra Raspberry, ya sea mediante conexión SSH, o directamente por terminal.

Instalación de dependencias

Vamos a instalar los siguientes paquetes

  • apache2: El el servidor web de apache. a fecha de esta guía es la versión 2.4.
  • git: Contiene los binarios y librerías necesarias para hacer funcionar GIT.

En el terminal escribimos el siguiente comando:

sudo apt-get install -y apache2 git

A continuación vamos a activar el módulo CGI de Apache ejecutando en un terminal:

sudo a2enmod cgi

Preparación del entorno

En primer lugar establecemos la propiedad de /var/www al usuario por defecto de Apache.

sudo chown -R www-data:www-data /var/www

Ahora conectamos como el usuario por defecto de Apache.

sudo su -s /bin/bash www-data

Crear carpetas

Creamos la carpeta base de GIT.

mkdir /var/www/git

Crear repositorio

Creamos el repositorio de ejemplo

mkdir /var/www/git/test.git && cd $_ && git --bare init && git update-server-info && git config --file config http.receivepack true

Una vez finalizado este paso, salimos del usuario Apache.

exit

Configuración Apache

Creamos el fichero /etc/apache2/conf-available/git.conf con el siguiente contenido:

SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL

ScriptAliasMatch \
    "(?x)^/git/(.*/(HEAD | \
        info/refs | \
        objects/(info/[^/]+ | \
        [0-9a-f]{2}/[0-9a-f]{38} | \
        pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
        git-(upload|receive)-pack))$" /usr/lib/git-core/git-http-backend/$1

ScriptAlias /git /usr/share/gitweb/gitweb.cgi/
Alias /static /usr/share/gitweb/static/

<directory "/usr/share/gitweb/">
    Options +FollowSymLinks +ExecCGI
    AddHandler cgi-script .cgi
    AllowOverride None
    Order allow,deny
    Allow from all
    AuthType Basic
    AuthName "Git Access"
    Require valid-user
    AuthUserFile /var/www/.auth


<directory "/usr/lib/git-core">
    Require all granted
    Options +FollowSymLinks +ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
    AuthType Basic
    AuthName "Git Access"
    Require valid-user
    AuthUserFile /var/www/.auth

Y por último lo activamos creando el enlace correspondiente

sudo ln -s /etc/apache2/conf-available/git.conf /etc/apache2/conf-enabled/git.conf

Crear autentificación

En la línea anterior, hemos establecido un fichero de autentificación, pero este aún no existe, para crearlo, ejecutar el siguiente comando:

sudo htpasswd -c /var/www/.auth pistachitos

*Nosotros hemos elegido como nombre de usuario pistachitos. Vosotros usad el que creáis conveniente.

Una vez introducido el comando, os solicitará una contraseña, la introducís, y se creará el fichero con el usuario.

Configuración Gitweb

Abrimos para editar el fichero /usr/share/gitweb/gitweb.cgi.

Modificamos la línea que empieza por our $projectroot.

our $projectroot = "/var/www/git";

Y listo, ya tenemos instalado y configurado nuestro servidor GIT con Gitweb servido desde Apache, solo resta reiniciarlo.

sudo service apache2 restart

Validar y finalizar

Para verificar que el servidor Web funciona, vamos a la dirección:

https://192.168.1.3/git

*En nuestro caso, nuestra Raspberry tiene la IP 192.168.1.3, vosotros poned la vuestra ;).

gitweb

Para verificar que funciona también como servidor GIT, ejecutamos el siguiente comando desde el directorio que deseemos

git clone https://192.168.1.3/git/test.git

Si la web se ve como la de la imágen (listando vuestros proyectos GIT) y la descarga se ha realizado, significa que todo está funcionando correctamente.

Cualquier duda o sugerencia sobre esta guía, acudid a los comentarios.

¡Nos vemos con nuestro siguiente bol de Pistachitos!

Escribir un Comentario