设为首页 收藏本站
查看: 774|回复: 0

[经验分享] Apache + SVN 环境搭建及svnsync 主备详解

[复制链接]

尚未签到

发表于 2018-11-20 13:04:31 | 显示全部楼层 |阅读模式
  注:本文非原创,只是在原作者基础之上略有改进与添加内容,请支持原作者,谢谢
  (由于部署过于繁琐,其中遇到了很多未知报错,故整理收集)
  原作者博客:http://51power.blog.51cto.com/3549599/1663904
  
  SVN简介
      SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion
  

  演示环境
  1.Centos6.5 x64

  2.关闭iptables、selinux

#  /etc/init.d/iptables stop    //关闭防火墙
#  chkconfig iptables off    //设置开机不启动#  vim /etc/selinux/config    //关闭selinux
#  SELINUX=enforcing改为SELINUX=disabled  
  3.创建管理用户
# groupadd svn
# mkdir /app
# useradd -d /data/svn -g svn svn
# echo "svn" | passwd --stdin svn  

  软件版本
apr-1.5.1.tar.gz
apr-util-1.5.3.tar.gz
httpd-2.2.27.tar.gz
sqlite-amalgamation-3.6.17.tar.gz
sqlite-amalgamation-3071501.zip
subversion-1.8.10.tar.gz
点击下载以上所有包


SVN搭建
1.安装Apache
# tar zxf httpd-2.2.27.tar.gz
# cd httpd-2.2.27
# ./configure --prefix=/usr/local/svn/apache --enable-dav --enable-so --enable-modules=most
# make && make install2.安装apr
# tar zxf apr-1.5.1.tar.gz
# cd apr-1.5.1
# ./buildconf   #验证系统是否已经安装python、autoconf、libtool,如果没有安装,使用yum或rpm方式安装相应包即可。
DSC0000.png

# ./configure --prefix=/usr/local/svn/apr
# make && make install  3.安装apr-util
# tar zxf apr-util-1.5.3.tar.gz
# cd apr-util-1.5.3
# ./configure --prefix=/usr/local/svn/apr-util --with-apr=/usr/local/svn/apr
# make && make install  4.安装sqlite
  注:由于正常安装sqlite后,在配置svn时会报错
configure时遇到错误:
get the sqlite 3.7.15.1amalgamation from:
http://www.sqlite.org/sqlite-amalgamation-3071501.zip
unpack the archive usingunzip and rename the resulting
directory to:
/app/soft/subversion-1.8.10/sqlite-amalgamation
configure: error:Subversion requires SQLite解决依赖关系办法
# tar zxf sqlite-amalgamation-3.6.17.tar.gz
# unzip sqlite-amalgamation-3071501.zip   
# cp sqlite-amalgamation-3071501/* sqlite-3.6.17
# cd sqlite-3.6.17/
# ./configure --prefix=/usr/local/svn/sqlite
# make && make install  5.安装svn

  注意:在安装svn前提醒各位一句,如果要做svn主备同步的话,请提前安装serf,原因:如果不安装用svnsync 做同步的时候会报一下错误
svnsync E170000 unrecognized url scheme for http
  

  所以,1.8版本之前的需要加neon,1.8版本之后弃用neon而改使用serf;
  点击下载serf

  能***的也可以直接wget下载
# yum -y install expat-devel
# wget http://serf.googlecode.com/files/serf-1.2.1.tar.bz2
# tar xjf serf-1.2.1.tar.bz2
# cd serf-1.2.1./configure --prefix=/usr/local/svn/serf --with-apr=/usr/local/svn/apache --with-apr-util=/usr/local/svn/apache
make && make install  

# tar zxf subversion-1.8.10.tar.gz
# cd subversion-1.8.10
# ./configure --prefix=/usr/local/svn/subversion --with-apxs=/usr/local/svn/apache/bin/apxs --with-apr=/usr/local/svn/apr/bin/apr-1-config --with-apr-util=/usr/local/svn/apr-util/bin/apu-1-config --with-sqlite=/usr/local/svn/sqlite/ --with-serf=/usr/local/svn/serf --with-openssl --with-zlib--enable-maintainer-mod
# make && make install  使用SVN
  1.创建svn仓库
/usr/local/svn/subversion/bin/svnadmin create /data/svn/yunwei/public  2.创建权限配置文件
vim /data/svn/authz.conf
[/]
* = r
[public:/]
ssc4469 = rw  3.创建用户认证帐号,密码文件
# /usr/local/svn/apache/bin/htpasswd -c /data/svn/authzfile ssc4469  4.加载模块
  svn安装完成后,会在/app/sinova/svn/libexec目录下产生mod_authz_svn.so和mod_dav_svn.so这两个模块,将这两个模块文件拷到apache模块目录下。
