使用git來管理web開發;
我們需要做的事情 :
1,在服務器建立版本倉庫;
2,在服務器建立穩定版本的站點,編寫版本倉庫的hooks;
3,在開發服務器上提交開發版本;
下面一步一步來:(注意建立新用戶,如git)
1,在服務器上建立版本管理倉庫;假定目錄為 /git/,切換到該目錄下;建立一個工程
cd /git/ mkdir project.git git init --bare
2,在服務器上建立穩定版本的站點,例如目錄是 /home/www ; 下面是重點,寫鈎子hooks:
cd /git/project.git cp hooks/post-receive.sample hooks/post-receive vim hooks/post-receive #加入下面代碼 GIT_WORK_TREE=/home/www git checkout -f
3,在開發服務器上提交開發版本;假設目錄為/git/project/
ssh-keygen ssh-copy-id -i ~/.ssh/id_rsa.pub git@yourserver git init git add * git commit -a -m "init a version" git remote add origin git@youserver:/git/project.git git push origin master
這個時候,查看一下 /home/www下,文件應該已經更新了...
華麗的分隔線
這種方法在生產服務器上也建立了版本管理,這樣會消耗服務器資源,還可以帶來源代碼泄露(例如某個開發版本將密碼都寫了進去,后果不堪設想)等其他安全隱患,所以在后面的開發中,我們采用了Git+Rsync的架構,內網開發服務器架設GitLab進行源代碼管理 ,同時搭建rsync客戶端進行代碼同步;生產服務器只使用Rsync服務端監聽端口接收同步請求。
GitLab的搭建可以參考:
https://github.com/gitlabhq/gitlab-recipes/tree/master/install/centos
http://www.pickysysadmin.ca/2013/03/25/how-to-install-gitlab-5-0-on-centos-6/
相對於Gitlab,我更喜歡使用Gitolite+Gitweb來進行代碼審閱,因為他們的安裝更簡單一點,而且,Gitweb的代碼很簡煉,我們可以很方便地進行功能的添加,例如我們之前添加的增量更新的功能。
Rsync的搭建可以參考這篇文章。
寫一個shell腳本或者使用php進行網頁命令調用來同步代碼是一個很不錯的想法,我們用的是php執行shell命令來進行同步的。
另外,如果想在多台生產服務器上進行代碼同步,可以使用rsync+inotify進行實時同步,這樣,在內網開發服務器向一台主服務器同步代碼后,inotify監控腳本可以同步其他生產服務器,同步。