如何设置Gitweb

我已经在服务器上设置Git,使用gitosis来控制提交访问。 我想configuration我的Git系统,这样我们防火墙内的任何人都可以读取Git仓库,我也想设置Gitweb。

我在各种博客上发现了几个Gitweb设置教程,但是它们在各种细节上有所不同,其中一些已经过时。 我想这个问题有一个最新的答案。

我的具体设置是红帽企业Linux。 我已经成功安装了Git,gitosis以及Gitweb和Apache包。 但是,我还没有想出如何configurationApache实际授予访问Gitweb。

如何设置我的服务器以允许只读访问Git,并允许Gitweb工作?

在安装gitweb(在RHEL $ yum install gitweb )之后,它应该创build一个目录var/www/git并把一个文件放在etc/httpd/conf.d/git.conf 。 如果这些不存在,请创build它们。 把你所有的git git.conf放在var/www/git ,编辑git.conf让它执行cgi脚本并重写gitweb的URL。 这是我有:

 <Directory /var/www/git> SetEnv GITWEB_CONFIG /etc/gitweb.conf DirectoryIndex gitweb.cgi Allow from all AllowOverride all Order allow,deny Options +ExecCGI AddHandler cgi-script .cgi <Files gitweb.cgi> SetHandler cgi-script </Files> RewriteEngine on RewriteRule ^[a-zA-Z0-9_-]+.git/?(\?.)?$ /gitweb.cgi%{REQUESTURI} [L,PT] </Directory> 

/etc/gitweb.conf中还有一个gitweb.conf文件,它指向了css,favicon和标识。 我很肯定,如果你把你的项目放在/ var / www / git中,那么这些工作将会起作用,但是如果你改变这个目录,你可能需要把它放在gitweb.conf中。

在Ubuntu 8.04上testing出来:

 sudo apt-get install apache2 git-core gitweb sudo a2enmod rewrite 

假设你的git项目在/pub/git ,编辑这个文件: /etc/gitweb.conf

 $projectroot = "/pub/git"; $git_temp = "/tmp"; #$home_link = $my_uri || "/"; $home_text = "indextext.html"; $projects_list = $projectroot; $stylesheet = "/gitweb.css"; $logo = "/git-logo.png"; $favicon = "/git-favicon.png"; # enable human readable URLs $feature{'pathinfo'}{'default'} = [1]; 

现在,在Apacheconfiguration目录中设置一个新的虚拟主机。 编辑一个名为: /etc/apache2/sites-available/gitweb的新文件

 <VirtualHost *> ServerName git.mydomain.com ServerAlias git DocumentRoot /pub/git SetEnv GITWEB_CONFIG /etc/gitweb.conf RewriteEngine on RewriteRule ^/$ /gitweb [PT] RewriteRule ^/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$ /gitweb%{REQUEST_URI} [L,PT] # Aliases ScriptAlias /gitweb /usr/lib/cgi-bin/gitweb.cgi Alias /gitweb.css /usr/share/gitweb/gitweb.css Alias /git-logo.png /usr/share/gitweb/git-logo.png Alias /git-favicon.png /usr/share/gitweb/git-favicon.png # Logfiles ErrorLog /var/log/apache2/gitweb.error.log CustomLog /var/log/apache2/gitweb.access.log combined </VirtualHost> 

启用新网站:

 sudo a2ensite gitweb 

重新启动Apache:

 sudo invoke-rc.d apache2 restart