千家信息网

Linux下安装SVN服务(CentOS7下)多仓库版(老威改良版)

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,单仓库版请坐飞机过去 http://cswllz.blog.51cto.com/2746613/1933598说操作前,我说一下我的环境,服务器用的是centos7.3,服务器用BT(宝塔系统),对操
千家信息网最后更新 2026年10月31日Linux下安装SVN服务(CentOS7下)多仓库版(老威改良版)

单仓库版请坐飞机过去 http://cswllz.blog.51cto.com/2746613/1933598

说操作前,我说一下我的环境,服务器用的是centos7.3,服务器用BT(宝塔系统),对操作文件速度快些,不用自己打命令,咱们要的是效率嘛,编辑器用Sublime text3

这里要说的是多仓库版,和单仓版基本类似,区别在于authz和passwd两个文件的处理

因为多仓库是2个及以上的数量,为了方便管理权限、用户名和密码,结构如下图

/var/svn     #这里是svn的根目录/var/svn/project1 #这里是仓库1/var/svn/project2 #这里是仓库2

重点在这里

1、把project1下面的conf文件夹下面的authz和passwd复制到svn根目录下(/var/svn),这样一来authz、passwd、project1、project2属于同一级目录下了

2、用Sublime text3打开authz(以下为内容)


[groups]#svngroup 为用户组,laowei为用户svngroup = laowei,laowei2#"="号左右必须有一个空格[laowei:/]#表示svngroup组对根目录下的laowei域有读写权限,r为读,w为写@svngroup = rw

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

3、用Sublime text3打开passwd(以下为内容)

[users]laowei = 123456laowei2 = 123456

4、用Sublime text3分别打开/var/svn/project1/conf和/var/svn/project2/conf下的svnserve.conf,加入以下内容

[general]#控制非鉴权用户访问版本库的权限anon-access = none#控制鉴权用户访问版本库的权限auth-access = write#指定用户名口令文件名password-db = ../../passwd#指定权限配置文件名authz-db = ../../authz#指定版本库的认证域,即在登录时提示的认证域名称realm = laowei#这里的laowei和第二点中的[laowei:/]对应

---------------以上处理完毕,环境这真就OK了---------------------

当我们本地环境svn up到仓库里,想让仓库更新的同时,测试网站也同步更新,怎么办?这里我们就需要用到钩子,不要因为不知道什么是钩子而害怕,照下面说的操作就行了

第一步 创建钩子,以project1为例,在/var/svn/lw_taoke/hooks下,新建名为post-commit的文件,注意,这个文件没有扩展名,在宝塔系统下建立非常方便,建好把下面代码复制进去

#!/bin/sh REPOS="$1"                  # 仓库的路径REV="$2"                    # 新提交的版本号LOGFILE=/var/log/svn_lw_taoke.log    # 钩子脚本的日志# 脚本的标准输出和标准错误输出都打印到日志文件里exec 1>>"$LOGFILE"exec 2>&1 SVNLOOK=/usr/bin/svnlookTIME=$(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的服务器#CLIENT2=172.16.4.236        #project2的服务器CLIENTSVNROOT=/www/wwwroot/we.chenshangwei.com    #WEB服务器的代码根目录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服务器上while [ "$CHANGEDDIRS" != "" ];do    PROJECT=$(echo $MASTERDIR | awk -F / '{print $1}')    # 判断项目文件夹            myecho        myecho "项目:$PROJECT 同步目录:$MASTERDIR"        myecho "同步 $MASTERDIR 到 $CLIENT1:$CLIENTSVNROOT/$MASTERDIR"        # 无密码ssh连接到客户端服务器,执行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

第二步 切换到测试网站根目录,打入以下命令,意思是捡出仓库中的代码,并把project1的所有者改成www

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

第三步 在你本地网站上操作捡出功能,然后在捡出的目录下,你可以新建个文件或文件夹,提交更新就会把这个文件或文件夹同步到测试网站了,是不是很方便


文件 目录 仓库 服务 用户 同步 服务器 权限 根目录 版本 代码 文件夹 钩子 内容 环境 网站 更新 测试 上级 作者 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技企业 江苏根荣互联网科技 智能科技公司是互联网公司吗 腾讯阿里互联网科技 期待互联网科技 亿策互联网科技 四川狮子座互联网科技 山东吉时兔互联网科技有限公司 湖南洣水互联网科技有限公司扣款 深圳市运趣互联网科技有限公司 欧洲十大科技互联网公司 想开互联网科技公司怎么样 乌鲁木齐新华智原互联网科技学校 锡山区互联网智能科技产品供应 全球科技与互联网公司市值变化 互联网科技平台产品运营 互联网公司属于科技吗 兰石爱特工业互联网科技分公司 长沙易易互联网科技有限公司 互联网科技自媒体灵感 互联网科技企业 南京欣网互联网科技 群盈汇互联网科技有限公司 互联网方面的科技前沿 互联网与数字科技关系 互联网风格科技公司名称 云南互联网科技学费 科技互联网经济论坛 互联网科技的前景 科技互联网企业在行动
0