Una vez instalado el servidor Git sobre Nginx he decidido agregarle la opción de publicar los repositorios públicos sobre el protocolo Git y, si bien las configuraciones se basan en la configuración dada en el tutorial previo de Cómo instalar un servidor Git sobre Nginx, el ejemplo puede ser fácilmente extendido a otros casos.
Configuración
El servicio sobre el protocolo Git se implementa utilizando el ejecutable git-daemon incluido en la propia distribución de Git. Para activarlo, primeramente se crea o edita el fichero /lib/systemd/system/git‑daemon.service
con el contenido siguiente:
[Unit] Description=Start Git Daemon After=network.target syslog.service [Service] ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/var/local/git/pub/ /var/local/git/pub/ Restart=always RestartSec=500ms StandardOutput=syslog StandardError=syslog SyslogIdentifier=git-daemon User=www-data Group=www-data [Install] WantedBy=multi-user.target
Como puede observarse, la configuración se reduce a lanzar el ejecutable de Git en modo demonio especificando el área que hemos destinado a repositorios públicos /var/local/git/pub/
y asignado el usuario y grupo a los utilizados por defecto por el servidor web.
Inicio / reinicio automático de los servicios configurados
Una vez definido el servicio, para dejarlo habilitado para su inicialización automática con cada inicio del servidor, el comando a utilizar es:
# systemctl enable git-daemon
y puede iniciarse manualmente con:
# service git-daemon start
Y podrá comprobarse su estado de operación en cualquier momento con:
# systemctl status git-daemon ● git-daemon.service - Start Git Daemon Loaded: loaded (/lib/systemd/system/git-daemon.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2018-05-05 13:50:48 CEST; 2min 48s ago Main PID: 24562 (git) Tasks: 2 (limit: 4915) CGroup: /system.slice/git-daemon.service ├─24562 /usr/bin/git daemon --reuseaddr --base-path=/var/local/git/pub/ /var/local/git/pub/ └─24563 git-daemon --reuseaddr --base-path=/var/local/git/pub/ /var/local/git/pub/ may 05 13:50:48 srv.example.org systemd[1]: Started Start Git Daemon.
Uso del servicio
Siguiendo con el ejemplo del repositorio /var/local/git/pub/python/sandbox.git
utilizado en el tutorial Cómo instalar un servidor Git sobre Nginx, primeramente debemos agregar el flag git‑daemon‑export‑ok
para que sea exportable por el protocolo Git:
# touch /var/local/git/pub/python/sandbox.git/git-daemon-export-ok # chgrp www-data /var/local/git/pub/python/sandbox.git/git-daemon-export-ok # chmod g+r /var/local/git/pub/python/sandbox.git/git-daemon-export-ok
Una vez hecho esto, cualquier cliente remoto puede acceder al repositorio a través de la URL git://example.org/python/sandbox.git
$ git clone git://example.org/python/sandbox.git Clonar en «sandbox»... warning: Parece que ha clonado un repositorio vacío. Comprobando la conectividad… hecho.