Extra: Instalación y configuración de Git bajo Apache2.2

por el 03/12/12

Vamos a comenzar preparando Git para poder visualizarlo desde Apache2.2

En primer lugar descargamos msysgit. Hay varias opciones disponibles. Nosotros hemos elegido la versión Portable. A día de este manual es la versión 1.8.0. Una vez descargado lo extraemos en D:\server\git-win32 (Recordad que D:\server es el directorio que hemos estado usando para guardar todo lo relacionado con nuestro servidor).


Instalamos gitweb y sus dependencias.

sudo apt-get -y install gitweb


Instalamos gitweb y sus dependencias.

sudo yum -y install gitweb

Con esto ya tendremos Git en nuestro sistema, ahora vamos a integrarlo con Apache2.2

(Si has instalado PHP, Subversion o Trac siguiendo nuestro manual sáltate este punto) Nos dirigimos al archivo de configuración de Apache, Apache2\conf\httpd.conf y vamos al final del documento y añadimos.

# Addons config
Include conf/addons/*.conf

Dentro del directorio de configuración creamos una nueva carpeta llamada addons y dentro de esta un archivo git.conf. Abrimos el archivo y escribimos.

SetEnv GIT_PROJECT_ROOT D:/server/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))$" \
    D:/server/git-win32/libexec/git-core/git-http-backend.exe/$1
ScriptAlias /git D:/server/git-win32/share/gitweb/gitweb.cgi/
Alias /static D:/server/git-win32/share/gitweb/static/


    Options -Indexes FollowSymLinks
    AllowOverride AuthConfig FileInfo
    Order allow,deny
    Allow from all


    Options -Indexes FollowSymLinks
    AllowOverride AuthConfig FileInfo
    Order allow,deny
    Allow from all

A continuación, abrimos el archivo D:\server\git-win32\share\gitweb\gitweb.cgi.

La primera línea corresponde a la ruta de Perl, Msysgit viene con una versión de Perl, así que no es necesario instalarlo. Reemplazamos esa línea con la ruta correspondiente de perl

.

#!D:/server/git-win32/bin/perl

A continuación buscamos our $GIT = y le indicaremos la ruta de nuestro Git. En nuestro caso quedaría.

our $GIT = "D:/server/git-win32/bin/git";

Por último, buscamos la línea our $projectroot = , donde indicaremos la ruta donde estarán nuestros repositorios. En nuestro caso, hemos creado una carpeta en D:\server\git, por lo que quedaría:

our $projectroot = "/D/server/git";

Nota: Esta parte no admite rutas Windows, por lo que hemos reemplazado D:\ por /D/ para indicarle que es el disco duro D.


Para configurar git en nuestro apache, editamos el archivo /etc/apache2/conf.d/gitweb (se debe ser root).

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/


    Options -Indexes FollowSymLinks
    AllowOverride AuthConfig FileInfo
    Order allow,deny
    Allow from all


    Options -Indexes FollowSymLinks
    AllowOverride AuthConfig FileInfo
    Order allow,deny
    Allow from all

Ahora creamos el directorio donde se guardaran los repositorios, nosotros hemos usado /var/www/git.

Para terminar editamos el archivo /etc/gitweb.conf/ para indicar la ruta para nuestros repositorios. Cambiamos el valor de $projectroot

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

Para configurar git en nuestro apache, editamos el archivo /etc/httpd/conf.d/git.conf (se debe ser root).

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/


    Options -Indexes FollowSymLinks
    AllowOverride AuthConfig FileInfo
    Order allow,deny
    Allow from all


    Options -Indexes FollowSymLinks
    AllowOverride AuthConfig FileInfo
    Order allow,deny
    Allow from all

Abrimos el archivo /var/www/git/gitweb.cgi y buscamos our $projectroot = , reemplazando por.

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

Con esto hemos terminado la instalación de Git en nuestro Apache y solo resta crear un repositorio.

En la carpeta que creamos para nuestros repositorios ejecutamos el siguiente comando por consola para crear el repositorio test.git.

D:\server\git-win32\bin\git init --bare test.git && cd test.git && git config http.receivepack true


En la carpeta que creamos para nuestros repositorios ejecutamos el siguiente comando por consola para crear el repositorio test.git.

sudo -u www-data git init --bare test.git && sudo git config http.receivepack true


En la carpeta que creamos para nuestros repositorios ejecutamos el siguiente comando por consola para crear el repositorio test.git.

sudo -u apache git init --bare test.git && sudo git config http.receivepack true

Nota: Atentos si se produce una alerta en SELinux al hacer push. Tendréis que desactivar SELinux o crear una excepción como se indica en el mensaje de la alerta.

Con nuestro nuevo repositorio ya creado, abrimos el navegador y nos dirigimos a:

https://127.0.0.1/git

Deberíamos ver algo como la imagen inferior.

3 Respuestas para “Extra: Instalación y configuración de Git bajo Apache2.2”

  1. Nyayukko

    03/12/12

    RT @PistachitosBlog: Extra: Instalación y configuración de Git bajo Apache2.2 https://t.co/Kv1J5C9w

  2. oswaldo

    12/11/13

    Hola que tal, he estado batallando para montar el servidor git en apache, pero al momento de levantar de nuevo el apache, me marca error. No se que este pasando ya he seguido varios tutoriales, incluso unos que están en ingles muy parecidos a este. ¿Qué crees que esté pasando? Espero y me puedas ayudar. Saludos.

Escribir un Comentario