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

[经验分享] Centos6.3下apache+svn部署web版本同步

[复制链接]

尚未签到

发表于 2018-11-24 08:38:52 | 显示全部楼层 |阅读模式
  前段时间一直忙项目,所以项目初期的svn服务就一直没来得及更新,今天刚好忙完就将自己之前的配置重新总结了下,供大家参考。

  svn(subversion)作为一款开源的代码版本管理软件,目前普遍用在项目开发人员将本地的源代码上传到web测试服务器的一种同步软件。
  其存储版本数据有2种方式:BDB(一种事务安全型表类型)和默认的FSFS(一种不需要数据库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式相对安全一些。
        本篇博文就是为了实现开发人员使用windows下的svn客户端将源代码上传到服务端svn版本库,并利用svn的hock脚本将库数据同步到apache目录,达到实时测试web页面的功能。

  

  
  我的博客新站已经建好,更多新的内容即将在新站更新。。
  欢迎访问     http://www.showerlee.com
  

  

  解决方案:

  

  一.环境部署
  

  操作系统:        centos6.3 x64
  SVN:              subversion-1.8.0
  apache:           httpd-2.4.4
  

DSC0000.jpg

  

  svn server(centos6.3 x64): 192.168.7.74
  svn client(win7 x64): 192.168.7.129
  

  1.关闭iptables和SELINUX
  # service iptables stop
  注:如需开启防火墙,则添加如下一条规则打开svn 3690端口
  # iptables -A INPUT -p tcp  --dport 3690 -j ACCEPT
  # setenforce 0
  # vi /etc/sysconfig/selinux
  ---------------
  SELINUX=disabled
  ---------------
  

  2.同步时间
  # ntpdate asia.pool.ntp.org
  

  3.安装apache
  传送门:http://showerlee.blog.51cto.com/2047005/1174141
  

  4.关闭系统自带svnserve
  # service svnserve stop
  # chkconfig svnserve off
  注:本文档为了与apache2.4.4配合不发生兼容问题,所以使用了最新编译版本的svn,这里关闭是为了保证与rpm的版本不冲突.
  

  二.svn安装配置:
  (svn server)
  

  1.下载svn源码包并安装
  # wget http://mirrors.tuna.tsinghua.edu.cn/apache/subversion/subversion-1.8.0.tar.bz2
  # tar jxvf subversion-1.8.0.tar.bz2
  # cd subversion-1.8.0
  创建安装目录
  # mkdir -p /usr/local/svn
  

  2.安装svn依赖包并解压模块到svn根目录:
  # yum install expat* -y
  # wget http://www.sqlite.org/sqlite-amalgamation-3071501.zip
  # unzip sqlite-amalgamation-3071501.zip
  # mv sqlite-amalgamation-3071501 sqlite-amalgamation
  之前未安装apache请看红字,若安装apache直接无视:
  -------------------------------------------------
  注:因为之前已经编译成功apache,所以apache下面的apr与apr-util组件已成功编译到系统,如果您的系统未装apache,则这里需要安装apr与apr-util组件并在编译svn时加上此组件的编译参数
  假设apr与apr-util后来单独编译到/usr/local/apr与/usr/local/apr-util目录
  安装apr:
  # cd ..
  # wget http://apache.fayea.com/apache-mirror//apr/apr-1.5.0.tar.gz
  # tar zxvf apr-1.5.0.tar.gz
  # cd apr-1.5.0
  # ./configure --prefix=/usr/local/apr
  # make && make install
  # cd ..
  安装apr-util:
  # wget http://apache.fayea.com/apache-mirror//apr/apr-util-1.5.3.tar.gz
  # tar zxvf apr-util-1.5.3
  # cd apr-util-1.5.3
  # ./configure --prefix=/usr/local/apr-util
  # make && make install
  # cd ..
  编译svn:
  # cd subversion-1.8.0
  # ./configure --prefix=/usr/local/svn -with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/bin/apu-1-config
  --------------------------------------------------
  编译安装
  # cd subversion-1.8.0
  # ./configure --prefix=/usr/local/svn
  # make && make install
  

  测试安装是否成功
  # /usr/local/svn/bin/svnserve --version
  -----------------------------
  svnserve,版本 1.8.0 (r1490375)
  编译于 Jun 29 2013,04:08:41 在 x86_64-unknown-linux-gnu
  -----------------------------
  注:centos6.3默认装有svn服务端,版本为为1.6.11,其中svn命令在/usr/bin/svn下被环境变量加载,本文档编译的版本为1.8.0,不推荐使用低版本svn指令执行以下操作,可能会有报错。这里为了区分建议直接全路径访问编译后的高版本svn指令执行以下操作。
  之前未安装svnserve可执行如下命令加载环境变量:
  # echo "PATH=$PATH:/usr/local/svn/bin;export PATH" >> /etc/profile
  # source /etc/profile
  

  3.配置svn
  1).建立版本库目录(这个需安装目录区分开)
  # mkdir -p /data/svndata/www.example.com
  

  2).建立svn版本库
  # svnadmin create /data/svndata/www.example.com
  注:执行此命令后svn自动在/data/svndata/目录下添加必须的配置文件.
  # ls /data/svndata/www.example.com
  --------------------
  conf db format hooks locks README.txt
  --------------------
  注:版本库不同于一般的文件夹, 直接在操作系统上新建文件无法被SVN识别, 必须使用import等命令将文件导入版本库.此为svn内部指令,create用于新建版本库。请使用svn help查看详细说明。
  

  3).修改版本库配置文件
  # vi /data/svndata/www.example.com/conf/svnserve.conf
  修改如下配置
  -------------------------------
  [general]
  # 使非授权用户无法访问
  anon-access = none
  # 使授权用户有写权限
  auth-access = write
  # 指明密码文件路径
  password-db = passwd
  # 访问控制文件
  authz-db = authz
  # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。
  realm = /data/svndata/www.example.com
  --------------------------------
  

  4).配置用户
  # vi /data/svndata/www.example.com/conf/passwd
  添加如下内容
  -----------------
  [users]
  

  user01 = 123456
  user02 = 123456
  -----------------
  注:可以添加多个svn账户,=前后为用户名和密码
  

  5).配置权限
  # vi /data/svndata/www.example.com/conf/authz
  添加以下内容
  -------------
  [/]
  user01 = rw
  user02 = r
  ------------
  注:列出对各用户的授权。包括只读r,读写rw。没有列出的用户,则不允许访问
  

  6).启动svn服务
  # /usr/local/svn/bin/svnserve -d -r /data/svndata/
  

  注:此指令用于启动svn服务,-d指明以守护模式运行,svn自动在3690端口监听。3690是默认端口,可以使用“--listen-port=”或者“--listen-host=”来指定其它端口以及非本地主机。-r选项用来指定svn服务的根目录,这样用户就可以使用相对路径访问,而不用提供完整路径。
  

  7).检查端口
  # lsof -i:3690
  ----------------------------
  COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
  svnserve 65371 root    3u  IPv4  82329      0t0  TCP *:svn (LISTEN)
  ----------------------------
  

  8).设置开机启动
  # echo "/usr/local/svn/bin/svnserve -d -r /data/svndata/" >> /etc/rc.local
  

  到此svn初步搭建完毕
  

  三.svn同步apache配置:
  1.添加apache的svn模块
  # cd ~/subversion-1.8.0
  # cp ./subversion/mod_dav_svn/.libs/mod_dav_svn.so  /usr/local/apache2/modules/
  # cp ./subversion/mod_authz_svn/.libs/mod_authz_svn.so  /usr/local/apache2/modules/
  # vi /usr/local/apache2/conf/httpd.conf
  末行添加如下内容:
  ---------------------
  LoadModule dav_module modules/mod_dav.so
  LoadModule dav_svn_module modules/mod_dav_svn.so
  ---------------------
  重启apache服务:
  # /usr/local/apache2/bin/apachectl restart
  

  2.设置svn同步脚本
  创建apache虚拟目录
  # mkdir -p /usr/local/apache2/htdocs/www.example.com
  设置apache默认用户为该虚拟目录宿主
  # chown -R daemon.daemon /usr/local/apache2/htdocs/www.example.com
  创建脚本,将svn该版本库数据同步到apache虚拟目录
  # cd /data/svndata/www.example.com/
  # vi post-commit
  ------------------------
  #!/bin/sh
  export LANG=zh_CN.UTF-8
  SVN=/usr/local/svn/bin/svn
  WEB=/usr/local/apache2/htdocs/www.example.com
  #默认无需输入账号密码
  #USERNAME=user01
  #PASSWORD=123456
  # SVN update $WEB --username $USERNAME --password $PASSWORD --no-auth-cache
  $SVN update $WEB
  ------------------------
  注:该脚本会在客户端执行svn commit同时被触发,从而将版本库的数据同步到apache虚拟目录
  设置脚本可执行权限
  # chmod a+x post-commit
  

  使用checkout建立一个工作复本
  # /usr/local/svn/bin/svn co svn://localhost/www.example.com    /usr/local/apache2/htdocs/www.example.com/
  按照提示操作
  ==============================================
  认证领域:  /data/svndata/www.example.com/
  “root”的密码: 123456
  认证领域:  /data/svndata/www.example.com/
  “user01”的密码: 123456
  

  -----------------------------------------------------------------------
  注意!  你的密码,对于认证域:
  

   /data/svndata/www.example.com/
  

  只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion
  可以保存加密后的密码。请参阅文档以获得详细信息。
  

  你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-
  

  passwords”为“yes”或“no”,
  来避免再次出现此警告。
  -----------------------------------------------------------------------
  保存未加密的密码(yes/no)?yes
  A    /usr/local/apache2/htdocs/www.example.com/1.txt
  A    /usr/local/apache2/htdocs/www.example.com/2.txt
  A    /usr/local/apache2/htdocs/www.example.com/3.txt
  取出版本 3。
  

  ==============================================
  svn认证成功,同步认证信息会保存在apache虚拟目录 ./www.example.com/.svn/
  注:这里同步的3个txt文件为版本库已保存数据
  

  3.重启svn服务:
  # killall svnserve
  # /usr/local/svn/bin/svnserve -d -r /data/svndata/
  

  四.svn客户端配置
  (svn client)
  1.下载TortoiseSVN,并默认安装
  http://sourceforge.net/projects/tortoisesvn/files/latest/download?source=dlp
  2.创建版本库:
  例如:
  1).在F盘创建work文件夹并右键选择SVN Checkout,创建svn客户端版本库
