装配配置Git服务器
安装配置Git服务器
安装配置Git服务器
Git服务器主要的功能有:
- 提供多协议访问,如http(s), ssh, git(只读)
- 可扩展,可以容纳大量仓库
- 方便仓库管理(新增,权限管理)
- 提供web界面,方便浏览代码及历史信息
方案使用gitolite加gitlist。
gitolite是Perl编写的管理工具,它使用ssh公钥验证的扩展来实现使用一个操作系统用户对应多个开发者,从而避免了为每个开发者在Git服务器上创建账号。此外,它可以控制哪些开发者对某些仓库或分支进行读或写的权限。管理开发者和仓库时,gitolite本身用一个特殊的git仓库(gitolite-admin)来增加、删除和修改用户和仓库。增加用户时只要把<user>.pub的公钥文件加入到keydir即可。<user>对于开发者在Git中的ID。安装配置gitolite(V3)的大致步骤有:
- 准备管理员公钥文件,如果没有,就用ssh-keygen生成。创建运行gitolite的用户,假设为git。该用户不需要终端登陆的权限,安装配置完成后应该把它的shell设置成/sbin/nologin。在git的home目录里创建bin目录(第三步依赖于该目录)
- 确保git已经安装
- 用git下载gitolite的代码,并执行gitolite/install -ln
git clone git://github.com/sitaramc/gitolite
- 导入gitolite管理员的公钥文件
gitolite setup -pk <admin_user>.pub
-
如果要让用户能够同web界面查看代码仓库,你需要修改gitolite的umask为0027,并把web服务器用户加入到git组。这样使得gitolite创建的新仓库可以被gitweb, gitlist等web服务访问。
具体方法是编辑~git/.gitolite.rc文件中的UMASK选项,把它从默认的0077改成0027,然后把web服务器的用户加入到git组中去pw usermod www -G git # FreeBSD usermod www -G git # Linux
-
在远程机器上验证是否可以以管理员身份访问gitolite
ssh git@git_server info
-
复制gitolite-admin仓库
git clone git@git_server:gitolite-admin
在keydir中增加用户,在conf/gitolite.conf中增加仓库,并授权给相应的用户
gitlist是PHP编写的查看Git仓库的工具。它提供和Github类似的界面风格。gitolite-admin是特殊的仓库不应该暴露在web上,隐藏该仓库可以设置gitlist的config.ini如下:
[git] client = '/usr/local/bin/git' default_branch = 'master' repositories[] = '/home/git/repositories/' hidden[] = '/home/git/repositories/gitolite-admin'