Я использую CentOS 5.5 и мне нужно установить git server.

Установил git и установил домашний каталог:

yum install git
mkdir -p /home/git
cd /home/git/
chmod 777 -R . # yeah I know this is evil, but I want to make it work first...

Создано репо:

repoName=test-repo
cd /home/git/
mkdir $repoName.git
cd $repoName.git
git --bare init
git update-server-info
chmod 777 -R .

Установлен gitweb:

yum install gitweb
cp -R /usr/share/gitweb/* /home/git/

(для меня gitweb.cgi был в usr/share/gitweb после установки)

Изменена конфигурация gitweb: /etc/gitweb.conf: our $ projectroot = "/home /git";

И наконец добавил эту конфигурацию в Apache:

<VirtualHost *:80>
     ServerAlias git.domian.com

     DocumentRoot  /home/git
     SetEnv        GITWEB_CONFIG   /etc/gitweb.conf

     <Directory /home/git>
          Order Allow,Deny
          Allow from all

          Options +ExecCGI
          AddHandler cgi-script .cgi
          DirectoryIndex gitweb.cgi
     </Directory>
</VirtualHost>

Итак, GitWeb работает. Клон работает (URL-адрес http://git.domain.com/test-repo.git). Но толчок дает:

git.exe push --progress  "origin" master:master

fatal: repository 'http://git.domain.com/test-repo.git/' not found


git did not exit cleanly (exit code 128) (62 ms @ 2015-02-09 17:31:29)

Я попытался добавить конфигурацию для Smart HTTP в конфигурации VirtualHost следующим образом:

SetEnv GIT_PROJECT_ROOT /home/git
SetEnv GIT_HTTP_EXPORT_ALL

ScriptAliasMatch \
    "(?x)^/(.*/(HEAD | \
                    info/refs | \
                    objects/(info/[^/]+ | \
                             [0-9a-f]{2}/[0-9a-f]{38} | \
                             pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
                    git-(upload|receive)-pack))$" \
    /usr/libexec/git-core/git-http-backend/$1

Но это только изменило сообщение на:

fatal: unable to access 'http://git.domain.com/test-repo.git/': The requested URL returned error: 403

Я еще не добавил аутентификацию, так в чем проблема?

Пожалуйста помоги. Мне нужно отказаться от мерзавца и вернуться к SVN, если это не сработает ...

1 ответ1

0

ХОРОШО. Это было так просто, как добавление аутентификации. Поскольку я хотел использовать аутентификацию LDAP (на основе Active Directory), я использовал следующее ... Обратите внимание, что ваши пути и пароли могут отличаться ;-)

/etc/gitweb.conf

our $projectroot = "/home/git";

/etc/httpd/conf.vhosts/httpd-vhosts.conf

<VirtualHost *:80>
    Include conf.vhosts/git.conf
</VirtualHost>
# if you want HTTPS
<VirtualHost *:443>
    Include conf.vhosts/git.conf

    SSLEngine on
    SSLCertificateFile "/var/www/certs/subdomains-cert.pem"
    SSLCertificateKeyFile "/var/www/certs/subdomains-key.pem"
</VirtualHost>

/etc/httpd/conf.vhosts/git.conf

#
# Common
#
ServerAlias git.mol.com.pl

DocumentRoot  /home/git
SetEnv        GITWEB_CONFIG   /etc/gitweb.conf

<Directory /home/git>
    Order Allow,Deny
    Allow from all

    Options +ExecCGI
    AddHandler cgi-script .cgi
    DirectoryIndex gitweb.cgi
</Directory>

SetEnv GIT_PROJECT_ROOT /home/git
SetEnv GIT_HTTP_EXPORT_ALL

AliasMatch ^/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$          /home/git/$1
AliasMatch ^/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$ /home/git/$1
ScriptAliasMatch \
        "(?x)^/(.*/(HEAD | \
                        info/refs | \
                        objects/info/[^/]+ | \
                        git-(upload|receive)-pack))$" \
        /usr/libexec/git-core/git-http-backend/$1

<Location />
    AuthType Basic
    AuthBasicProvider ldap
    AuthBasicAuthoritative on
    AuthUserFile /dev/null
    AuthLDAPURL ldap://our.domain.server.com/CN=Users,DC=our,DC=domain,DC=server,DC=com?sAMAccountName
    AuthLDAPBindDN CN=someWindowsDomainUser,CN=Users,DC=our,DC=domain,DC=server,DC=com
    AuthLDAPBindPassword someWindowsDomainUserSecretPassword

    Order Allow,Deny
    Allow from all
</Location>

#
# Test repo
#
<Location /test-repo.git>
    AuthName "Test-bare-repo"

    require valid-user
</Location>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .