Làm cách nào để xuất bản repo git qua HTTP bằng nginx?


8

Tôi có máy chủ CentOS 5 tại domain.fr. Tôi đang cố gắng đặt tên miền phụ để tôi có thể sử dụng nó với git: git.domain.fr

Các kho lưu trữ của tôi nằm trong / home / git (ví dụ /home/git/repose.git)

Tôi đã cài đặt git-http-backendvà Nginx. Tôi đã thiết lập một kho lưu trữ như thế này:

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

Tôi đã đặt git.conf(bao gồm trong nginx.conf) như dưới đây.

Tuy nhiên, trên vỏ máy khách của tôi, tôi gặp lỗi nghiêm trọng "không tìm thấy kho lưu trữ": git clone http://git.domain.fr/repos.git

Có ai biết tôi nên làm gì không? Điều đó có vẻ đơn giản, tôi cảm thấy thất vọng vì tôi chắc chắn không có gì.

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;
    }
}

Câu trả lời:


2

Tôi đã tìm thấy đoạn mã này trong Câu hỏi và trả lời SO có tiêu đề: Làm cách nào để phục vụ GIT qua HTTP qua NGINX bằng người dùng / mật khẩu? .

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;
        }
    }
}

Tôi chắc chắn rằng thiết lập của bạn phản chiếu cái này càng nhiều càng tốt. Ngoài ra, vì tôi tin rằng Apache đang truy cập vào /home/gitthư mục của bạn, bạn cần lưu ý rằng người dùng này có thể làm như vậy. Ngoài ra, nếu bạn đang sử dụng SELinux, bạn cần đảm bảo rằng quy trình (httpd) có bối cảnh phù hợp được thêm vào để /homenó cũng có thể truy cập vào thư mục này.

Tham khảo /var/log/httpd/error_logtệp nhật ký của bạn để biết thêm chi tiết về nơi Apache sẽ tăng gấp ba.


Chào ! Tôi đã kiểm tra cái này, nhưng nó sẽ không hoạt động trên cấu hình của tôi. Tôi không thể hiểu tại sao, Nó không thay đổi gì. Tôi có thể tìm thấy nhật ký hữu ích ở đâu? Tôi nên làm theo phương pháp / bước nào để gỡ lỗi này? Cảm ơn !
Charaf

@Charaf - như tôi đã nói trước đây, tệp nhật ký tôi muốn xem đầu tiên là tệp này : /var/log/httpd/error_log.
slm

Sắp đến rồi! Tôi đã xóa regex và thay thế url fastcgi_pass theo bài đăng này: superuser.com/questions/719949/centos-5-nginx-git-http-backend/ trộm Tôi không còn lỗi trong error_log nữa, nhưng vẫn nhận được HTTP 502 khi tôi git clone. iMac-de-Charaf: tmp charaf $ git clone git.domain.fr/repos.git Nhân bản vào 'repos' ... fatal: không thể truy cập ' git.domain.fr/repos.git ': Lỗi URL được yêu cầu trả về : 502
Charaf

Bài đăng được tiếp tục tại đây: superuser.com/questions/719949/centos-5-nginx-git-http-backend
Charaf

@Charaf - bạn nên giữ bài viết ở đây. Đăng chéo không được khuyến khích và thường dẫn đến việc Q bị đóng cửa.
slm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.