1.環境
centos6.4php
2.安裝svn
yum -y install subversionweb
3.配置apache
創建版本庫目錄
mkdir /www/svndatacentos
svnserve -d -r /www/svndata--開啓服務緩存
4.創建版本庫服務器
建立一個新的Subversion項目
svnadmin create /var/www/svndata/njlrxxtcp
配置容許用戶jiqing訪問
cd /var/www/svndata/njlrxx/confsvn
vi svnserve.conf
anon-access=none
auth-access=write
password-db=passwdpost
anon-access = read日誌
auth-access = write
password-db = passwd
authz-db = authz
realm = My First Repository
各參數定義以下:
anon-access :定義非受權用戶的訪問權限,有三種方式: none 、 read 、 write ,設置爲 none 限制訪問,read 爲只讀, write 爲具備讀寫權限,默認爲 read 。
auth-access :定義受權用戶的訪問權限,有三種方式: none 、 read 、 write ,設置爲 none 限制訪問, read爲只讀, write 爲具備讀寫權限,默認爲 write 。
password-db :定義保存用戶名和密碼的文件名稱,這裏爲 passwd ,和該文件位於同一目錄。
authz-db :定義保存受權信息的文件名稱,這裏爲 authz ,和該文件位於同一目錄。
realm :定義客戶端鏈接是的「認證命名空間」, Subversion 會在認證提示裏顯示,而且做爲憑證緩存的關鍵字。
最後操做是關閉服務然再打開服務:
svn服務的關閉:
killall svnserve
svn開啓:
svnserve -d -r /var/www/svndata
檢查防火牆,是否添加svn端口規則
查看: iptables -L -n
1) 重啓後生效
開啓: chkconfig iptables on
關閉: chkconfig iptables off
2) 即時生效,重啓後失效
開啓: service iptables start
關閉: service iptables stop
須要說明的是對於Linux下的其它服務均可以用以上命令執行開啓和關閉操做。
在開啓了防火牆時,作以下設置,開啓相關端口,
修改/etc/sysconfig/iptables 文件,添加如下內容:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
實現SVN與WEB同步,能夠CO一個出來,也能夠直接配在倉庫中
1)設置WEB服務器根目錄爲/var/www/webroot
2)checkout一份SVN
svn co svn://localhost/njlrxx /var/www/webroot/njlrxx
修改權限爲WEB用戶
chown -R apache:apache /var/www/webroot/njlrxx
3)創建同步腳本
cd /var/www/svndata/njlrxx/hooks/
cp post-commit.tmpl post-commit
編輯post-commit,在文件最後添加如下內容
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
增長腳本執行權限
chmod +x post-commit
===============================================================
SVN自動同步程序執行流程:一、用戶提交文件到SVN服務器,提交操做成功後觸發post-commit腳本二、在post-commit版本文件中使用php_script.php執行PHP腳本三、在PHP腳本中經過exec系統調用更新服務器上的版本庫工做副本四、根據更新操做結果日誌,對另外一個SVN版本庫進行對應的操做處理