個人部落格:
Linux安裝SVN實現自動同步到Web目錄
一:安裝SVN
1,檢查伺服器是否安裝SVN
svn --version
已安裝:
svn, version 1.6.11 (r934486)
compiled Aug 17 2015, 08:37:43
Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).
The following repository access (RA) modules are available:
* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
- handles 'http' scheme
- handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
- with Cyrus SASL authentication
- handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
- handles 'file' scheme
未安裝:
-bash: svn: command not found
2,未安裝使用yum安裝
yum install subversion
3,建立倉庫目錄(倉庫目錄可更改到其他目錄,看你意願)
mkdir –p /svn
4,建立專案版本庫
svnadmin create /svn/davesvn --davesvn為版本庫名稱
5,建立成功後進入版本庫目錄
cd /svn/davesvn
ls 檢視目錄下生成的檔案
conf 存放版本庫所用配置檔案的目錄
db 版本資料儲存目錄
format 儲存一個整數的檔案,此整數代表庫層次結構版本
hooks 存放版本庫勾子目錄
locks 儲存庫鎖目錄,用來跟蹤庫的訪問者
README.txt
6,接下來開始配置SVN
cd conf
ls
authz | 許可權配置檔案
passwd | 使用者名稱口令檔案
svnserve.conf | svn服務配置檔案
//配置密碼 XXX=XXX
vim password
[users]
zhan = 123456
//配置許可權 XXX=XXX
vim authz
[/]
zhan = rw
//配置svnserve.conf 取消以下注釋 注意不要有空格
vim svnserve.conf
anon-access = read #匿名使用者可讀
auth-access = write #授權使用者可寫
password-db = passwd #使用哪個檔案作為賬號檔案
authz-db = authz #使用哪個檔案作為許可權檔案
realm = /svn/davesvn #認證空間名,版本庫所在目錄
7,啟動SVN服務
svnserve -d -r /svn/davesvn
-d 表示後臺執行
-r 指定目錄是 /svn/davesvn
若提示:svnserve: Can't bind server socket: Address already in use
表示服務已經啟動,先停止服務
ps -ef | grep svn
kill -9 [程式號] 殺掉程式
二,實現自動部署專案
1,使用post-commit實現自動部署
在/svn/davesvn/hooks下建立post-commit檔案,檔案設定可執行許可權
cp post-commit.tmpl post-commit
chmod 755 post-commit
2,開啟post-commit檔案,清空post-commit內容,加入以下內容
!/bin/sh
export LANG=zh_CN.UTF-8
svn co svn://[你的ip地址]/davesvn [WEB實際目錄]
LOG_PATH=/tmp/svn_test.log
WEB=[WEB實際目錄]
REPOS="$1"
REV="$2"
svn update --username [剛設定的SVN使用者名稱] --password [剛設定的SVN密碼] $WEB --no-auth-cache >> $LOG_PATH
3,最後回到shell
svn co svn://你的ip/davesvn [WEB目錄]
按照提示輸入賬號密碼實現自動同步
三,使用
SVN檢出:檢視是否可以正常檢出
svn://伺服器IP:3690/davesvn
正常檢出後提交檢視WEB目錄是否實現同步內容
排坑:
svn錯誤:post-commit hook failed (exit code 1) with output.
1,檢查post-commit裡面設定的字元編碼是否正確
原來是#export LANG=zh_CN.GBK
修改為export LANG=en_US.UTF-8即可(svn伺服器預設是utf8)
2,檢查post-commit裡面設定的賬號密碼和SVN配置裡面的賬號密碼是否正確
3,255錯誤:post-commit有沒有給執行許可權
4,檢視伺服器3690埠是否開啟
4,最後無論在做什麼,最主要的還是細緻,看報錯資訊,不要慌張