溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux下安裝SVN服務(wù)(CentOS7下)多倉庫版(老威改良版)

發(fā)布時間:2020-07-09 09:51:09 來源:網(wǎng)絡(luò) 閱讀:1791 作者:cswllz 欄目:建站服務(wù)器

單倉庫版請坐飛機(jī)過去 http://cswllz.blog.51cto.com/2746613/1933598

說操作前,我說一下我的環(huán)境,服務(wù)器用的是centos7.3,服務(wù)器用BT(寶塔系統(tǒng)),對操作文件速度快些,不用自己打命令,咱們要的是效率嘛,編輯器用Sublime text3

這里要說的是多倉庫版,和單倉版基本類似,區(qū)別在于authz和passwd兩個文件的處理

因?yàn)槎鄠}庫是2個及以上的數(shù)量,為了方便管理權(quán)限、用戶名和密碼,結(jié)構(gòu)如下圖

/var/svn     #這里是svn的根目錄/var/svn/project1 #這里是倉庫1/var/svn/project2 #這里是倉庫2

重點(diǎn)在這里

1、把project1下面的conf文件夾下面的authz和passwd復(fù)制到svn根目錄下(/var/svn),這樣一來authz、passwd、project1、project2屬于同一級目錄下了

2、用Sublime text3打開authz(以下為內(nèi)容)


[groups]
#svngroup 為用戶組,laowei為用戶
svngroup = laowei,laowei2
#"="號左右必須有一個空格
[laowei:/]
#表示svngroup組對根目錄下的laowei域有讀寫權(quán)限,r為讀,w為寫
@svngroup = rw

操作完以上,就可以保存authz

3、用Sublime text3打開passwd(以下為內(nèi)容)

[users]
laowei = 123456
laowei2 = 123456

4、用Sublime text3分別打開/var/svn/project1/conf和/var/svn/project2/conf下的svnserve.conf,加入以下內(nèi)容

[general]
#控制非鑒權(quán)用戶訪問版本庫的權(quán)限
anon-access = none
#控制鑒權(quán)用戶訪問版本庫的權(quán)限
auth-access = write
#指定用戶名口令文件名
password-db = ../../passwd
#指定權(quán)限配置文件名
authz-db = ../../authz
#指定版本庫的認(rèn)證域,即在登錄時提示的認(rèn)證域名稱
realm = laowei
#這里的laowei和第二點(diǎn)中的[laowei:/]對應(yīng)

---------------以上處理完畢,環(huán)境這真就OK了---------------------

當(dāng)我們本地環(huán)境svn up到倉庫里,想讓倉庫更新的同時,測試網(wǎng)站也同步更新,怎么辦?這里我們就需要用到鉤子,不要因?yàn)椴恢朗裁词倾^子而害怕,照下面說的操作就行了

第一步 創(chuàng)建鉤子,以project1為例,在/var/svn/lw_taoke/hooks下,新建名為post-commit的文件,注意,這個文件沒有擴(kuò)展名,在寶塔系統(tǒng)下建立非常方便,建好把下面代碼復(fù)制進(jìn)去

#!/bin/sh
 
REPOS="$1"                  # 倉庫的路徑
REV="$2"                    # 新提交的版本號
LOGFILE=/var/log/svn_lw_taoke.log    # 鉤子腳本的日志
# 腳本的標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤輸出都打印到日志文件里
exec 1>>"$LOGFILE"
exec 2>&1
 
SVNLOOK=/usr/bin/svnlook
TIME=$(date "+%Y-%m-%d %H:%M:%S")
AUTHOR=$($SVNLOOK author -r $REV "$REPOS")  #提交作者
CHANGEDDIRS=$($SVNLOOK dirs-changed $REPOS) #修改的目錄集合
MESSAGE=$($SVNLOOK log -r $REV "$REPOS")    #提交時的備注信息,不建議用中文
 
# SVN客戶端配置,需要自行修改**********************************
CLIENT1=10.14.213.21        #project1的服務(wù)器
#CLIENT2=172.16.4.236        #project2的服務(wù)器
CLIENTSVNROOT=/www/wwwroot/we.chenshangwei.com    #WEB服務(wù)器的代碼根目錄
SVNUSER="lw_taoke"
SVNPASSWD="Baihdgvcsw351"
#**************************************************************
 
function myecho() {
    echo "$TIME" "$*"
}
 
myecho "**************************************************************"
myecho "提交版本:$REV 作者:$AUTHOR"
myecho "提交備注:$MESSAGE"
myecho "修改目錄:$(echo $CHANGEDDIRS | tr '\n' ' ')"
 
MASTERDIR=$(echo "$CHANGEDDIRS" | head -1)  #CHANGEDDIRS里的最上級目錄
# 遍歷提交的代碼目錄,同步到WEB服務(wù)器上

while [ "$CHANGEDDIRS" != "" ];do
    PROJECT=$(echo $MASTERDIR | awk -F / '{print $1}')
    # 判斷項(xiàng)目文件夾
    
        myecho
        myecho "項(xiàng)目:$PROJECT 同步目錄:$MASTERDIR"
        myecho "同步 $MASTERDIR 到 $CLIENT1:$CLIENTSVNROOT/$MASTERDIR"
        # 無密碼ssh連接到客戶端服務(wù)器,執(zhí)行svn up
		export LANG=en_US.UTF-8; sudo -u www svn up --non-interactive --username $SVNUSER --password $SVNPASSWD "$CLIENTSVNROOT"/lw_taoke
		
        #svn up --non-interactive --username $SVNUSER --password $SVNPASSWD "$CLIENTSVNROOT"/lw_taoke
    
    # 在目錄集合里刪除子目錄
    CHANGEDDIRS=$(echo "$CHANGEDDIRS" | grep -v "^$MASTERDIR")
    # 獲取新的需要同步的最上級目錄
    MASTERDIR=$(echo "$CHANGEDDIRS" | head -1)
done

第二步 切換到測試網(wǎng)站根目錄,打入以下命令,意思是撿出倉庫中的代碼,并把project1的所有者改成www

sudo -u www svn co svn://10.14.213.219/lw_test /www/wwwroot/project1

第三步 在你本地網(wǎng)站上操作撿出功能,然后在撿出的目錄下,你可以新建個文件或文件夾,提交更新就會把這個文件或文件夾同步到測試網(wǎng)站了,是不是很方便


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI