git 服務器搭建,在自己服務器上搭建私有倉庫


創建一個簡單的私人Git版本控制服務器,首先得有個服務器(屁話)。這種方式適合人比較少的情況,管理不需要很復雜,只要增加幾個賬號就能搞定。

如下面的情況,有一個服務器,兩個客戶端。

服務器:Debian7.5 (192.168.10.14)  戶:git (git-shell)  庫:sample.git  址:git@192.168.10.14:/home/git/sample.git 客戶端:Mac mymac.pubmac git公鑰) win7 mywin.pubwin7 git公鑰)

簡單步驟:

  • 1、安裝git服務,並創建git賬號
  • 2、創建示例倉庫sample
  • 3、導入客戶端公鑰
  • 4、客戶端連接並提交內容
  • 5、修改Git權限,只使用git-shell命令
    -- OK --

一、安裝git

直接通過apt-get安裝git。使用這個方式比較簡單,當然也可以使用git源代碼自己編譯最新版本。

# apt-get update # apt-get install git -y

1.1 創建git用戶

創建git賬戶並登錄,直接指定用戶目錄到/home/git

# useradd git -d /home/git -m -s /bin/bash # su git

添加用戶 user add
-d:指定用戶目錄
-m:如果目錄不存在則創建
-s:可以指定用戶使用的命令

二、創建sample庫

創建庫很簡單,注意使用--bare參數。作為代碼倉庫服務器並不會在上面修改東西,所以只要有相關提交日子就可以。

$ cd ~ $ git init --bare sample.git

三、設置SSH Key

收集客戶端公鑰,復制到服務器上。 客戶端當前賬號RSADSA的數字簽名文件id_rsa.pub.ssh用戶目錄中。通常情況下windows在 %userprofile%\.ssh 目錄中,Mac在~/.ssh目錄中。

mac上可以直接使用下面命令復制粘貼板上,或使用ssh上傳

$ pbcopy < ~/.ssh/id_rsa.pub

win7上可以打開Git GUI界面有個幫助->show SSH Key菜單,如果沒創建過可以點擊創建SSH的簽名文件,並復制公鑰保存到服務器上。如果使用第三方的SSHKey服務,那可能實際位置會有些差異。

生成本地用戶的簽名文件,並把客戶端上公鑰導入到服務器上。如果有多個的話可以放在一個目錄中,方便導入。如果是團隊人比較多這種方式可能就不太適合了。

如把客戶端的key文件mymac.pubmywin.pub導入。

$ ssh-keygen -t rsa -b 4096 $ cat mymac.pub >> ~/.ssh/authorized_keys $ cat mywin.pub >> ~/.ssh/authorized_keys

3.1 客戶端獲取sample庫,並增加文件上傳到服務器

在Mac客戶端獲取。

$ git clone git@192.168.10.14:/home/git/sample.git Cloning into 'sample'... warning: You appear to have cloned an empty repository. Checking connectivity... done.

獲取成功OK,增加一個文件,並提交到服務器上

$ cd sample $ cat >> readme.md first file. ^c $ git add . $ git commit -m "first commit" $ git push

3.2 服務器上查看狀態

$ git log commit 8b070256af351b43a74753f0b05969fcfe9c7310 Author: moguf <moguf_notify@163.com> Date: Sun Apr 3 20:49:17 2016 +0800 first commit

3.3 在Win客戶端獲取

windows上可以直接使用gitTortoiseGit獲取。

git@192.168.10.14:/home/git/sample.git

新建一個文件並提交到服務器上。在服務器上通過git log就能看到第二提交的內容。mac客戶機上git pull能看到剛才新加的文件。

這樣Git服務器倉庫功能基本完成。

四、安全問題

為安全考慮Git賬號只允許使用git-shell。在passwd文件中找到git用戶,把/bin/bash直接修改成/usr/bin/git-shell 登錄root賬號,並修改git的用戶權限。

$ su # vim /etc/passwd

這樣git用戶只能git-shell命令不能登錄了。

使用 su git 命令就會出現下面提示,git用戶就無法登錄到shell,這樣就OK了。

# su git fatal: Interactive git shell is not enabled. hint: ~/git-shell-commands should exist and have read and execute access.

五、數據倉庫遷移

上面的情況是空倉庫,如果原來已經有在使用的倉庫,想遷移到新倉庫。

mac 下切換

先看一下remote的名字。

$ git remote origin

一般可以看到origin,這個就是原來倉庫名稱。使用git remote set_url命令更換地址,如新地址是git@192.168.10.14:/home/git/sample.git

$ git pull $ git remote set-url origin git@192.168.10.14:/home/git/sample.git $ git push
  • 獲取原來最新代碼
  • 切換到新地址
  • 提交當前庫內容

win7下切換

如果有裝‘TortoiseGit’。直接右擊當前目錄,進入Settings把Remote中地址替換掉。沒裝就用上Git自帶的,使用上面命令替換。

提示:這種方式在空倉庫下遷移比較方便,如果新地址有數據那就比較麻煩了。

六、其它相關:從源碼安裝Git

系統提供的包比較文檔,當然可能會發現有些不得不安裝最新版本才能解決。反正會有各種原有會須要升級git。

6.1 安裝依賴包

$ sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev asciidoc xmlto docbook2x

6.2 下載編譯

一般的編譯安裝方法,makemake install

$ wget https://github.com/git/git/archive/v2.9.1.tar.gz $ tar fvxz v2.9.1.tar.gz $ cd git-2.9.1 $ make prefix=/usr all doc info $ su # make prefix=/usr install install-doc install-html install-info

安裝完成后驗證一下git版本

# git --version git version 2.9.1

上面的方法是全局安裝的,如果須要更細節的控制安裝可以參考git提供的安裝幫助原始文檔

提示: 最新版本獲取在github上 https://github.com/git/git/releases

6.3 磁盤爆了!

上面的依賴包尺寸有些大。虛擬機本來就是用來測試的,分配的磁盤空間比較小。發生了磁盤空間不足問題,100%占用-_-!!有些杯具,這是意外中的意外。可以使用df -hl命令查看剩余空間。

root@sunroom:/home/abc# df -hl Filesystem Size Used Avail Use% Mounted on rootfs 2.5G 2.5G 0 100% / udev 10M 0 10M 0% /dev tmpfs 76M 224K 76M 1% /run /dev/disk/by-uuid/371b6c92-bdc9-417d-b37f-fae99e6ecce1 2.5G 2.5G 0 100% / tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 213M 0 213M 0% /run/shm /dev/sda6 5.2G 139M 4.8G 3% /home tmpfs 213M 0 213M 0% /tmp

簡單清理 刪除緩存文件

清理舊版本的軟件緩存

# apt-get autoclean

清理所有軟件緩存:

# apt-get clean

七、相關問題

提示:
可能會出現 bash: vim: command not found 。安裝個vim 或使用vi命令都可以。
apt-get install vim -y

更多相關git的問題可以直接到官網查找。有中文版本幫助,內容比較詳實。

git 官網:git-scm.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM