Wie veröffentliche ich ein Git-Repo über HTTP mit nginx?

8

Ich habe einen CentOS 5-Server bei domain.fr. Ich versuche, eine Subdomain festzulegen, damit ich sie mit git verwenden kann: git.domain.fr

Meine Repositorys befinden sich in / home / git (Beispiel /home/git/repos.git)

Ich habe git-http-backendNginx installiert . Ich habe ein Repository wie folgt eingerichtet:

cd /home/git/repos.git && git --bare init

Ich habe meine git.conf(enthalten in nginx.conf) wie folgt eingestellt.

Auf meiner Client-Shell wird jedoch der schwerwiegende Fehler "Repository nicht gefunden" angezeigt: git clone http://git.domain.fr/repos.git

Weiß jemand was ich tun soll? Es scheint so einfach, ich bin frustriert, weil ich sicher bin, dass es nichts ist.

server {

    listen          80;
    server_name     git.domain.fr;
    root            /home/git;

    location ~ /(/.*) {

        include /etc/nginx/fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME /usr/bin/git-http-backend;
        fastcgi_param   GIT_HTTP_EXPORT_ALL     true;
        fastcgi_param   GIT_PROJECT_ROOT        /home/git;
        fastcgi_param   PATH_INFO               $1;
        fastcgi_pass unix:/var/run/fcgiwrap.socket;
    }
}
Charaf
quelle

Antworten:

2

Ich habe dieses Snippet in einem SO-Q & A mit dem Titel gefunden: Wie wird GIT über HTTP über NGINX mit Benutzer / Passwort bereitgestellt? .

http {
    ...
    server {
        listen       80;
        server_name  git.mydomain.com;

        location ~ /git(/.*) {
            # fcgiwrap is set up to listen on this host:port
            fastcgi_pass  localhost:9001;
            include       fastcgi_params;
            fastcgi_param SCRIPT_FILENAME     /usr/lib/git-core/git-http-backend;
            # export all repositories under GIT_PROJECT_ROOT
            fastcgi_param GIT_HTTP_EXPORT_ALL "";
            fastcgi_param GIT_PROJECT_ROOT    /srv/git;
            fastcgi_param PATH_INFO           $1;
        }
    }
}

Ich würde sicherstellen, dass Ihr Setup dieses so weit wie möglich widerspiegelt. Da ich glaube, dass Apache auf Ihr /home/gitVerzeichnis zugreift , müssen Sie darauf achten, dass dieser Benutzer dazu in der Lage ist. Wenn Sie SELinux verwenden, müssen Sie außerdem sicherstellen, dass dem Prozess (httpd) geeignete Kontexte hinzugefügt wurden, /homedamit er auch auf dieses Verzeichnis zugreifen kann.

/var/log/httpd/error_logWeitere Informationen dazu, wo Apache ausgelöst wird, finden Sie in Ihrer Protokolldatei.

slm
quelle
Hallo ! Ich habe dies bereits überprüft, aber es funktioniert nicht in meiner Konfiguration. Ich kann nicht herausfinden warum, es ändert nichts. Wo finde ich hilfreiche Protokolle? Welche Methoden / Schritte sollte ich befolgen, um dies zu debuggen? Vielen Dank !
Charaf
@Charaf - Wie ich bereits sagte, ist die Protokolldatei, die ich zuerst sehen möchte, folgende : /var/log/httpd/error_log.
slm
Fast dort ! Ich habe den regulären Ausdruck entfernt und die URL fastcgi_pass gemäß diesem Beitrag ersetzt: superuser.com/questions/719949/centos-5-nginx-git-http-backend/… Ich habe keine Fehler mehr im error_log, erhalte aber immer noch eine HTTP 502, wenn ich Klon git. iMac-de-Charaf: tmp charaf $ git-Klon git.domain.fr/repos.git Klonen in 'repos' ... fatal: Zugriff auf ' git.domain.fr/repos.git ' nicht möglich: Die angeforderte URL hat einen Fehler zurückgegeben : 502
Charaf
@Charaf - du hättest den Beitrag einfach hier behalten sollen. Cross-Posting wird nicht empfohlen und führt normalerweise dazu, dass Qs geschlossen werden.
slm