Extra: Instalación y configuración de Git bajo Apache2.2
por Luis Zurro 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.
Instalamos gitweb y sus dependencias.
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.
En la carpeta que creamos para nuestros repositorios ejecutamos el siguiente comando por consola para crear el repositorio test.git.
En la carpeta que creamos para nuestros repositorios ejecutamos el siguiente comando por consola para crear el repositorio test.git.
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.
Nacido en 1988. Desarrollador por vocación y técnico especializado en calidad y rendimiento por profesión. Desde pequeño he tenido muy claro que quería dedicarme al mundo de la informática.
Amante de los videojuegos, series, libros y gatos.
Nyayukko
03/12/12
RT @PistachitosBlog: Extra: Instalación y configuración de Git bajo Apache2.2 https://t.co/Kv1J5C9w
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.
Luis
13/11/13
Buenas, si nos dices el error podremos intentar ayudarte.
Un saludo