Ubuntu上搭建git服务器

安装git相关软件

  • 安装git
apt-get install git-core
  • 安装openssh-server和openssh-client openssh-server和openssh-client用于git经过ssh协议来在服务器与客户端之间传输文件
apt-get install openssh-server openssh-client
  • 安装python 因为安装gitosis须要用到Python的一些工具
apt-get install python-setuptools
  • 初始化服务器的git用户信息
git config --global user.name "your name"
git config --global nser.email "your eamil"
  • 获取gitosis
git clone https://github.com/res0nat0r/gitosis.git
  • 安装gitosis gitosis主要用来管理公钥和权限 进入到gitosis目录
cd gitosis/

安装html

python setup.py install

配置gitosis

  • 添加用来管理仓库的用户,用户名任意,这里使用git 加入 -m 选项表示:建立用户的时候一并建立用户的home目录
useradd -m git
  • 生成公钥和私钥
    • 鱿鱼初始化gitosis的时候须要指定公钥,因此咱们须要先生成公钥和私钥
    • 再者gitosis也是经过git仓库的形式来管理公钥和权限的,因此咱们能够把初始化gitosis时生成的仓库gitosis-admin.git clone到本地,方便来完成相应的修改配置 好比咱们在windows上面生成公钥,若是windows安装了git,点击右键,会出现以下界面

git bash here.png

打开git bash,就能够在windows上面使用linux的命令行python

输入以下命令,按照提示一步一步走下去linux

ssh-keygen -t rsa

ssh-keygen.png

就会在用户目录下生成以下文件git

  • 私钥:保存在本地
  • 公钥:须要上传到git服务器

公钥私钥生成.png

  • 把刚才生成的公钥上传到git服务器上 好比上传到/tmp目录项目下,这样能够确保gitosis-init命令对其有读取权限github

  • 初始化gitosis 先切换到git用户!!!!!!!windows

su git
gitosis-init < /tmp/id_rsa.pub

这样就会看到gitosis在git用户的home目录下,增长了两个目录以及一个gitosis配置文件的软链接bash

git home dir.png

  • gitosis是gitosis的根目录服务器

  • repositories是仓库存放目录ssh

  • 进入gitosis的管理仓库工具

cd /home/git/repositories/gitosis-admin.git

gitosis-admin.png

进入存放公钥的目录,就能够看到有一个刚才咱们初始化gitosis使用的公钥文件

keydir.png

注意!!! 上面的公钥文件名必须和gitosis.conf配置文件里面的成员名称如出一辙

  • 再来看一下gitosis.conf配置文件

gitosis-conf.png

  • group 表明一个组
  • members 表明成员,能够有多个成员,用空格进行分割
  • writable 表明对哪一个仓库名具备读写权限

上面的能够解释为:有一个组叫作gitosis-admin,里面只包含了一个成员smile@xxx,这些成员对gitosis-admin仓库具备读写权限

  • clone gitosis的管理仓库 gitosis-admin.git 到本地,方便来完成相应的修改配置 好比在windows下面,仍是打开git bash
# git clone git@192.168.220.128:gitosis-admin.git
git clone git@改成你的git服务器ip地址:gitosis-admin.git
  • 修改配置文件gitosis.conf ,新添加一个测试组
[group test]
members = smile@DESKTOP-IG7L8BJ
writable = test

更改提交并push到git@ip地址:gitosis-admin.git

git commit -a -m "添加新仓库test"
git push
  • 在本地建立一个test仓库,并push到git@ip地址:test.git
  • gitosis会在/home/git/repositories自动建立test.git这个仓库
mkdir test
cd test
git init
git remote add origin git@192.168.220.128:test.git
touch README.md
git add README 
git commit -m 'first commit'
git push origin master

多人协同开发

好比上面建立的test.git仓库(也能够称为一个项目:test) 新来了一个小伙伴,名叫:tom,须要把他加入test项目组,tom也须要有对应的公钥和私钥。 假如咱们如今是组长,gitosis的配置权限只有咱们有,tom的公钥和私钥生成有两种方法:

  • 咱们帮tom生成,而后把私钥分发给tom
  • tom本身生成公钥和私钥,而后把公钥发给咱们

也是用以下命令生成公钥和私钥

ssh-keygen -t rsa

接下来配置tom的公钥到gitosis

  • 仍是打开刚才clone到本地gitosis的管理仓库
  • 把tom的公钥放在keydir文件夹下面
  • 修改tom的公钥的名称为tom.pub(公钥文件名必须和gitosis.conf配置文件里面的成员名称如出一辙)
  • 把更改push到gitosis-admin.git
git add ./keydir/tom.pub
git commit  -m "添加tom到test仓库"
git push
  • 修改gitosis.conf,加入tom
[group test]
members = smile@DESKTOP-IG7L8BJ tom
writable = test
  • 更改提交并push到git@ip地址:gitosis-admin.git
git commit -a -m "添加新用户tom"
git push

如今tom就能够在本身的电脑上clone test项目下来了

git clone git@192.168.220.128:test.git

参考资料

相关文章
相关标签/搜索