用于http和ssh的Gitolite服务器端设置

时间:2012-09-06 03:46:54

标签: git http ssh gitolite

我正在尝试使用gitolite设置git服务器。 到目前为止,我有服务器使用ssh,我不是试图在它上面添加http支持(最终目标是使用LDAP进行身份验证)

我跟着 http://sitaramc.github.com/gitolite/ssh-and-http.html如何记录。

我以为我已经完成了所有设置,所以我尝试了:

git clone http://myServer/testing

结果是:

Cloning into 'testing'... fatal: http://myServer/testing/info/refs not found: did you run git update-server-info on the server?

我尝试从实际的服务器测试存储库运行git update-server-info,结果仍然相同。

testing.git存储库中有git-daemon-export-ok

有人可以帮我解决这个问题吗?我不知道我应该从哪里开始......

其他信息:
我正在使用Arch Linux(服务器端)

来自sudo suexec -V的输出:

-D AP_DOC_ROOT="/srv/http"
-D AP_GID_MIN=99
-D AP_HTTPD_USER="http"
-D AP_LOG_EXEC="/var/log/httpd/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=99
-D AP_USERDIR_SUFFIX="public_html"

下面是我的/etc/httpd/conf/httpd.conf中的VirtualHost部分

在下面的部分中,servername是我从 hostname 命令获得的

<VirtualHost *:80>  
    ServerName        servername  
    ServerAlias       servername
    ServerAdmin       admin@server.com

    DocumentRoot /srv/http/git  
    <Directory /srv/http/git>  
        Options       None  
        AllowOverride none  
        Order         allow,deny  
        Allow         from all  
    </Directory>  

    SuexecUserGroup git git
    ScriptAlias /git/ /srv/http/bin/gitolite-suexec-wrapper.sh/
    ScriptAlias /gitmob/ /srv/http/bin/gitolite-suexec-wrapper.sh/

    <Location /git>
        AuthType Basic
        AuthName "Git Access"
        Require valid-user
        AuthUserFile /etc/httpd/conf/extra/git.passwd
    </Location>       
</VirtualHost>

ls -l /srv/http/

的输出
drwxr-xr-x 2 git  git  4096 Sep  6 22:02 bin
drwxr-xr-x 2 http http 4096 Sep  6 22:00 git

ls -l /srv/http/bin/gitolite-suexec-wrapper.sh

的输出
-rwx------ 1 git git 196 Sep  6 22:02 /srv/http/bin/gitolite-suexec-wrapper.sh

gitolite-suexec-wrapper.sh的内容:

#!/bin/bash
#
# Suexec wrapper for gitolite-shell
#

export GIT_PROJECT_ROOT="/home/git/repositories"
export GITOLITE_HTTP_HOME="/home/git"

exec ${GITOLITE_HTTP_HOME}/gitolite/src/gitolite-shell

2 个答案:

答案 0 :(得分:1)

您的配置定义了一个别名/ git /,它将调用您的gitolite包装器 这意味着它只会为yourServer/git/...

这样的地址调用它

你至少应该尝试克隆:

git clone http://myServer/git/testing

作为OP hoistyler中的this answer引用,唯一剩下的问题是基于文件登录的身份验证问题。

答案 1 :(得分:1)

感谢VonC的指导,我现在已经解决了这个问题。

我已经尝试了git clone http://myServer/git/testing并且它给了我

Cloning into 'testing'...
Username for 'http://myServer': git
Password for 'http://git@myServer': 
fatal: Authentication failed

我查看了日志,并发现我的git.passwd文件格式错误(我忘了上次创建该文件的方式..)

我基本上不得不再次创建我的git.passwd文件:

htpasswd -c git.passwd git

现在它有效!再次感谢VonC