1.環(huán)境
centos6.4
2.安裝svn
yum -y install subversion
3.配置
建立版本庫目錄
mkdir /www/svndata
svnserve -d -r /www/svndata
4.建立版本庫
創(chuàng)建一個新的Subversion項目
svnadmin create /var/www/svndata/njlrxx
配置允許用戶jiqing訪問
cd /var/www/svndata/njlrxx/conf
vi svnserve.conf
anon-access=none
auth-access=write
password-db=passwd
注:修改的文件前面不能有空格,否則啟動svn server出錯
vi passwd
[users]
#用戶1> = 密碼1>
#用戶2> = 密碼2>
jiqing=123456
5.客戶端連接
svn co svn://ip/njlrxx
用戶名:jiqing
密碼:123456
6.實現(xiàn)SVN與WEB同步,可以CO一個出來,也可以直接配在倉庫中
(1)設(shè)置WEB服務(wù)器根目錄為/var/www/webroot
(2)checkout一份SVN
svn co svn://localhost/njlrxx /var/www/webroot/njlrxx
修改權(quán)限為WEB用戶
chown -R apache:apache /var/www/webroot/njlrxx
(3)建立同步腳本
cd /var/www/svndata/njlrxx/hooks/
cp post-commit.tmpl post-commit
編輯post-commit,在文件最后添加以下內(nèi)容
REPOS="$1"
REV="$2"
BASEPATH=/var/www/webroot/njlrxx
WEBPATH="$BASEPATH/"
export LANG=zh_CN.UTF-8
svn update $WEBPATH --username jiqing --password 123456 --no-auth-cache
增加腳本執(zhí)行權(quán)限
chmod +x post-commit
最后操作是關(guān)閉服務(wù)然再打開服務(wù):
svn服務(wù)的關(guān)閉:
killall svnserve
svn開啟:
svnserve -d -r /var/www/svndata
7.如何支持匿名用戶訪問
方法一:
在svn安裝目錄下找到,conf/httpd.conf文件,如果是手動集成apache的則找到apache的配置文件。
找到中的
Require valid-user
改為
LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
/LimitExcept>
重啟服務(wù),這樣設(shè)置以后,svn下的所有內(nèi)容都不在需要驗證用戶,可以直接訪問。
缺點:svn自身的訪問權(quán)限設(shè)置失效了。更多的時候我們希望用戶先用匿名方式嘗試訪問,如果不行,在輸入用戶名和密碼驗證訪問。
方法二:
在配置文件中加入
Satisfy Any
加入了Satisfy Any的設(shè)置,其表示在同時啟用了Allow(允許)和Require的情況下,指定相關(guān)策略的,一共有兩個備選值,All表示用戶必須同時滿足Allow和Require的條件,而Any則是滿足其中之一即可。
Satisfy Any表示允許先用匿名方式嘗試訪問,并根據(jù)svnauthz對匿名用戶的控制給予訪問權(quán)限。
PS:SVN自動同步程序執(zhí)行流程:
1、用戶提交文件到SVN服務(wù)器,提交操作成功后觸發(fā)post-commit腳本
2、在post-commit版本文件中使用php_script.php執(zhí)行PHP腳本
3、在PHP腳本中通過exec系統(tǒng)調(diào)用更新服務(wù)器上的版本庫工作副本
4、根據(jù)更新操作結(jié)果日志,對另一個SVN版本庫進行對應(yīng)的操作處理