SVN安装及配置



       SVN安装:yum install subversion   -y
5.1 配置并启动svn  
 第一步建立存储目录
建立svn版本库数据存储根目录(svndata)及用户、密码权限目录(svnpasswd)
        mkdir  -p /application/svndata    数据存储的根目录
        mkdir  -p  /application/svnpasswd   用户、密码 权限目录
     第二步启动SVN
        启动svn服务指定服务的svn根目录
        svnserve  -d  -r  /application/svndata   --pid-file=/application/svndata/svn.pid
        提示:pid 的参数可加可不加
        可以查看svnserver 命令帮助,了解相关启动参数
    [root@localhost /]# svnserve --help

           [root@zentao-svn-sonar ~]# svnserve --help
用法: svnserve [-d | -i | -t | -X] [options]

有效选项:
 -d [--daemon]            : 后台模式
 -i [--inetd]             : inetd 模式
 -t [--tunnel]            : 隧道模式
 -X [--listen-once]       : 监听一次方式(调试用)
 -r [--root] ARG          : 服务的根目录
 -R [--read-only]         : 强制只读;覆盖版本库配置文件
 --config-file ARG        : 从文件 ARG 读取配置
 --listen-port ARG        : 监听端口
                            [方式: daemon, listen-once]
 --listen-host ARG        : 监听主机名称或IP地址
                            [方式: daemon, listen-once]
 -T [--threads]           : 使用线程代替进程 [方式: daemon]
 --foreground             : 在前台运行(调试用)
                            [方式: daemon]
 --log-file ARG           : svnserve 日志文件
 --pid-file ARG           : 写进程 PID 到文件 ARG
                            [方式: daemon, listen-once]
 --tunnel-user ARG        : 隧道用户名(默认是当前UID对应的用户名)
                            [方式: tunnel]
 -h [--help]              : 显示本帮助
 --version                : 显示程序版本信息


查看svn进程
           [root@localhost /]# ps -ef|grep svn

查看端口:
          [root@localhost /]# netstat -lntup|grep svn

建立项目的版本库
      创建一个新的subversion 项目sadoc
        [root@localhost /]# svnadmin --help   命令使用
        [root@localhost /]# svnadmin help create  命令帮助


创建svn的项目实例(svn版本库)
mkdir /application/svndata/sadoc1
svnadmin create /application/svndata/sadoc1         #在上面创建的svn数据目录下,创建项目

tree /application/svndata

[root@localhost /]# cd /application/svndata/sadoc/conf/
       [root@localhost conf]# ll
               total 12
               -rw-r--r-- 1 root root 1080 Aug 31 17:40 authz 权限管理文件
               -rw-r--r-- 1 root root  309 Aug 31 17:40 passwd  用户密码 文件
               -rw-r--r-- 1 root root 2279 Aug 31 17:40 svnserve.conf  主配置文件
           [root@localhost conf]# cp svnserve.conf svnserve.conf.ori 备份主配置文件

[root@localhost conf]# cp authz passwd /application/svnpasswd/   将模板文件拷贝过去
 [root@localhost conf]# cd /application/svnpasswd/
 [root@localhost svnpasswd]# chmod 700 *
          [root@localhost svnpasswd]# ll
          total 8
          -rwx------ 1 root root 1080 Aug 31 17:54 authz
          -rwx------ 1 root root  309 Aug 31 17:54 passwd
root@zentao-svn-sonar conf]# cp svnserve.conf ./svnserve.conf.back

          [root@localhost conf]# cd /application/svnpasswd/
         [root@localhost svnpasswd]# chmod 700 *
         
         
         [root@centos conf]# vim svnserve.conf
修改的内容如下:
 12 anon-access = none    (匿名用户只读,也可以设成none,不可访问)
 13 auth-access = write      
 20 password-db = /application/svnpasswd/passwd  #这样修改的目的是便于统一管理,以后所有的项目密码都放在这个目录下  (svn密码文件,如果有多个项目,建议将该文件放到公共位置)

 27 authz-db = /application/svnpasswd/authz    #这样修改的目的是便于统一管理,以后所有的项目认证都放在这个目录下了(目录权限文件,建议同上)
     real = My First Repository    (认证域,相同认证域下的项目使用相同的passwd和authz,暂时不用理会)

提示:
           1. 等号前为svn账号,等号后为svn密码,密码是明文密码,注意密码权限
           2. 更改svnserver.conf 时,需要重启svn,更改authz,passwd文件时不需要重启svn服务

              接下来,passwd文件中添加明文的用户名/密码。authz文件中设置别名和用户组,并针对不同目录    对不同的用户或组分配权限(r,w,rw)。设置权限时,用户组前面要加@,别名前面要加&。
    这样配置好后,就可以通过svn://来访问了。



