2012年12月3日 星期一

即時同步git repository資料到網頁資料夾(DocumentRoot)

為了能夠開發比較方便,在我將程式碼push到git server時候,能夠同時將我的程式碼,同步到Apache預設網頁讀取的資料夾(DocumentRoot:/var/www),這樣就不用一直需要到伺服器的網頁資料夾一直使用git pull origin master去讓程式碼保持在最新的版本,這樣不僅浪費自己的時間,也降低自己在開發上的效率。

PS:這個辦法在權限上沒有考慮較詳盡,在正式要上線的伺服器,建議不要這樣做,避免伺服器安全出現漏洞


首先在git server自己的repository(這裡以kejyun.git為例)中,開啟config的檔案,將設定值改成下面的範例,主要是bare設定為falseworktree設定為你要同步的資料夾(/var/www),denycurrentbranch設為ignore



如下圖





再到repository的hooks資料夾加入post-receive檔案(kejyun.git/hooks/post-receive,若沒有此檔案則自行建立),檔案內容輸入git checkout -f後存檔



因為在push上去後,git會執行hooks裡面的檔案,看有沒有什麼需要額外處理的,所以需要執行檔案的權限,所以需要讓他有執行檔案的權限,所以輸入chmod +x post-receice變更其權限



我們要統一控管git server可以寫入變更檔案權限,所以我們必需要建立一個gitserver的群組(以下必須使用管理者權限sudo -s才可以執行),所以輸入groupadd gitserver建立一個git專用的群組,並開啟/etc/group的檔案,可以看到剛剛加入的gitserver群組,我們將我們要加入的帳號加到gitserver群組後方(相關群組控管方式請參考鳥哥:第十四章、Linux 帳號管理與 ACL 權限設定



接下來我們到網頁資料夾上一層(/var),輸入chown -R root:gitserver www,設定的網頁資料夾(/var/www)內所有檔案,將擁有者群組變更為gitserver



這樣我們就可以開始push檔案到git server看看,看看他會不會自動同步更新檔案至我們設定的網頁資料夾(/var/www)





參考連結

沒有留言:

張貼留言

ADS