標籤:svn+鉤子程式+rsync 自動化同步代碼
svn+鉤子程式+rsync 自動化同步代碼
實驗環境如下:
IP地址 伺服器功能 路徑 同步機制
192.168.3.206 svn svn路徑:/data/svn rsync用戶端
192.168.3.210 代碼伺服器 代碼目錄:/data/html rsync服務端
注:使用者提交svn代碼後,svn會自動把資料放在/data/rsync目錄,然後把/data/rsync資料自動更新到代碼伺服器/data/html目錄
一、svn安裝配置
svn伺服器操作如下:
1、安裝
yum install -y subversion
svnversion --version #判斷是否安裝成功
#建立使用者以及組
groupadd svn
useradd svn -g svn -s /sbin/nologin
#有了SVN軟體後還需要建立SVN庫。
mkdir -p /data/svn
cd /data/svn
svnadmin create coding
chown -R svn.svn coding
2、配置
#帳號密碼、分組、控制
2.1先設定authz
vim /data/svn/coding/conf/authz
[groups]
manage = system_svn,liuzhuang
coding = system_svn,test01
[/]
@manage = rw
[coding:/]
@coding = rw
[coding:/test]
@coding = rw
注:這裡分成兩個組,分別是manage,coding,都有讀寫權限.
2.2再設定passwd
vim /data/svn/coding/conf/passwd
#添加下面內容
system_svn = PASS #此使用者是svn串連使用者
liuzhuang = pass123
test01 = pass123
#格式為:使用者名稱=密碼
2.3最後設定svnserve.conf
vim /data/svn/coding/conf/svnserve.conf
#找到下面內容需修改成下面一樣就OK.
anon-access = none # 使非授權使用者無法訪問
auth-access = write # 使授權使用者有寫入權限
password-db = password #密碼檔案路徑
authz-db = authz # 存取控制檔案
realm = coding # 認證命名空間,subversion會在認證提示裡顯示,並且作為憑證緩衝的關鍵字。
採用預設配置. 以上語句都必須頂格寫, 左側不能留空格, 否則會出錯.
注:以上設定檔需要放在文本最頂端,前面不能有空格,不然會報錯。
3、串連
svnserve -d -r /data/svn
echo " svnserve -d -r /data/svn" >>/etc/rc.local #開機自動啟動svn服務
#修改監聽連接埠如下
svnserve -d -r /data/svn --listen-port 3391
這樣同一台伺服器可以運行多個svnserver
svn://192.168.3.206:3690/coding #輸入使用者和密碼就可以成功提交svn代碼了.
如果能夠正常使用,到這裡說明svn服務搭建ok.
二、rsync安裝配置
代碼伺服器操作如下:
mkdir -p /data/html #建立代碼目錄
1、下載rsync版本
cd /root/soft
wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz
2、解壓rsync
tar zxvf rsync-3.0.7.tar.gz
cd rsync-3.0.7
./configure --prefix=/usr/local/rsync
make &&make install
useradd coding -s /sbin/nologin #建立rsync使用者coding
3、安裝配置rsync
預設安裝完,/etc下沒有rsyncd.conf這個檔案,不過我們可以建立:
vim /etc/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections = 30
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[svn_coding] #同步的模組名字
read only = false #false表示可以修改這個模組的內容,yes表示不能修改這個模組的內容
path = /data/html #同步的模組目錄
comment = svn_coding
auth users = coding #同步的使用者
secrets file = /etc/rsync_svn.pas #同步密碼檔案
hosts allow = 192.168.3.0/24 #允許訪問的rsync ip段
4、設定rsync伺服器端同步處理密鑰
vim /etc/rsync_svn.pas
coding:coding_123
#(表示使用者名稱:密碼)
chmod 600 /etc/rsync_svn.pas #更改許可權。
5、rsync啟動守護進程
/usr/local/rsync/bin/rsync --daemon
echo "/usr/local/rsync/bin/rsync --daemon" >>/etc/rc.local #開機自動啟動rsync服務
svn伺服器操作如下:
mkdir -p /data/rsync #建議同步代碼目錄
mkdir -p /data/rsync_log #建議同步代碼log目錄
chmod 777 /data/rsync_log
1、密碼設定
echo ‘coding_123‘ >/etc/rsync_svn.pas
chmod 600 /etc/rsync_svn.pas
2、從用戶端更新檔案到服務端
echo ‘hello‘ >/data/rsync/hello.txt #建立測試檔案
yum install -y rsync #安裝rsync命令
rsync -avz --progress /data/rsync/ [email protected]::svn_coding --password-file=/etc/rsync_svn.pas
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/42/BF/wKioL1PYsMPC-RaVAAENOnefLaU784.jpg" title="rsync1.jpg" alt="wKioL1PYsMPC-RaVAAENOnefLaU784.jpg" />
#/data/rsync/表示用戶端推送檔案的目錄,coding表示使用者名稱,192.168.3.210表示服務端ip,svn_coding表示服務端的模組名字
3、進入代碼伺服器/data/html目錄,查看是否有hello.txt檔案,有表示rsync安裝ok.
三、svn鉤子程式配置
svn伺服器操作如下:
1、目錄建立及準備
cd /data/rsync
svn co svn://192.168.3.206:3690/coding #第一次需要拉檔案到/data/rsync目錄,第一個root是系統密碼,後面才是串連svn的使用者和密碼
2、鉤子程式編寫
vim /data/svn/coding/hooks/post-commit
#!/bin/bashexport LANG=zh_CN.UTF-8svn=/usr/bin/svnsvn_rsync=/data/rsync/coding/ #同步鉤子程式的目錄rsync=/usr/bin/rsyncpassword_file=/etc/rsync_svn.pas #密碼檔案coding_server1=192.168.3.210::svn_coding #rsync相關模組參數log=/data/rsync_log/rsync.logexclude=/data/rsync_log/exclude.listdate_start=$(date +%s)for svn_dir in `svnlook dirs-changed /data/svn/coding/`do $svn update --username=system_svn --password=‘PASS‘ $svn_rsync/$svn_dirdoneif [ $? == 0 ]then $rsync -vaztpH --timeout=90 $svn_rsync [email protected]$coding_server1 --password-file=$password_file --exclude-from=$exclude >> $logfidate_end=$(date +%s)echo $((date_end-date_start)) >>/data/rsync_log/time.log
chmod 777 /data/svn/coding/hooks/post-commit
3、測試
使用者在svn任意提交代碼,看能否自動更新到代碼伺服器。如果看到代碼資料已更新表示ok.
總結:這套svn自動更新成功,是參考彪哥寫的鉤子程式。彪哥是大神哇。我們只能膜拜了。
本文出自 “成都@阿狀” 部落格,請務必保留此出處http://azhuang.blog.51cto.com/9176790/1532886