svn+post-commit實現自動部署(轉)

1、安裝
#yum install subversion
檢查是否安裝了svn
#subversion –v
建立svn庫和對應的目錄
#mkdir /svn/www.test.com
#svnadmin create /svn/www.test.com
2、配置
建立登陸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的端口
3、鏈接svn
一、linux主機鏈接svn
#svn co svn://192.168.1.180
輸入用戶名和密碼後就能夠將svn上的數據下載到本地。
二、windows主機鏈接svn
利用TortoiseSVN工具進行鏈接。
4、利用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
 
報錯註解,及解決辦法:
一、
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字段,更改環境變量中的編碼。
二、
Skipped '/usr/local/apache/htdocs/192.168.1.180'
這個時候使用命令svn update命令會提示
Skipped ‘.’
緣由:192.168.1.180是一個空目錄或這個目錄不存在
解決辦法:先進行手工的checkout,以後再post-commit中將目錄指定到checkout的目錄,就解決了。
 
 
轉自:http://blog.51cto.com/songknight/742725
相關文章
相關標籤/搜索