我正在努力用 gitweb 设置一个干净且正常工作的 git 服务器无虚拟主机。
软件
- Debian 8
- Apache 2.4
初始设置
- mod userdir 已激活
- Apache DocumentRoot 是 /home/user/public_html
- 已启用 php5-cgi 和相关 Apache 模块
- 将“用户”添加到 www-data 并添加正确的权限
目标
- 无虚拟主机
- /home/user/git 中的所有 git 仓库,
- 可从以下来源克隆/推送的存储库http://myserver/git/myrepo.git(ssh、http、git)
- Gitweb 可从http://我的服务器/git(如果不可能,http://我的服务器/gitweb)
- .htpasswd 受保护
关注的资源
- http://www.isi.edu/~gideon/gitweb.html
- http://www.tikalk.com/devops/setup-git-gitweb-git-http-backend-smart-http-ubuntu-1204/
/etc/apache2/sites-enabled/git.conf
Alias /git /home/user/git
<Directory /home/user/git>
Options All
AllowOverride All
Require all granted
Options +ExecCGI
AddHandler cgi-script .cgi
DirectoryIndex gitweb.cgi
SetEnv GITWEB_CONFIG /etc/gitweb.conf
RewriteEngine on
RewriteRule ^([^.]+\.git.*)$ /git/gitweb.cgi/$0 [L,PT]
</Directory>
ScriptAliasMatch \
"(?x)^/(.*/(HEAD | \
info/refs | \
objects/(info/[^/]+ | \
[0-9a-f]{2}/[0-9a-f]{38} | \
pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
git-(upload|receive)-pack))$" \
/usr/lib/git-core/git-http-backend/$1
SetEnv GIT_PROJECT_ROOT /home/user/git
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
/etc/apache2/conf-enabled/git.conf
<IfModule mod_alias.c>
<IfModule mod_cgi.c>
Define ENABLE_GITWEB
</IfModule>
<IfModule mod_cgid.c>
Define ENABLE_GITWEB
</IfModule>
</IfModule>
<IfDefine ENABLE_GITWEB>
Alias /git /usr/share/gitweb
<Directory /usr/share/gitweb>
Options +FollowSymLinks +ExecCGI
AddHandler cgi-script .cgi
DirectoryIndex gitweb.cgi
</Directory>
</IfDefine>
现在http://myserver/git
显示了一个存储库列表,但是http://myserver/git/repo.git/
“未找到”并且无法访问 gitweb。