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

參考資料

相關文章
相關標籤/搜索