1. 程式人生 > >centOs6.5 SVN 伺服器搭建並實現提交自動同步到web伺服器

centOs6.5 SVN 伺服器搭建並實現提交自動同步到web伺服器

第一步,安裝SVN
yum install subversion
yum remove subversion(解除安裝)

第二步,建立SVN版本庫

mkdir -p /var/svn/svntest
第三步,建立版本庫
svnadmin create /var/svn/svntest
執行完上面命令後會生成如下檔案,說明版本庫建立成功:


第四步,進入conf目錄配置該版本庫的檔案:

authz檔案是許可權控制檔案

passwd是帳號密碼檔案

svnserve.conf SVN服務配置檔案

第五步,配置passwd,語法:使用者名稱=密碼,例:

[users]
test1 = 123456 
test2 = 123456
第六步,配置authz使用者許可權檔案,rw是有讀寫許可權:
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
admin_group = test2

[/]
test1 = rw
[/adminfile]
@admin_group = rw
第七步,配置svnserve.conf檔案,開啟下面幾個註釋即可:
anon-access = read #匿名使用者可讀
auth-access = write #授權使用者可寫
password-db = passwd #使用哪個檔案作為賬號檔案
authz-db = authz #使用哪個檔案作為許可權檔案
realm = /var/svn/svntest #認證空間名,版本庫所在目錄
第八步,啟動SVN版本庫,完成:

啟動SVN:

svnserve -d -r /var/svn/svntest
關閉SVN(檢視程序PID,然後kill掉):
ps aux | grep -i svn
kill pid號

防火牆開啟3690埠:

編輯防火牆配置檔案:

vi  /etc/sysconfig/iptables
增加下面一行
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
重啟防火牆
service iptables restart

第九步,實現自動同步:

首先在伺服器上建一個資料夾:

mkdir /var/testcode
執行check:
svn --username test1 --password 123456 co svn://127.0.0.1 /var/testcode/
在/var/svn/svntest/hook下建立post-commit檔案,檔案設定可執行許可權,加入以下內容:
#!/bin/sh
REPOS="$1"
REV="$2"
WEB_PATH=/var/testcode
SVN_USER=test1
SVN_PASS=123456
WEB_USER=www
LOG_PATH=/tmp/svn.log
echo `date "+%Y-%m-%d %H:%M:%S"` >> $LOG_PATH
echo `whoami`,$REPOS,$REV >> $LOG_PATH
svn update $WEB_PATH --username $SVN_USER --password $SVN_PASS --no-auth-cache >> $LOG_PATH
chown $WEB_USER.$WEB_USER -R $WEB_PATH
儲存後實現自動同步功能

拓展,建立多專案:

(1): 建立svn倉庫路徑
mkdir  -p  /opt/svn/project1
mkdir -p   /opt/svn/project2
svnadmin  create  /opt/svn/project1
svnadmin  create  /opt/svn/project2
注意:為了規範:一般在專案目錄下再建立,專案程式碼匯入到trunk目錄:
mkdir  -p   /opt/svn/projec1/trunk
mkdir  -p   /opt/svn/projec1/tags
mkdir  -p   /opt/svn/projec1/branches
專案2操作和一類似。

其他配置參考以上步驟

(2):啟動svn服務

svnserve   -d   -r    /opt/svn/
注意:如果在一臺伺服器上同時啟動多個版本管理,那麼啟動路徑必須是所有專案倉庫的根路徑:比如
/opt/svn/project1    /opt/svn/project2   ------------------->   /opt/svn/