安装GitWeb – 如何

我刚刚在我的生产服务器上安装了
Git,并希望让
GitWeb能够使用它.当我偶然发现一个如何使用git web工作的教程时,我变得非常有兴趣让它工作……

git instaweb -d webrick –start

它完全按照教程中描述的那样工作……
http://lostechies.com/jasonmeridth/2009/09/27/git-instaweb/

然而,在阅读其他论坛之后,似乎instaweb并不是真正意义上的使用,而是我应该设置GitWeb在Apache上运行.

我对Apache很新,所以我不太熟悉我应该做的事情.我一直在http://unix-heaven.org/node/31学习本教程.但我认为我不需要全部.我认为我唯一需要做的就是将以下内容放在我的httpd.conf文件中……

<VirtualHost *:80>
    ServerAdmin <a href="mailto:admin@example.org">admin@example.org</a>
    ServerName git.example.org
    ServerAlias git-pub.example.org
    RedirectMatch ^/$/gitweb.cgi
    SetEnv GITWEB_PROJECTROOT /cvs/codeRepository/git

    Alias /gitweb.js                /srv/www/gitweb/static/gitweb.js
    Alias /gitweb.css               /srv/www/gitweb/static/gitweb.css
    Alias /git-logo.png             /srv/www/gitweb/static/git-logo.png
    Alias /git-favicon.png           /srv/www/gitweb/static/git-favicon.png

    ScriptAlias / "/srv/www/gitweb/"

    <Directory "/srv/www/gitweb/">
        AllowOverride None
        Options Indexes FollowSymLinks ExecCGI
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog "/var/log/apache2/httpd-git-pub.example.org-access.log"
    CustomLog "/var/log/apache2/httpd-git-pub.example.org-error.log" common
</VirtualHost>

where / srv / www / gitweb / contains ….

$:/srv/www/gitweb # ls -ltr
total 252
-rwx------ 1 root root 247917 Feb 27 15:02 gitweb.cgi
drwx------ 2 root root   4096 Feb 27 15:03 static

我上面指定的配置是否可行或我需要指定?如果是这样,我将访问GitWeb的URL是什么?我需要serverName,serverAlias和serverAdmin吗?

谢谢你的帮助

最佳答案 你会用的网址是

http://git.example.org

但我对你的配置不太确定. Mine is simpler,我总是推荐像http(s):// yourServer / gitweb这样的地址,而不仅仅是http(s):// yourServer /:如果你需要添加更多服务,你可以添加更多的根URL(比如/的GitWeb).

对于没有身份验证的快速http访问:

# GitWeb on 80
Listen 80
<VirtualHost *:80>

  ServerName git.example.org
  ServerAlias git-pub.example.org

  SetEnv GITWEB_PROJECTROOT /cvs/codeRepository/git
  SetEnv GIT_HTTP_BACKEND "/usr/local/apps/git/libexec/git-core/git-http-backend"

  DocumentRoot /srv/www/gitweb
  Alias /gitweb /srv/www/gitweb

  <Directory /srv/www/gitweb>

    Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
    AllowOverride All
    order allow,deny
    Allow from all

    AddHandler cgi-script cgi
    DirectoryIndex gitweb.cgi

  </Directory>

  BrowserMatch ".*MSIE.*" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0

  LogLevel Info
  ErrorLog "/var/log/apache2/gitweb_error_log"
  TransferLog "/var/log/apache2/gitweb_access_log"

</VirtualHost>

注意:在我的original config file(这是一个模板,占位符值如@ PORT_HTTP_GITWEB @)中,我没有使用GITWEB_PROJECTROOT,因为我正在调用Gitolite,它知道Git repos的位置.

我在gitweb.conf file中设置了一个变量,根据gitweb documentation,它与GITWEB_PROJECTROOT扮演的角色相同:

 $projectroot::

Absolute filesystem path which will be prepended to project path; the path to repository is $projectroot/$project.
Set to $GITWEB_PROJECTROOT during installation.
This variable has to be set correctly for gitweb to find repositories.

For example, if $projectroot is set to “/srv/git” by putting the following
in gitweb config file:

----------------------------------------------------------------------------
our $projectroot = "/srv/git";
----------------------------------------------------------------------------

then:

------------------------------------------------
http://git.example.com/gitweb.cgi?p=foo/bar.git
------------------------------------------------

and its path_info based equivalent

------------------------------------------------
http://git.example.com/gitweb.cgi/foo/bar.git
------------------------------------------------

will map to the path ‘/srv/git/foo/bar.git’ on the filesystem.

更新2018年8月,Git 2.19(2018年第三季度,五年后)

“git instaweb”已经过调整,可以在基于RedHat的发行版上使用更新的Apache.

Sebastian Kisela (skisela)(07年8月7日)和commit 1976311(2018年8月8日).
(于Junio C Hamano — gitstercommit 93ded33,2018年8月20日合并)

git-instaweb: fix apache2 config with apache >= 2.4

The generated apache2 config fails with apache >= 2.4. The error log
states:

06006

Fix this by loading the unixd module.
This works with older httpd as well, so no IfVersion conditional is needed. (Tested with httpd-2.2.15 on CentOS-6.)

点赞