Ubuntu下搭建git服务器

自己做一个git服务端
1、安装相关软件: ssh以及python等

sudo apt-get install openssh-server openssh-client git-core python-setuptools

2、获取并安装gitosis

cd /tmp
git clone https://github.com/res0nat0r/gitosis.git
cd gitosis
sudo python setup.py install

3、创建个人公钥和私钥,默认情况下,公钥和私钥会保存在~/.ssh目录下。产生文件 id_rsa id_rsa.pub known_hosts

ssh-keygen -t rsa

4、初始化全局设置,设置每次git提交时作者的名字和邮箱

git config --global user.name "HappyPeng" 
git config --global user.email "wangpeng2015@gmail.com"

5、git服务器管理用户,在服务器上添加用户git,用来创建git仓库

sudo useradd -m git
sudo passwd git

6、创建git仓库存储目录

sudo mkdir /home/git/repositories

7、设置git仓库权限

sudo chown git:git /home/git/repositories 
sudo chmod 755 /home/git/repositories

8、配置gitosis

scp ~/.ssh/id_rsa.pub /tmp
sudo -H -u git gitosis-init < /tmp/id_rsa.pub
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

9、在服务器上新建一个测试项目仓库。切换到git用户

su - git
cd /home/git/repositories 
mkdir gamedev.git
cd  gamedev.git
git init --bare
exit

10、添加公钥,各个用户按照前面提到的办法生成各自的ssh公钥文件后,服务器管理员把所有人的ssh公钥文件都拿来,拷贝到keydir目录下(用户的区分以.pub文件命名为用户如:root@ubuntu.pub,user1.pub)。

cd ~
clone git@:gitosis-admin.git
cd ~/gitosis-admin/

修改gitosis.conf文件

[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = root@ubuntu

[group developers]
writable = gamedev
members = root@ubuntu user1

[group test] 
readonly = gamedev
members = user2

这个配置文件表达了如下含义:gitosis-admin组成员有 root@ubuntu ,该组对gitosis-admin仓库有读写权限; developers组有 root@ubuntu ,user1两个成员,该组对gamedev仓库有读写权限; test组有user2一个成员,对gamedev仓库有只读权限。当然目前这些配置文件的修改只是在你的本地,你必须推送到gitserver上才能真正生效。加入新文件、提交并push到git服务器:

git add .
git commit -a -m "add users to projects"
git push origin master

现在服务器就搭建完了,并且有一个空的项目gamedev在服务器上。在 gitosis.conf文件中developers中所有用户都可以对gamedev.git进行读写。
11、创建测试
下面以user1为例,进行创建。
user1:

mkdir gamedev-origin
cd gamedev-origin/
git init
echo "" > hello
git add .
git commit -a -m “initial version”
git remote add origin git@<</span>hostname>:gamedev.git 
git push origin master

12、读写测试
以root@ubuntu为列,进行clone
root@ubuntu:

cd ~
mkdir proj
cd proj/
git clone git@happypeng.com:gitosis-admin.git

发表评论

电子邮件地址不会被公开。 必填项已用*标注