Debian + Gitolite + Gitweb = 404 - 没有发现项目
问题描述:
这是一个你经常发现的话题。但是,自从2天以来,我尝试了一切,并且我正在用尽想法。希望有人能帮助我。Debian + Gitolite + Gitweb = 404 - 没有发现项目
总的来说,我做了以下内容:
- 易于得到安装gitolite的GitWeb
- 加入到回购gitolite.conf(见下文)
- 添加用户WWW的数据组gitolite
- 手动创建projects.list(见下文)
- 设置symlink/var/www/gitweb - >/usr/share/gitweb
- 设置gitweb vhost(见下文)
当我现在浏览到http://git.example.org我看到gitweb的消息“404 - 找不到项目”。日志文件中没有错误消息。
1)Gitolite目录:
drwxr-xr-x 5 gitolite gitolite 4096 Mai 6 20:03 .
drwxr-xr-x 43 root root 4096 Mai 6 18:12 ..
drwxr-x--- 8 gitolite gitolite 4096 Mai 6 18:12 .gitolite
-rw-r-xr-- 1 gitolite gitolite 4217 Mai 6 19:43 .gitolite.rc.new
-rwxr-xr-x 1 gitolite gitolite 25 Mai 6 19:59 projects.list
drwxr-xr-x 6 gitolite gitolite 4096 Mai 6 18:14 repositories
drwxr-x--- 2 gitolite gitolite 4096 Mai 6 18:14 .ssh
2)gitolite.conf
repo gitolite-admin
RW+ = admin
repo repo1
RW+ = admin
R = @all
repo repo2
RW+ = admin
R = @all
3).gitolite.rc.new(为什么在这里。新所附?使用apt-get安装gitolite安装gitolite)
# ------------------------------------------------------------------------------
# DO NOT TOUCH THIS SECTION!
# ------------------------------------------------------------------------------
$GL_ADMINDIR=$ENV{HOME} . "/.gitolite";
$GL_CONF="$GL_ADMINDIR/conf/gitolite.conf";
$GL_KEYDIR="$GL_ADMINDIR/keydir";
$GL_CONF_COMPILED="$GL_ADMINDIR/conf/gitolite.conf-compiled.pm";
# DO NOT CHANGE THE NEXT FOUR LINES UNLESS YOU REALLY KNOW WHAT YOU'RE DOING.
# These variables are set automatically by the install method you choose.
# (PACKAGE MAINTAINERS: PLEASE READ doc/packaging.mkd)
$GL_PACKAGE_CONF = "/usr/share/gitolite/conf";
$GL_PACKAGE_HOOKS = "/usr/share/gitolite/hooks";
# ------------------------------------------------------------------------------
# most often used/changed variables
# ------------------------------------------------------------------------------
$GL_WILDREPOS = 0;
$PROJECTS_LIST = $ENV{HOME} . "/projects.list";
# $WEB_INTERFACE = "gitweb";
# $GITWEB_URI_ESCAPE = 0;
$REPO_UMASK = 0022;
4)/var/lib/gitolite/projects.list
repo1.git
repo2.git
5)的/ var/lib中/ gitolite /储存库
drwxr-xr-x 7 gitolite gitolite 4096 Mai 6 18:14 repo1.git
drwxr-xr-x 7 gitolite gitolite 4096 Mai 6 18:14 repo1.git
6)的GitWeb虚拟主机:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName git.example.org
SetEnv GITWEB_CONFIG /etc/gitweb.conf
SetEnv GIT_PROJECT_ROOT /var/lib/gitolite/repositories
DocumentRoot /var/www/gitweb
<Directory /var/www/gitweb>
Options FollowSymLinks ExecCGI
AllowOverride All
order allow,deny
Allow from all
AddHandler cgi-script .cgi
DirectoryIndex index.cgi
# Pretty gitweb URLs
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.* /index.cgi/$0 [L,PT]
</Directory>
# Enable git clone over HTTP
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/lib/git-core/git-http-backend/$1
ErrorLog /var/log/apache2/git-error.log
CustomLog /var/log/apache2/git-access.log combined
</VirtualHost>
7)/etc/gitweb.conf
# path to git projects (<project>.git)
$projectroot = "/var/lib/gitolite/repositories";
@git_base_url_list = ("git://git.example.org", "http://git.example.org");
$site_name = "git.example.com";
# require export flag
$export_ok = "git-daemon-export-ok";
$strict_export = 1;
# directory to use for temp files
$git_temp = "/tmp";
# target of the home link on top of all pages
#$home_link = $my_uri || "/";
# html text to include at home page
#$home_text = "indextext.html";
# file with project list; by default, simply scan the projectroot dir.
$projects_list = "/var/lib/gitolite/projects.list";
# stylesheet to use
#@stylesheets = ("static/gitweb.css");
# javascript code for gitweb
#$javascript = "static/gitweb.js";
# logo to use
#$logo = "static/git-logo.png";
# the 'favicon'
#$favicon = "static/git-favicon.png";
# git-diff-tree(1) options to use for generated patches
#@diff_opts = ("-M");
@diff_opts =();
非常感谢您!
答
只是为了完整性 - 我的回答从2013年5月6日:-)
这一切都为gitolite V2:
我得到了它最后的工作:一是增加了 “的GitWeb守护进程” 来所有R都在gitolite.conf中,第二个添加了“SetEnv GIT_HTTP_BACKEND/usr/lib/git-core/git-http-backend”到vhost文件。不知道这两个改变是否有必要。
答
在我的情况下,它只是一个许可/home/gitolite/repositories/
目录的问题。
或者也可以用的umask设置–根据DOC默认的umask问题是0700
,为CGT文件/的GitWeb工作0027
。
我怀疑这是一个旧的gitolite v2,不用担心它。你可以从[gitolite repo](https://github.com/sitaramc/gitolite)的克隆中轻松安装最新的gitolite(v3):我使用['install_or_update_gitolite.sh'](https:// github的.com/VonC/compileEverything /斑点/主/ gitolite/install_or_update_gitolite.sh)。再加上[gitweb.conf.pl](https://github.com/VonC/compileEverything/blob/master/gitweb/gitweb.conf.pl.tpl)和[httpd.conf](https:// github.com/VonC/compileEverything/blob/master/apache/env.conf.tpl#L49-L93)应该足够了。 – VonC 2013-05-06 20:17:02
感谢您的建议,@VonC。 Hower,我得到它最后工作:首先添加“gitweb守护进程”在gitoline.conf中的所有R和第二个添加“SetEnv GIT_HTTP_BACKEND/usr/lib/git-core/git-http-backend”到虚拟主机文件。 不知道这两个更改是否有必要。 – haggis 2013-05-06 20:35:25
优秀!您可以添加该答案作为答案,甚至选择它。不过要提到的是gitolite v2。 – VonC 2013-05-06 21:15:06