启动
    svnserve -d -r /application/svndata/
关闭svn
    kill -9 `ps -ef |grep svn|grep -v grep|awk '{print $2}'     -v: 排除grep

[root@SVN svnpasswd]# cat authz

               [aliases]
       # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average


[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe


# [/foo/bar]
# harry = rw
# &joe = r
# * =


# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[sadoc1:/]
zhang = rw
qiong = rw
[root@SVN svnpasswd]# 
===============
上面是svn的权限配置文件,
注意:
权限配置文件中出现的用户名必须要在用户配置文件中出现,也就是必须要在passwd 文件中定义。
对权限配置文件的修改使立刻生效的,不必重启svn服务器
用户组格式:
[groups]
组名 = username1,username2,username3,...
其中,1个用户组可以包含一个或多个用户,用户和用户之间用逗号分隔


版本库目录
 [<版本库>:/项目/目录]
 @<用户组名> = <权限>
 <用户组> = <权限>
 
 其中,方框内部分有多种写法
 [/],表示根目录及根目录下面的目录,根目录是svnserve启动时指定的,我们指定为/application/svndata,[/]就表示对全部版本库设置权限。
 [repos:/]表示对版本库repos设置权限
 [repos:/sadoc]表示对版本库repos中的sadoc项目设置权限;
 [repos:/sadoc]/lvnian]表示对版本库repos中的sadoc项目的lvnian目录设置权限;
 
 权限主体可以是用户组、用户和*,用户组在前面需要加@,*表示全部用户
 authz中每个参数都要顶格写,开头不能有空格
 对于组,必须要以@开头加组名,用户则不需要加@开头


 客户端下载地址:
 http://tortoisesvn.net/downloads.html


 在windows中下安装就一路下一步安装。即可
 
 svn客户端连接服务器的方法,账号及密码:
 svn://IP/svn项目名称
 如
 svn://ip/sadoc1
 用户名:lvnian01
 密码:lvnian


5.7  windows客户端软件测试
http://tortoisesvn.net/downloads.html 下载svn客户端软件
安装好客户端之后,在桌面建立一个svndata的文件夹选择svndata文件夹,选择checkout
   
 
点击ok,输入用户名和密码就 可以提交和下载文件
 


SVN+ apache

yum -y install mod_dav_svn

配置  1.创建版本库 
  # mkdir -pv /svn/date  
--创建主目录   
 # svnadmin create /svn/date/www  
 --创建仓库 
 2.更改权限   
 # chmod -R 700 /svn/date/  
 --修改库的其他人无权限   
# chown -R apache:apache /svn/date/  
--修改库的所属 
3.更改apache配置 
  #vim /etc/httpd/conf/httpd.conf  
 加入以下内容
 <Location /svn>   (apache下的位置)
      DAV svn 
      SVNPath /home/svn/myproject   (指明资源库的路径)
      或
      SVNParentPath /home/svn   (如果有多个库,使用该选项)
      SVNListParentPath on     (打开这个选项可以列出ParentPath下面的所有库)
      AuthType Basic   (认证类型为基本认证 )
      AuthName "Subversion Repository"    (认证名称,将在IE界面弹出一个对话框,其标题)
      AuthUserFile /etc/apache2/dav_svn.passwd    (认证密码文件)
      # AuthzSVNAcessFile /etc/apache2/dav_svn.authz     (目录权限文件)
      Require valid-user    (要求验证用户,即不能匿名访问)
    </Location>

wKioL1ZFcciQjQ0JAABEOwUg01o975.png
 5. 通过sudo htpasswd -c /etc/apache2/dav_svn.passwd abc创建用户abc并按照提示设置密码,网页认证的时候使用该用户名和密码登录。后面再添加用户的时候去掉-c选项。
    配好以后就可以通过Http页面来访问SVN了。



# service httpd start
# svnserve -d -r /svn/date/


报错处理:
           正在启动 httpd:httpd: Could not reliably determine the server's fullyqualified domain name, using localhost.localdomain forServerName
(98)Address already in use: make_sock: could not bind to address[::]:80
(98)Address already in use: make_sock: could not bind to address0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs


解决方法:杀了从启

ps -ef | grep httpd |awk '{print $2}' | xargs kill -9


2.如果出现,这样的错误信息,“svnserve: 不能绑定服务器套接字: 地址已经被使用”
那先把svnserve进程干掉。
具体做法是
$ ps -aux  #查看进程,svnserve的pid为16663
$ kill -9 16663 #干掉svnserve
再次运行$ svnserve -d -r /var/www/svn