在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的使用者和使用者組)(不然會由於許可權問題上傳不上去)