web-dev-qa-db-ja.com

nginxを使用してHTTP経由でGitリポジトリを公開する方法

私はdomain.frにCentOS 5サーバーを持っています。 gitで使用できるようにサブドメインを設定しようとしています:git.domain.fr

私のリポジトリは/ home/gitにあります(例/home/git/repos.git)

git-http-backendとNginxをインストールしました。私はこのようにリポジトリを設定しました:

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

git.confnginx.confに含まれる)を以下のように設定しました。

ただし、クライアントシェルで「リポジトリが見つかりません」という致命的なエラーが発生します:git clone http://git.domain.fr/repos.git

誰か私が何をすべきか知っていますか?それはとても単純に思えます、それが何もないと確信しているので私はイライラしています。

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

私はこのスニペットをSO Q&Aタイトル: ユーザー/パスワードを使用してNGINX経由でHTTP経由でGITを提供する方法? で見つけました。

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

私はあなたのセットアップがこれをできるだけミラーリングすることを確認します。また、Apacheが/home/gitディレクトリにアクセスしていると思いますので、このユーザーがアクセスできるように注意する必要があります。さらに、SELinuxを使用している場合は、プロセス(httpd)が/homeに適切なコンテキストを追加していることを確認して、このディレクトリにもアクセスできるようにする必要があります。

Apacheが作動する場所の詳細については、/var/log/httpd/error_logログファイルを参照してください。

2
slm