# cp /usr/local/svn/subversion/* /usr/local/svn/apache/modules/  5.设置apache配置文件

# vim /usr/local/svn/apache/conf/httpd.conf文件,修改如下内容:
User sinova     //修改  
Group sinova    //修改
ServerName www.example.com:80    //去掉本行前面的注释
# LoadModule foo_module modules/mod_foo.so //此行后添加以下两行
LoadModule dav_svn_module     modules/mod_dav_svn.so   //添加
LoadModule authz_svn_module   modules/mod_authz_svn.so  //添加  6.在httpd.conf文件最后添加如下内容

DAV svn
SVNParentPath "/data/svn/"
AuthzSVNAccessFile "/data/svn/authz.conf"
AuthType Basic
AuthName "Subversion.zoneyump"
AuthUserFile "/data/svn/authzfile"
Require valid-user
  7.启动apache
# /usr/local/svn/apache/bin/apachectl start  ###############################################################
  使用client测试是否正常(我这里就不测试了,自己在浏览器中数据地址测试吧)
  我这里的测试地址是:http://192.168.154.230/yunwei/public,根据创建的结果自行测试吧~!
  注意:如果上传文件测试,提交完成后出现以下错误:
  svn: Can’t open file ‘/home/svn/db/txn-current-lock’: Permission denied
  出现这种问题的原因在于搭建SVN服务器,包括创建Repository目录/data/svn目录下的一切子目录和文件都是在root用户下进行的,所以在root用户下检出、提交都没有问题。可在Windows PC上从客户端访问就有问题了,因为是只有拥有管理器权限的人才能对Repository目录进行完全控制,而在Windows从客户端访问的话,因为是Users用户组的,对Repository没有修改权限,所以不能提交。
        解决办法:在服务器上把Users对Repository的完全控制权限加上就可以了,执行如下命令对/app/svnroot/ltzb目录下的所有文件和子目录添加Users的读写权限
chmod -R o+rw /data/svn/yunwei/public
现在可以正常地从Windows客户端下面进行检出和提交了。
  ##################################################
  

  svnsync 同步配置
  实验环境:
  A:192.168.154.230 //我刚才搭建好的SVN服务器

  B:192.168.154.233
  项目需求,生产环境要求svn服务器实现热备机制,于是就想到了svn自带的svnsync机制,操作流程如下:
  1.进入备份服务器(192.168.154.230)版本库 /data/svn/yunwei/public/ 下的hooks 目录
# cd /data/svn/yunwei/public/  2.复制目录内的文件pre-revprop-change
# cp pre-revprop-change.tmpl pre-revprop-change  3.修改pre-revprop-change权限,更改为755
# chmod 755 pre-revprop-change  4.修改pre-revprop-change内容
  echo “Changing revision properties other than svn:log is prohibited” >&2
exit 0(1修改为0)说明如下:
原脚本的意思是如果修改的是svn:log属性,将允许修改,返回0;否则,不允许,返回1
我们要将它改为允许修改所有的属性,在脚本中直接返回0
  5.在备机上执行初始化同步操作

# /usr/local/svn/subversion/bin/svnsync init file:///data/svn/yunwei/public/ http://192.168.154.233/yunwei/public --username new_user --password new_passwd  //注意以上 --username   --password 使用的是 源SVN帐号密码
  //输入完以上命令后,会弹出属否保存密钥的信息,选择"yes"
  6.执行同步
# /usr/local/svn/subversion/bin/svnsync sync file:///data/svn/yunwei/public/  //注意:同步时间根据你的源库大小所决定,我这里同步了点测试数据使用大概15分钟的样子
  备机同步结果
DSC0001.png

  

  PS:定时同步脚本
maillist="76109360@qq.com"
url="/usr/local/svn/subversion/bin/svnsync sync file:///data/svn"
list=( "/yunwei/public/" )
check(){
  if [ `rpm -qa|grep -q mailx;echo $?` -ne 0 ];
  then
      yum -y install mailx
  fi
  if [ `rpm -qa|grep -q postfix;echo $?` -ne 0 ];
  then
      yum -y install postfix
  fi
  for ((i=0;i/dev/null;echo $?` -eq 0 ];then
        echo "${list[$i]} backup is ok"
      else
        echo "${list[$i]} backup error"|mail -s " ${list[$i]} backup error" -r svn@root.cn ${maillist}
      fi
done
}
check  




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-637402-1-1.html 上篇帖子: Apache SSL服务器配置SSL详解 下篇帖子: apache配置网络驱动器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表