1. 程式人生 > >在Linux下搭建屬於你自己的git伺服器(MAC版)

在Linux下搭建屬於你自己的git伺服器(MAC版)

環境說明

  • 本地mac系統,一般都有git程式安裝(如果沒有則使用:brew install git)

  • 伺服器版本是ubuntu-14.04

直入主題

​ 使用mac終端遠端連線linux伺服器(命令:ssh [伺服器ip], 之後輸入伺服器密碼)預設都是root,密碼為了安全起見,你在輸入時是看不到的,成功登陸後就會進入控制檯,我們用命令完成所有的操作,下面就是詳細的步驟.

注:之後在本地輸入的命令都是在gitbash下完成的

1、在控制檯輸入命令sudo apt-get install git,安裝git,如果你是新安裝的ubuntu,直接安裝可能會報錯,需要先執行sudo apt-get update

2、在系統裡新增一個使用者,登入名為git,

sudo adduser git接著就會讓你輸入密碼及一些使用者資訊,一直回車就行

3、初始化git倉庫

進入git目錄,新建資料夾travel作為程式碼倉庫

cd /home/git
mkdir travel
cd travel
git init --bare travel.git

​ 其中--bare引數是為使用者建立一個裸倉庫,這個’裸‘的意思就是版本庫裡以後只會生成版本的歷史記錄資訊,而不會有專案原始檔的拷貝。不使用--bare選項時,就會生成.git目錄以及其下的版本歷史記錄檔案,這些版本歷史記錄檔案就存放在.git目錄下;而使用--bare選項時,不再生成.git目錄,而是隻生成.git目錄下面的版本歷史記錄檔案,這些版本歷史記錄檔案也不再存放在.git目錄下面,而是直接存放在版本庫的根目錄下面。

​ 使用裸倉庫最根本的原因是為了避免衝突,如果有人在伺服器上操作倉庫的master分支,那麼如果別的使用者通過遠端倉庫的方式push程式碼到master分支,會有很大的概率發生衝突,所以使用--bare引數讓使用者無法在伺服器上操作git倉庫。

4.在本地的mac系統生成ssh key

看看有沒有.ssh檔案,

如果沒有咱們手動生成一下

ssh-keygen -t rsa

或者生成一個帶有你郵箱資訊的ssh-key

ssh-keygen -t rsa -b 4096 -C "[email protected]"

之後就會讓你輸入一些ssh key的資訊,一直回車就行,之後就可以看到.ssh檔案了,裡面有兩個檔案

  • id_rsa:稱為私鑰

  • id_rsa.pub:稱為公鑰,我們需要把公鑰裡的資訊存入到伺服器的/home/git/.ssh/authorized_keys檔案中

authorized_keys是專門用來存公鑰的地方。

​ 把用scp命令將id_rsa.pub上傳到伺服器。

這裡要分為三步:

第一步:在linux服務上執行命令

cd /home/git
mkdir .ssh
chmod 777 /home/git/.ssh   這個命令是放開.ssh的讀寫許可權,否則之後的賦值操作會提示沒有許可權

第二步:在你本地執行下列命令,使用scp命令吧id_rsa.pub複製到伺服器的/home/git/.ssh這個目錄下

scp ~/.ssh/id_rsa.pub [email protected][你伺服器的外網ip地址]:/home/git/.ssh
例如 scp ~/.ssh/id_rsa.pub [email protected]205.189.99:/home/git/.ssh

第三步:在linux伺服器上將id_rsa.pub的名稱改為authorized_keys

mv id_rsa.pub authorized_ke

好了現在就完成了將本地公鑰新增到伺服器。

5、修改檔案的所有者,將/home/git目錄下的所有檔案及資料夾歸git使用者所有,並修改目錄許可權chmod 755 /home/git,在伺服器上依次鍵入下列命令

chown -R git:git /home/git
chmod 755 /home/git
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

6、修改ssh配置檔案,修改完之後重啟ssh

vim /etc/ssh/sshd_config
service ssh restart

AuthorizedKeysFile這個配置項預設是被註釋掉的,現在刪掉前邊的#就行。

7、在目錄/home/git/travel/travel.git/hooks建立post-receive 檔案,主要導向顯示檔案儲存的工作目錄

cd /home/git/travel/travel.git/hooks
vim post-receive編寫以下內容
WORK_TREE='/home/git/travel/work'
git  --work-tree="${WORK_TREE}" reset --hard

升級post-receive檔案的許可權:chmod 777 post-receive

到這裡我們的私人git伺服器就搭建好了,下面就看看能不能push和pull程式碼吧。

這裡你得找到你的git伺服器地址,根據這個教程,我們的伺服器地址應該是這個

[email protected]:/home/git/travel/travel.git

在本地gitbash下鍵入命令

git clone [email protected]205.189.99:/home/git/travel/travel.git

輸入完這個命令你就可以把伺服器上的倉庫獲取到你本地

之後使用如下命令,進行上傳程式碼,獲取程式碼。

git add 
git commit 
git push 
git pull

今天的文章就到這裡,歡迎大家留言。。。。。。。

8. 在伺服器上的/home/git/travel 目錄下檢視自己上傳的內容

注意:git所有的檔案和目錄都應該是git:git (git的使用者和使用者組)(不然會由於許可權問題上傳不上去)