DSC0001.png

  

  2).输入svn远程版本库URL,以及本地版本库存放路径
  

DSC0002.png

  3).输入该版本库用户名密码,默认该账户信息明文保存在/data/svndata/www.example.com/conf/passwd内
DSC0003.png

  

  4).创建版本库完成,显示为第一个版本
DSC0004.png

  3.同步版本库
  例如:在windows客户端版本库里有新的文件更新,如何将数据同步到web端
  1).首先,右键该版本库www.example.com目录,选择svn Update
  相当于将svn服务器端的数据同步更新到本地,即获取数据。
DSC0005.png

  

  2).显示更新到第四个版本
DSC0006.png

  3).右键该版本库www.example.com目录,选择svn Commit
  相当于将本地客户端的数据同步提交到svn服务端,即推送数据。
DSC0007.png

  

  4).将需要推送的数据打钩,OK即可完成操作.
DSC0008.png

  5).显示目前为第五个版本
DSC0009.png

  查看是否成功将文件推送到apache虚拟目录
  # cd /usr/local/apache/htdocs
  # pwd
  # ls -l
DSC00010.png

  

  ---------大功告成-----------
  





运维网声明 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-638854-1-1.html 上篇帖子: apache traffic server 缓存服务器快速部署 下篇帖子: Apache tomcat搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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