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

[经验分享] ubuntu下安装svn 服务器

[复制链接]

尚未签到

发表于 2018-5-5 13:19:08 | 显示全部楼层 |阅读模式
  1、
  导入      客户端

  ---------->   ----------------->
  代码库    SVN库      本地
  <----------   <-----------------

  post-commit同步    commit提交
  sudo apt-get install apache2 subversion libapache2-svn
  (centos下安装:
  yum -y install httpd subversion
  yum -y install mod_dav_svn)
  sudo mkdir /home/svn/myproject
  sudo svnadmin create /home/svn/myproject
  sudo vim /home/svn/myproject/conf/svnserve.conf

  •   anon-access = read //允许匿名登录
  •   auth-access = write
  •   password-db = passwd
  去掉前面的#,不要有空格
  sudo svnserve -d -r /home/svn //启动svn服务
  xp客户端验证:svn://192.168.10.67/myproject
  2、
  如果将/home/svn/myproject/conf/svnserve.conf 文件中
  anon-access = read 修改为
  anon-access = none
  则需要用户名密码才能登录
  添加用户名密码
  sudo vim /home/svn/myproject/conf/passwd
  user01 = user01
  xp客户端验证:svn://192.168.10.67/myproject
  输入用户名密码即可
  3、
  如果将/home/svn/myproject/conf/svnserve.conf 文件中
  # authz-db = authz 修改为
  authz-db = authz
  则在passwd中添加用户名密码后,还要在authz文件中添加权限
  sudo vim /home/svn/myproject/conf/authz
[groups]

  admin = user01,user02 //admin是组名,随便起
[myproject:/] //权限控制的目录

  @admin = rw //权限
  4、
  假如我们的文档或者代码或者其他数据放在/home/myproject文件夹中,
  cd /home/myroject
  sudo mkdir user01
  cd user01 && touch 1111
  cd /home/myroject
  sudo mkdir user02
  cd user02 && touch 2222
  然后将这么目录导入到刚才建立的SVN库中
  sudo svn import -m "first import" /home/myproject file:///home/svn/myproject
  xp客户端验证:svn://192.168.10.67/myproject
  可以看到user01 user02两个文件夹及文件夹里面的数据
  

  5、修改user01的权限,不让他看到user02的文件夹
  sudo vim /home/svn/myproject/conf/authz
[groups]

  admin = user01
  develop = user02
[myproject:/]

  @admin = rw
  

[myproject:/user02]

  @admin =
  

  xp客户端验证:svn://192.168.10.67/myproject
  此时只能看到user01 一个文件夹及文件夹里面的数据,而无法看到user02的文件夹及数据
  6、客户端提交并同步
  在本地的xp测试机新建文件夹-user04 然后svn commit 提交的服务器端;
  在服务器端也可以在authz中设置进行目录权限控制。
  svn的服务器上是看不到你上传的东西的,而是提交一次svn会自动生成一个版本文件,这个文件
  是经过处理的,同样也看不到原文件。
  7、svn钩子配置
  为了保证/home/myroject文件夹下和SVN库中的数据同步,做一下配置
  ls -l /home/svn/myproject/hooks
  

  start-commit 提交前触发事务
  pre-commit 提交完成前触发事务
  post-commit 提交完成时触发事务
  pre-revprop-change 版本属性修改前触发事务
  post-revprop-change 版本属性修改后触发事务
  通过上面这些名称编写的脚本就就可以实现多种功能了,相当强大
  第一步:手工创建post-commit
  sudo vim post-commit
  


  •   #!/bin/sh
  •   #export LANG = en_US.UTF-8
  •   export LC_ALL=en_US.UTF-8 //这个俩个不一定哪个好使- -
  •   sudo svn update /home/web/app/ --username admin --password admin --force --no-auth-cache
  

  第二步:将SVN库中代码导出到代码目录即可。
  svn update /home/web/app/ --username admin --password admin --force --no-auth-cache
  ---------------------
  我在客户端测试,还是有报错,错误如图:
  

DSC0000.png

  应该还是没有权限,但在服务器上执行:
   sudo svn update /home/myroject/ --username admin --password admin --force --no-auth-cache是正常的
  于是对post-commit做了修改:

  •   echo "123456" | sudo -S svn update /home/myroject/ --username admin --password admin --force --no-auth-cache
  其中“123456”为服务器密码,让自动输入服务器密码,这次客户端测试正常。但总感觉还是哪儿有点问题~~
  svn服务器apache (该种方法还没有应用和测试)
  现在我们使用apache作为svn服务器,apache支持http协议通信,配置也比较简单,主要是权限配置。
  首先安装好apache。然后进去/etc/apache2/conf,修改apache2.conf,在下面加入
  <Location "/myrepos">
  DAV svn
  SVNPath /home/myrepos
  AuthType Basic
  AuthName "Your repository name"
  AuthUserFile /etc/subversion/passwd
  <LimitExcept GET PROPFIND OPTIONS REPORT>
  Require valid-user
  </LimitExcept>
  </Location>
  其中/etc/subversion/passwd这个文件中保存的是用户信息,这个文件需要我们新建。
  然后添加一个用户
  $ sudo htpasswd /etc/subversion/passwd tester
  你需要把 repo 所在的目录和文件的所有权都改成系统中操作 Apache 的用户,这样在 commit 的时候才会被 Apache 认可。在 Ubuntu 中,这个用户叫 www-data
  $ sudo chown -R www-data /home/myrepos
  然后我们重启apache
  $ sudo /etc/init.d/apache2 restart
  最后我们测试一下,在浏览器里输入http://localhost/myrepos/
  看见了工程目录就成功了。
  在局域网中,也可以访问。
  $ svn checkout http:// #svn服务器ip# /myrepos
  #版本控制
  =================================
  1、报错:invalid authz configuration
  authz配置文件有问题——
  我出现问题原因:删除某个目录后,authz配置文件没有删除;删除某个定义的组后,权限分配中没有删除这个组。
  解决:在authz配置文件中删除无效的、不存在的目录;彻底清除已删除的组。
  +++++++++++++++++++++++++++++++++++++
  1、Linux服务器上添加文件
  A、直接在代码库中添加文件:touch 111.txt

  B、将文件添加到版本库:svn add 111.txt
  C、将改动的文件提交到版本库:svn commit -m "add 111 file to test" --no-unlock 111.txt
  D、客户端下载或者更新查验。
  ============
  mkdir -p /home/svn/myproject
  svnadmin create /home/svn/myproject/aixue
  svnserve -d -r /home/svn
  客户端验证则输入:svn://192.168.10.107/myproject/aixue
  =============
  删除“.svn”的目录
  find / -type d -name ".svn" | xargs rm -rf
  find . -name .svn -type d -exec rm -fr {} \;
  

  -iname 同-name区别: -i 忽略大小写
  

运维网声明 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-456201-1-1.html 上篇帖子: Ubuntu 下 第一步 SSH设置 下篇帖子: Ubuntu第二步 网卡基本配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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