Как упоминает OP в комментарии, вам нужно убедиться, что ваш VirtulaHost в конфигурации Apache вызывает gitweb.cgi с правильными параметрами / переменными среды:
Вот мой httpd.conf
для этой службы:
Обратите внимание, как он избежит ScriptAliasMatch
и как он установит GIT_HTTP_BACKEND
.
# GitWeb on 8443 # or any port you want
Listen 8443
<VirtualHost hostname>
ServerName hostname
ServerAlias short-hostname
SSLCertificateFile "/path/to/apache/crt"
SSLCertificateKeyFile "/path/to/apache/key"
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SetEnv GIT_HTTP_BACKEND /path/to/git/libexec/git-core/git-http-backend
DocumentRoot /path/to/gitweb
Alias /gitweb /path/to/gitweb
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /path/to/gitweb>
SSLOptions +StdEnvVars
Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
AllowOverride All
order allow,deny
Allow from all
AuthName "LDAP authentication for GitWeb repositories"
AuthType Basic
AuthBasicProvider myldap companyldap
AuthzLDAPAuthoritative On
Require valid-user
AddHandler cgi-script cgi
DirectoryIndex gitweb.cgi
RewriteEngine Off
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^[a-zA-Z0-9_\-]+\.git/?(\?.*)?$ /gitweb.cgi%{REQUEST_URI} [L,PT]
</Directory>
</VirtualHost>
Оригинальный ответ:
Вот мой gitweb.conf.pl
:
my $gl_home = $ENV{HOME} = "@H@";
# the following variables are needed by gitolite; please edit before using
# this should normally not be anything else
$ENV{GL_RC} = "$gl_home/.gitolite.rc";
# this can have different values depending on how you installed.
# if you used RPM/DEB or "root" methods it **might** be this:
$ENV{GL_BINDIR} = "/usr/local/bin";
# if you used the "non-root" method it **might** be this:
$ENV{GL_BINDIR} = "$gl_home/gitolite/bin";
# If in doubt take a look at ~/.ssh/authorized_keys; at least one of the lines
# might contain something like:
# command="/home/git/.gitolite/src/gl-auth-command
# and you should use whatever directory the gl-auth-command is in (in this
# example /home/git/.gitolite.src)
# finally the user name
$ENV{GL_USER} = $cgi->remote_user || "gitweb";
# now get gitolite stuff in...
unshift @INC, $ENV{GL_BINDIR};
require gitolite_rc; gitolite_rc -> import;
require gitolite; gitolite -> import;
# set project root etc. absolute paths
$ENV{GL_REPO_BASE_ABS} = ( $REPO_BASE =~ m(^/) ? $REPO_BASE : "$gl_home/$REPO_BASE" );
$projects_list = $projectroot = $ENV{GL_REPO_BASE_ABS};
$export_auth_hook = sub {
my $repo = shift;
# gitweb passes us the full repo path; so we strip the beginning
# and the end, to get the repo name as it is specified in gitolite conf
return unless $repo =~ s/^\Q$projectroot\E\/?(.+)\.git$/$1/;
# check for (at least) "R" permission
my ($perm, $creator) = &repo_rights($repo);
return ($perm =~ /R/);
};
Замените @ H @ вашим путем, где ваши файлы .gitolite
, .gitoliterc
, repositories
, project.list
.
Обратите внимание, как я определил $ENV{GL_BINDIR}
: Iне комментировал второе определение, потому что в моем случае я выполнял установку без полномочий root, поэтому:
$ENV{GL_BINDIR} = "$gl_home/gitolite/bin";
Убедитесь, что у вас есть gitweb_config.perl
с:
our $home_link_str = "ITSVC projects";
our $site_name = "ITSVC Gitweb";
use lib (".");
require "gitweb.conf.pl";
Это то, что сделает связь между gitweb
и дополнительным gitweb.conf.pl
, который будет называть gitolite.