架设通过 SSH 和 HTTP 协议的 Git 服务器

本文描述如何架设通过 SSH 协议和 HTTP 协议的 Git 服务器,以 Ubuntu 操作系统为例。通过 SSH 协议方式 push,而 HTTP 方式则提供给匿名用户 clone。

这个方案可以通过用户和文件系统的权限很方便的控制项目的访问权限,开源还是闭源。

软件需求
1. git-core
2. openssh-server
3. apache2

服务器端
1. 安装 git-core

sudo apt-get install git-core

2. 创建 git 用户和组
可以使用密码认证,也可以使用证书。

sudo groupadd git
sudo useradd -d /home/git -m -g git git
sudo passwd git

3. 创建虚拟主机
这个不详细说了,没有什么特别设置。这里假设根目录是 /home/git/

4. 创建一个新的版本库

mkdir /home/git/test.git
cd /home/git/test.git
git --bare init
chmod +x hooks/post-update

客户机端
1. push 到远程版本库

mkdir test
cd test
git init
echo "test" > README
git add .
git commit -m 'Init.'
git remote add origin git@server_addr:test.git
git push origin master

2. clone 远程版本库

git clone http://server_addr/test.git

Over!

Leave a Reply

Your email address will not be published. Required fields are marked *