superszycf
superszycf
superszycf
1 post
Don't wanna be here? Send us removal request.
superszycf · 6 years ago
Text
Ubuntu下搭建git服务器
自己做一个git服务端 1、安装相关软件: ssh以及python等
1
sudo apt-get install openssh-server openssh-client git-core python-setuptools
2、获取并安装gitosis
1234
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
1
ssh-keygen -t rsa
4、初始化全局设置,设置每次git提交时作者的名字和邮箱
12
git config --global user.name
"HappyPeng"
git config --global user.email
5、git服务器管理用户,在服务器上添加用户git,用来创建git仓库
12
sudo useradd -m git
sudo passwd git
6、创建git仓库存储目录
1
sudo mkdir /home/git/repositories
7、设置git仓库权限
12
sudo chown git:git /home/git/repositories
sudo chmod 755 /home/git/repositories
8、配置gitosis
123
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用户
123456
su - git
cd /home/git/repositories
mkdir gamedev.git
cd  gamedev.git
git init --bare
exit
10、添加公钥,各个用户按照前面提到的办法生成各自的ssh公钥文件后,服务器管理员把所有人的ssh公钥文件都拿来,拷贝到keydir目录下(用户的区分以.pub文件命名为用户如:[email protected],user1.pub)。
123
cd ~
clone git@:gitosis-admin.git
cd ~/gitosis-admin/
修改gitosis.conf文件
123456789101112
[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服务器:
123
git add .
git commit -a -m
"add users to projects"
git push origin master
现在服务器就搭建完了,并且有一个空的项目gamedev在服务器上。在 gitosis.conf文件中developers中所有用户都可以对gamedev.git进行读写。 11、创建测试 下面以user1为例,进行创建。 user1:
12345678
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:
1234
cd ~
mkdir proj
cd proj/
git clone [email protected]:gitosis-admin.git
0 notes