连锁当家运维手册


CentOS-6.3安装配置SVN

<p>CentOS-6.3安装配置SVN</p> <p>zhoulf 2013-02-02 原创 安装说明 系统环境:CentOS-6.3 安装方式:yum install (源码安装容易产生版本兼容的问题) 安装软件:系统自动下载SVN软件</p> <p> </p> <p>检查已安装版本  ''#检查是否安装了低版本的SVN [root@localhost /]# rpm -qa subversion</p> <p>''#卸载旧版本SVN [root@localhost modules]# yum remove subversion</p> <p>安装SVN [root@localhost modules]# yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql</p> <p>确认已安装了svn模块  [root@localhost /]# cd /etc/httpd/modules [root@localhost modules]# ls | grep svn mod_authz_svn.so mod_dav_svn.so</p> <p>验证安装  检验已经安装的SVN版本信息  [root@localhost modules]# svnserve --version</p> <p>svnserve,版本 1.6.11 (r934486) 编译于 Jun 23 2012,00:44:03 版权所有 (C) 2000-2009 CollabNet。  Subversion 是开放源代码软件,请参阅 <a href="http://subversion.tigris.org/">http://subversion.tigris.org/</a> 站点。  此产品包含由 CollabNet(<a href="http://www.Collab.Net/">http://www.Collab.Net/</a>) 开发的软件。 </p> <p>下列版本库后端(FS) 模块可用: </p> <ul> <li>fs_base : 模块只能操作BDB版本库。 </li> <li>fs_fs : 模块与文本文件(FSFS)版本库一起工作。 </li> </ul> <p>Cyrus SASL 认证可用。 </p> <p>代码库创建  SVN软件安装完成后还需要建立SVN库  [root@localhost modules]# mkdir -p /data/svn/repositories [root@localhost modules]# svnadmin create /opt/svn/repositories 执行上面的命令后,自动建立repositories库,查看/opt/svn/repositories 文件夹发现包含了conf, db,format,hooks, locks, README.txt等文件,说明一个SVN库已经建立。 </p> <p>配置代码库  进入上面生成的文件夹conf下,进行配置  [root@localhost modules]# cd /opt/svn/repositories/conf</p> <p>用户密码passwd配置  [root@localhost password]# cd /opt/svn/repositories/conf [root@admin conf]# vi + passwd 修改passwd为以下内容: </p> <p>[users]</p> <h1>harry = harryssecret</h1> <h1>sally = sallyssecret</h1> <p>zhoulf=123456  权限控制authz配置  [root@admin conf]# vi + authz 目的是设置哪些用户可以访问哪些目录,向authz文件追加以下内容: </p> <p>''#设置[/]代表根目录下所有的资源  [/] zhoulf=rw  服务svnserve.conf配置  [root@admin conf]# vi + svnserve.conf</p> <p>追加以下内容: </p> <p>[general] ''#匿名访问的权限,可以是read,write,none,默认为read anon-access=none ''#使授权用户有写权限  auth-access=write ''#密码数据库的路径  password-db=passwd ''#访问控制文件  authz-db=authz ''#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字  realm=/opt/svn/repositories  配置防火墙端口  [root@localhost conf]# vi /etc/sysconfig/iptables 添加以下内容:  -A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT 保存后重启防火墙  [root@localhost conf]# service iptables restart</p> <p>启动SVN svnserve -d -r /opt/svn/upyuan</p> <p>查看SVN进程  [root@localhost conf]# ps -ef|grep svn|grep -v grep root     12538     1  0 14:40 ?        00:00:00 svnserve -d -r /opt/svn/repositories</p> <p>检测SVN 端口  [root@localhost conf]# netstat -ln |grep 3690 tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN</p> <p>停止重启SVN [root@localhost password]# killall svnserve    //停止  [root@localhost password]# svnserve -d -r /opt/svn/repositories  // 启动 </p> <p>测试  SVN服务已经启动,使用客户端测试连接。  客户端连接地址:svn://192.168.15.231 用户名/密码: zhoulf/123456 测试创建文件夹等操作。</p> <p>重新安装svn的方法(原有文件夹在/data/svn/9isoft目录下)</p> <p>首先yum install  mod_dav_svn</p> <p>然后打开端口3690 </p> <p>最后 svnserve -d -r /data/svn/9isoft   </p> <p>centos开机自动启动SVN服务的方法</p> <p>1、编辑rc.local文件 </p> <p>vi /etc/rc.d/rc.local</p> <p>2、加入如下启动命令 </p> <p>svnserve -d -r /data/svn/repositories   </p> <p>svnserve -d -r /data/svn/upyuan</p> <p>客户端选择文件夹后  选择relocate</p> <p>3 svn停止</p> <p>killall svnserve</p> <p>svn子目录权限控制 现在有四个小组分别对应四个子目录; olddev 核心小组可以访问所有 doc  文档小组只能访问doc upserver 服务器自动部署小组 app app开发小组 只能访问app html 前端开发 只能访问html</p> <p>[groups] olddev=younger,chenpeng,namy,wangqr doc=team1,team2,team3,gaoby,jdw,tongy upserver=upyuan app=app,star html=html ''# harry_sally_and_joe = harry,sally,&amp;joe</p> <p>[/] @olddev = rw @doc = rw @upserver = rw @app=rw @html=rw</p> <p>[/php]   @olddev=rw @upserver = rw @doc= @app= @html= [/doc] @olddev=rw @upserver = @doc=rw @app= @html=</p> <p>[/app] @olddev=rw @upserver = @doc= @app=rw @html=</p> <p>[/html] @olddev=rw @upserver = @doc= @app= @html=rw</p> <p>'' # [repository:/baz/fuz] '' # @harry_and_sally = rw '' # * = r</p> <p>svn自动提交到web服务器 首先在服务器文件部署在   /var/www/html/v3.1/</p> <p>'' # svn co svn://svn.9isoft.com --username upyuan --password update789</p> <p>修改hooks目录下的文件;post-commit 并且赋予可执行权限</p> <p>export LANG=en_US.UTF-8  </p> <p>cd /var/www/html/v3.1/svn.9isoft.com</p> <p>/usr/bin/svn update --username &quot;upyuan&quot; --password &quot;update789&quot; --no-auth-cache </p> <p>cent OS 6.4下的SVN服务器构建 一搭建好SVN服务器只能管理一个工程,如何做到不同的项目,多个成员的权限管理分配呢? 一 需求   开发服务器搭建好SVN服务器,不可能只管理一个工程项目,如何做到不在一个项目中的开发人员不能访问其它项目中的代码,做好技术保密工作。   代码仓库有三个仓库:project1,project2,project3   假设人员有6个人:eg1,eg2,eg3,eg4,eg5,eg6   eg1,eg2,只能访问project1;   eg3,eg4,只能访问project2;   eg5,eg6,只能访问project3; 二 实现   在你的仓库路径下:假如是/home/sv 1 2 3 4 5 6 7 8 9 10 11 cd /data/svn //创建三个代码仓库 svnadmin create project1 svnadmin create project2 svnadmin create project3 //把两个权限配置文件复制到SVN //根路径下,统一管理所有代码仓库 cd/projcet1/conf cp authz passwd /data/svn //打开配置文件 vi svnserve.conf</p> <p> 修改成如下: 1 2 3 4 5 anon-access = none               //禁止匿名访问 auth-access = write password-db = /data/svn/passwd   //统一使用密码文件 authz-db = /data/svn/authz realm =   project1               //权限域名,很重要,写你的工程名  分别修改project2的svnserve.conf  和上面一样,最后一行分别写 1 2 3 4 5 anon-access = none               //禁止匿名访问 auth-access = write password-db = /data/svn/passwd   //统一使用密码文件 authz-db = /data/svn/authz realm =   project2              //权限域名,很重要,写你的工程名</p> <p>分别修改project3的svnserve.conf  和上面一样,最后一行分别写 1 2 3 4 5 anon-access = none               //禁止匿名访问 auth-access = write password-db = /data/svn/passwd   //统一使用密码文件 authz-db = /data/svn/authz realm =   project3              //权限域名,很重要,写你的工程名</p> <p>修改两个权限管理文件: passwd 1 2 3 4 5 6 7 8 //用户名 = 密码 [users] eg1 = 123 eg2 = 123 eg3 = 123 eg4 = 123 eg5 = 123 eg6 = 123 authz 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [groups]                  //分组 admin = eg1,eg2 guest = eg3,eg4 guset1 = eg5,eg6 [/]                      //管理者拥有所有读写权限</p> <ul> <li>= @admin = rw [project1:/]                 //工程1的访问控制,guest1,2无法访问 @admin = rw 或 eg1 = rw eg2 = rw [project2:/]           @guest = rw 或 eg3 = rw eg4 = rw [project3:/] @guest1 = rw 或 eg5 = rw eg6 = rw</li> </ul> <p>三 重启 1 svnserve -d -r /data/svn   停止命令 1 killall svnserve   实际测试:   各个组成员只能访问自己的项目,无权限查看别人的项目   只有管理员才能查看所有项目工程</p>

页面列表

ITEM_HTML