如何自己搭建 git 服务器
准备
- 可以用 SSH 访问的服务器
在服务器上安装git
如果要在 Linux 上安装预编译好的 Git 二进制安装包,可以直接用系统提供的包管理工具。在 Fedora 上用 yum
安装:
|
|
在 Ubuntu 这类 Debian 体系的系统上,可以用 apt
安装:
|
|
SSH 连接
如果已经有了一个所有开发成员都可以用 SSH 访问的服务器,架设第一个服务器将变得异常简单,几乎什么都不用做。如果需要对仓库进行更复杂的访问控制,只要使用服务器操作系统的本地文件访问许可机制就行了。
如果需要团队里的每个人都对仓库有写权限,又不能给每个人在服务器上建立账户,那么提供 SSH 连接就是唯一的选择了。我们假设用来共享仓库的服务器已经安装了 SSH 服务,而且你通过它访问服务器。
有好几个办法可以让团队的每个人都有访问权。下面介绍3种:
1. 给每个人建立一个账户
直截了当但略过繁琐。反复运行 adduser 并给所有人设定临时密码可不是好玩的。
2. 在主机上建立一个 git 账户
让每个需要写权限的人发送一个 SSH 公钥,然后将其加入 git 账户的 ~/.ssh/authorized_keys
文件。这样一来,所有人都将通过 git 账户访问主机。这丝毫不会影响提交的数据 — 访问主机用的身份不会影响提交对象的提交者信息。
首先,创建一个操作系统用户 git
,并为其建立一个 .ssh
目录。
接着,我们需要为系统用户 git 的 authorized_keys 文件添加一些开发者 SSH 公钥。 假设我们已经获得了若干受信任的公钥,并将它们保存在临时文件中。将这些公钥加入系统用户 git
的 .ssh
目录下 authorized_keys
文件的末尾:
3. 让 SSH 服务器通过某个 LDAP 服务,或者其他已经设定好的集中授权机制,来进行授权
只要每个人都能获得主机的 shell 访问权,任何可用的 SSH 授权机制都能达到相同效果。
新建一个空仓库
为开发者新建一个空仓库。可以借助带 --bare
选项的 git init
命令来做到这一点,该命令在初始化仓库时不会创建工作目录:
此时,有 ssh 访问权限的开发者可以克隆此仓库,并推回各自的改动,步骤很简单:
通过这种方法,你可以快速搭建一个具有读写权限、面向多个开发者的 Git 服务器。