由于 DynDNS 不再免费解析子域名,我不得不在 apache2 的子目录中使用 gitweb。Pro Git 等常见的工具建议使用类似
<VirtualHost *:80>
ServerName gitserver
DocumentRoot /srv/gitosis/repositories/
<Directory /srv/gitosis/repositories/>
Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
AllowOverride All
order allow,deny
Allow from all
AddHandler cgi-script cgi
DirectoryIndex gitweb.cgi
</Directory>
</VirtualHost>
我尝试了使用具有不同属性组合的位置和目录标签的各种变化,但没有取得任何显著的成功。
我的第一个想法接近以下内容
Alias /gitweb /srv/gitosis/repositories
<Location /gitweb>
AuthType Basic
AuthName "gitweb Repository view"
AuthUserFile /etc/apache2/gitweb.passwd
Require valid-user
SSLRequireSSL
SetEnv GITWEB_CONFIG /etc/gitweb.conf
AddHandler cgi-script cgi
DirectoryIndex /usr/lib/cgi-bin/gitweb.cgi
</Location>
Apache 属于 gitosis 组,该组可以读取和执行该存储库。
那么,在 Ubuntu 10 上运行 websvn 的预期方法是什么?
编辑:在 repo 中以用户 gitosis 身份使用“git instaweb --httpd=apache2”可以正常工作
答案1
最后我找到了一些解决方案,或者至少是一种解决方法,因为它似乎不太优雅。我使用现有的 ssl vhost 和以下配置:
Alias /gitweb /usr/lib/cgi-bin
Alias /gitweb.css /usr/share/gitweb/gitweb.css
Alias /git-favicon.png /usr/share/gitweb/git-favicon.png
Alias /git-logo.png /usr/share/gitweb/git-logo.png
<Directory /usr/lib/cgi-bin>
AuthType Basic
AuthName "Gitweb Repository View"
AuthUserFile /etc/apache2/gitweb.passwd
Require valid-user
SSLRequireSSL
Options +Indexes +ExecCGI +FollowSymLinks +MultiViews
AddHandler cgi-script .cgi
DirectoryIndex gitweb.cgi
Order allow,deny
Allow from all
</Directory>
我不喜欢这些别名,但至少它在不触及 cgi 的情况下也能工作。