ubuntu14.04搭建git伺服器、遠端倉庫、自動部署
阿新 • • 發佈:2019-02-20
搭建的過程中細節太多,也走了許多彎路,就不說了,主要談一談幾個注意點:
1、一定要學會看錯誤提示
從錯誤提示上可以看到很多東西,比如提示你哪兒哪兒許可權不夠,你就應該知道去改許可權
比較有用的兩個命令:
chgrp -R [組名] [目錄]
chmod -R g+rws [目錄]
2、幾個地方的git倉庫
首先是/home/git/下的xx.git庫,這就是我們的主角——git中心伺服器,這是一個裸庫,即用git init --bare --shared 建立的,只負責維護修改歷史,不負責建立工作路徑,所以無論怎麼提交(push),該目錄下也只會有xx.git,而沒有其餘東西,不要感到奇怪。
第二個地方是/var/www/html/xx下面的git庫,這是用於部署程式碼的git庫,這裡面的內容會直接受apache伺服器處理,注意這不是裸庫,因為我們需要給apache提供真實存在的檔案。
第三個地方是/home/jpz/下的xx.git庫,嚴格意義上來講這並不是一個獨立的git庫,而是通過軟連線的方式(ln -s)連結到我們第一個提到的裸庫上,這樣我們就可以通過ssh連線使用者jpz的方式從網路上進行各種git操作。
第四~n個地方,就是我們剛才提到的可以通過ssh連線jpz使用者從任何一個角落clone git庫,然後進行git init等後續操作。
3、自動部署
編寫hooks下面的post-receive,注意用env -i來忽略環境變數,因為git pull使用的預設路徑的不是PWD
下面貼出我的部分嘗試經過,不想整理了:
ssh x.x.x.x -l root apt-get install git-core groupadd developers cd /home/ mkdir git useradd git -d /home/git vi /etc/group developers:x:1000:git cd /home/git mkdir test cd /test git init cd .. chgrp developers test chmod g+rws test cd /test chgrp developers .git chmod g+rws .git useradd jpz -m -s /bin/bash passwd jpz cd /var/www/html ln -s /home/git/test test git init --bare --shared .git vi /etc/group developers:x:1000:git,jpz su jpz ln -s /home/git/test gitrep exit git clone [email protected]:~/gitrep/.git git pull vi test_git.html git push On branch master Your branch is based on 'origin/master', but the upstream is gone. (use "git branch --unset-upstream" to fixup) git branch --unset-upstream git push origin master remote: error: insufficient permission for adding an object to repository database ./objects ssh x.x.x.x -l root cd /home/git/test/.git/objects chmod g+rws * exit git push origin master git push -u origin master --delete all cd /home/git mkdir web_foo.git chgrp developers web_foo.git/ chmod g+rws web_foo.git/ git clone /home/git/web_foo.git cd web_foo git init git pull vi test_git.html git add test_git.html git commit -am "test git" git push -u origin master vi test_git.html git commit -am "add sth" git push