我刚刚在我的生产服务器上安装了
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 — gitster
—在commit 93ded33,2018年8月20日合并)
git-instaweb
: fix apache2 config with apache >= 2.4The generated apache2 config fails with apache >= 2.4. The error log
states:06006
Fix this by loading the
unixd
module.
This works with olderhttpd
as well, so noIfVersion
conditional is needed. (Tested with httpd-2.2.15 on CentOS-6.)