我刚刚在我的生产服务器上安装了Git,并希望让GitWeb能够使用它。当我偶然发现一个如何使用gt 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>
其中/ 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吗?
感谢您的帮助
答案 0 :(得分:2)
您将使用的网址是
http://git.example.org
但我对你的配置不太确定。 Mine is simpler,我总是推荐像http(s):// yourServer / gitweb这样的地址,而不仅仅是http(s):// yourServer /:如果你需要添加更多服务,你可以添加更多的root网址(如/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在哪里回购是。
我确实在gitweb.conf
file中设置了一个变量,根据gitweb documentation,它与GITWEB_PROJECTROOT
扮演的角色相同:
$projectroot::
将预先添加到项目路径的绝对文件系统路径;存储库的路径是
$projectroot/$project
在安装过程中设置为$GITWEB_PROJECTROOT
必须正确设置此变量才能使gitweb找到存储库。例如,如果
$projectroot
设置为“/srv/git
”,请执行以下操作 在gitweb配置文件中:
----------------------------------------------------------------------------
our $projectroot = "/srv/git";
----------------------------------------------------------------------------
然后:
------------------------------------------------
http://git.example.com/gitweb.cgi?p=foo/bar.git
------------------------------------------------
及其基于path_info的等价物
------------------------------------------------
http://git.example.com/gitweb.cgi/foo/bar.git
------------------------------------------------
将映射到文件系统上的路径'/srv/git/foo/bar.git。
2018年8月更新Git 2.19(2018年第三季度,五年后)
“git instaweb
”已经过调整,可以在基于RedHat的发行版上使用更新的Apache。
commit 757b124见commit 1976311(2018年8月7日)和Sebastian Kisela (skisela
)(2018年8月8日)Junio C Hamano -- gitster
--。
(由commit 93ded33合并于{{3}},2018年8月20日)
修复apache2配置
git-instaweb
:使用apache&gt; = 2.4生成的apache2配置失败,apache&gt; = 2.4。错误日志 规定:
AH00136: Server MUST relinquish startup privileges before accepting connections. Please ensure mod_unixd or other system security module is loaded. AH00016: Configuration Failed
通过加载
unixd
模块来解决此问题 这适用于较早的httpd
,因此不需要IfVersion
条件。 (在CentOS-6上使用httpd-2.2.15进行测试。)