我最近开始将我编写的代码存储在家里的本地服务器上。
我希望在家里启动一个 gitweb 实例,这样我就可以看到提交并与其他队友一起跟踪进度。
我尝试过在线服务器教程,但没有成功。我希望 gitweb 可以通过example.com/git
我希望我的代码放在/code/git
我将不胜感激任何帮助!请尽量说清楚,因为我显然不知道自己在做什么。我已经阅读了大量文章。
谢谢,麻烦您了。
答案1
这gitweb 部分:
你必须使用以下命令安装 gitweb 包sudo apt-get install gitweb
然后你必须编辑 apache gitweb 配置文件
$EDITOR /etc/apache2/conf.d/gitweb
Alias /gitweb /usr/share/gitweb
将行改为
Alias /git /usr/share/gitweb
打开/etc/gitweb.conf
文件:
你必须将线路
$projectroot ".."
改为
$projectroot "/code/git"
并将包含以下内容的任何其他行更改/gitweb
为/git
例如
$stylesheet = "/gitweb/gitweb.css";
到
$stylesheet = "/git/gitweb.css";
然后重新加载你的 apache web 服务器sudo /etc/init.d/apache2 horse-reload
这GIT 部分本身:
我强烈推荐使用 gitosis(http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way)
记住如果你使用 gitosis线路$projectroot
必须/etc/gitweb.conf
是
$projectroot = "/home/git/repositories/";
你可以在以下位置找到有关如何设置 gitosis 的详细信息 http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way
对于这个答案来说,描述完整的 gitosis 设置太长了。
如果你需要更多关于 gitosis 的帮助,请给我留言
要修复 apache 权限问题,可能需要执行以下操作:
adduser www-data git
chgrp -R git /home/git/repositories
答案2
这是我在 Ubuntu 14.04 上进行的设置gitweb
- 使用 SSL 和系统用户身份验证pwauth
。默认情况下,gitweb
使用/etc/gitweb.conf
,它期望git
项目位于/var/lib/git
。
因此我尝试将我的git
repos 放在这里,因此在这个例子中我们不需要改变/etc/gitweb.conf
- 我的/var/lib/git
样子如下:
$ ls -la /var/lib/git/
total 12
drwxrwxrwx 3 root root 4096 Apr 9 16:01 .
drwxr-xr-x 75 root root 4096 Apr 7 17:31 ..
lrwxrwxrwx 1 myuser myuser 28 Apr 9 16:01 gitweb.cgi -> /usr/share/gitweb/gitweb.cgi
drwxrwsr-x 7 myuser www-data 4096 Apr 10 17:50 testrepo.git
因此,除了您的存储库之外,您还需要/usr/share/gitweb/gitweb.cgi
在此目录中建立符号链接......
然后,您可以使用以下内容/etc/apache2/sites-available/gitw-ssl.conf
:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
ServerName localhost
HeaderName HEADER
DocumentRoot /var/www/html
LogLevel info
ErrorLog ${APACHE_LOG_DIR}/error-gw.log
CustomLog ${APACHE_LOG_DIR}/access-gw.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/my.crt
SSLCertificateKeyFile /etc/apache2/ssl/my.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
<IfModule mod_authnz_external.c>
# old style:
AddExternalAuth pwauth /usr/sbin/pwauth
SetExternalAuthMethod pwauth pipe
# new style:
#DefineExternalAuth pwauth pipe /usr/sbin/pwauth
</IfModule>
# as more specific, /gitweb/static should go first
Alias /gitweb/static /usr/share/gitweb/static
Alias /gitweb /var/lib/git
# gitweb.cgi alias is no dice - symlink is needed:
Alias gitweb.cgi /usr/share/gitweb/gitweb.cgi
<Directory /var/lib/git>
Options +FollowSymlinks +ExecCGI
SSLRequireSSL
AuthType basic
AuthName "Private git repository"
AuthBasicProvider external
AuthExternal pwauth
Require valid-user
AddHandler cgi-script .cgi
DirectoryIndex gitweb.cgi
</Directory>
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
<Directory "/usr/lib/git-core/">
SetEnv GIT_PROJECT_ROOT /var/lib/git
SetEnv GIT_HTTP_EXPORT_ALL
Options +ExecCGI
SSLRequireSSL
AuthType basic
AuthName "Private git repository"
AuthBasicProvider external
AuthExternal pwauth
Require valid-user
</Directory>
</VirtualHost>
</IfModule>
最后你可以这样做:
# not sure if also `fcgid auth_digest` are needed:
sudo a2enmod ssl cgi alias env rewrite
sudo a2ensite gitw-ssl.conf
# if not `reload`, use `restart`:
sudo service apache2 reload
此后,应该可以在(例如)gitweb
上使用;并且您应该能够使用以下命令进行克隆(如果是自签名 SSL 证书):https://localhost/gitweb/
https://localhost/gitweb/?p=testrepo.git;a=summary
GIT_SSL_NO_VERIFY=1 git clone https://myuser@localhost/git/testrepo.git