1. 程式人生 > >svn+post-commit實現自動部署

svn+post-commit實現自動部署

一、安裝 #yum install subversion 檢查是否安裝了svn #subversion –v 建立svn庫和對應的目錄 #mkdir /svn/www.test.com #svnadmin create /svn/www.test.com 二、配置 建立登入svn的使用者和密碼 #vim /svn/www.test.com/conf/passwd [users] 使用者名稱=密碼 設定svn使用者許可權 #vim /svn/www.test.com/conf/authz [/] 使用者名稱=rw 設定svn主配置檔案 #vim /svn/www.test.com/conf/ anon-access=none #使非授權使用者無法訪問 auth-access=write #使授權使用者有寫許可權 password-db=password authz-db=authz #啟用訪問控制檔案 realm=/svn/www.test.com #認證名稱空間,subversion會在認證提示裡顯示,並且作為憑證快取的關鍵字。 啟用svn:#svnserve –d –r /svn/www.test.com 注可以用—listen-port 引數修改svn的埠 三、連線svn 1、linux主機連線svn #svn co svn://192.168.1.180 輸入使用者名稱和密碼後就可以將svn上的資料下載到本地。 2、windows主機連線svn 利用TortoiseSVN工具進行連線。 四、利用svn的post-commit將svn伺服器的檔案同步更新到固定的目錄 #cd /svn/www.test.com/hooks #cp post-commit.tmpl post-commit #chmod a+x post-commit 編輯post-commit鉤子指令碼 #vim post-commit export LANG=zh_CN.UTF-8 #設定環境變數,如果沒有設定可能會出現update報錯 SVN=/usr/bin/svn WEB=/usr/local/apache/htdocs/192.168.1.180 ${SVN} update ${WEB} --username rsync --password rsync 注:WEB中指定的目錄不能為空目錄,需要先checkout 報錯註解,及解決辦法: 1、 svn: Error converting entry in directory '/usr/local/apache/htdocs/192.168.1.180' to UTF-8 svn: Can't convert string from native encoding to 'UTF-8': svn: ?\229?\164?\141?\228?\187?\182 ?\229?\164?\141?\228?\187?\182 ?\229?\164?\141?\228?\187?\182 ?\229?\164?\141?\228?\187?\182 rsync-3.0.9.tar.gz 原因:svn伺服器上的檔案存在編碼為UTF-8的檔案,如果伺服器不支援UTF-8編碼就會報這個錯誤。 解決辦法:在post-commit鉤子指令碼中,新增export LANG=zh_CN.UTF-8欄位,更改環境變數中的編碼。 2、 Skipped '/usr/local/apache/htdocs/192.168.1.180' 這個時候使用命令svn update命令會提示 Skipped ‘.’ 原因:192.168.1.180是一個空目錄或這個目錄不存在 解決辦法:先進行手工的checkout,之後再post-commit中將目錄指定到checkout的目錄,就解決了。