我搭建linux下的svn

来源:互联网 发布:centos 蓝牙鼠标 编辑:程序博客网 时间:2024/06/16 13:35

昨天帮朋友做了个svn。,以前都没写日志的习惯,先记录,给新手。

、先yum吧
      yum install subversion
      如果yum成功了,使用
      svnserve --version 查看版本,有就成功。
      添加版本库
      mkdir  /svn/svndata
     svnadmin create /svn/svndata/版本库名       建议英文
       添加权限
      chmod -R g+rws 版本库名
    或者chmod -R 777 版本库名
    因为后面我们会用authz来控制,所以这里的权限不用很死。
      
      三种访问方法
1、apache 80
      如果使用apache,添加
      LoadModule dav_svn_module modules/mod_dav_svn.so
  LoadModule authz_svn_module modules/mod_authz_svn.so   (注意先后顺序)
 到httpd.conf里面,当然,要查看modules里面有木有,如果没有这两个so
 可以使用 yum list mod_dav_svn  yum install mod_dav_svn
 后面就是写配置文件,有两个种,一是直接写在httpd.conf后面,一种可能在conf.d/subversion.conf
 直接修改 subversion.conf也可以
 
我的svn配置文件如下:
<Location /svn/>                #结尾必须加"/"    http://ip/svn/  1.3版本还是多少,就一定要加了,不加没有根目录了。
 
   DAV svn
      SVNListParentPath on      #显示根目录
      SVNParentPath /svn/svndata   #svn仓储目录
     # Limit write permission to list of valid users.
      # Require SSL connection for password protection.
      # SSLRequireSSL
      AuthType Basic
      AuthName "Subversion Repositories"
      AuthUserFile /svn/svnadmin/test/passwd.cfg
      AuthzSVNAccessFile  /svn/svnadmin/test/authfile.cfg    #想要所有人都可以看到根目录,必须添加 [/]  ×=r
      Require valid-user
</Location>
RedirectMatch ^(/svn)$ $1/             #  http://ip/svn 跳转到http://ip/svn/

注:这里的passwd和authz都是调用的外层的,这样,所以版本库都是使用的同样的权限和密码控制,当然,每个版本库可以使用单独调用配置文件,在版本库/conf/下面,不过管理就麻烦了,不建议这么使用。
创建用户
这里调用apache,所以用htpasswd
#htpasswd   /svn/svnadmin/test/passwd.cfg  abc  ×第一次建立需加参数-c
 调整authfile里的权限,这个自己写,很简单,不会看下面svn 3690里面怎么写的
  浏览器打开方式 http://ip/svn/  
2、svn 3690
    #  svnadmin create /svn/svndata/kuming
 配置svn配置文件(为了方便管理,这里多个库调用相同的配置文件。)
#每个版本库创建之后都会生成svnserve.conf主配文件,
#vim /svn/svndata/kuming/conf/svnserve.conf
里面发现里面有很多写好的注释。一般 
anon-access = none
auth-access = write
    password-db = /svn/svndata/conf/passwd
    authz-db = /svn/svndata/conf/authz
    realm =kuming
####这里的conf/authz、passwd使用外层,调用相同配置,方便。

这里就写完了,如果去创建passw
#vim /svn/svndata/conf/passwd
[users]
     user1 = password1
     user2 = password2
     user3 = password3
     user4 = password4

#vim  /svn/svndata/conf/authz
[groups] #设置组
     group1 = user1,user2 #多用户用逗号隔开
    [/] #根目录权限设置(就是“kuming”这个文件夹)
    user3 = rw #用户1权限是:可读写
    user4 = r #用户2权限是:可读,不可写
    user = #什么都没写代表没有任何权限
   @group1 = rw #设置组权限
   [kuming:/123] #设置根目录下“123”文件夹的权限
   #说明“123”这个文件件怎么创建?这是在SVN服务器配置好之后,创建一个权限很高的用户在客户端登录SVN 
   #然后创建一个文件夹“123”。

以上差不多把所有的authz例子都写进去了,这段是抄袭的。
启动服务器
   # svnserve -d -r /svn/svndata
   -d表示以daemon方式(后台运行)运行
   -r /svndata指定根目录是/svndata
 查看netstat -ntl |grep 3690 或者 ps aux | grep svnserve    查看服务,端口:3690
    有就成功了
关闭SVN 服务器
# killall svnserve
浏览方法:打开版本库浏览器输入:svn://ip-addr/kuming/文件夹名
赠送一个sh

# vim svn
# chmod +x svn

#!/bin/bash
case "$1" in
start)
svnserve -d -r /svndata
svnport=`netstat -natp | grep svnserve | awk -F: '{print $4}' | awk 'NR==1'`
if [ $svnport -eq 3690 ]
then
echo "SVN Server Already Runnning. Port:3690"
else
echo "SVN Server Does Not Start"
fi
;;
reload)
svnport=`netstat -natp | grep svnserve | awk -F: '{print $4}' | awk 'NR==1'`
if [ $svnport -eq 3690 ]
then
killall svnserve && svnserve -d -r /svndata
echo "Reload OK"
else
echo "SVN Server Is Not Running"
fi
;;
stop)
killall svnserve
echo "SVN Server Has Been Stopped"
;;
status)
svnport=`netstat -natp | grep svnserve | awk -F: '{print $4}' | awk 'NR==1'`
pid=`ps aux | grep svnserve | grep -v "grep" | awk '{print $2}'`
if [ $svnport -eq 3690 ]
then
echo "SVN Server (pid:$pid) 正在运行..."
else
echo "SVN Server 停止运行..."
fi
;;
*)
echo "$0: Usage: $0 {start|status|stop|reload}"
exit 1
;;
esac
该脚本参数start|status|stop|reload,很简单,不用也可以。

3、apache SSL443
   这个以后在说,不难。

二、建议使用web管理,自己懂,不一定别人也懂,
  做个if.svnadmin或者 svnmanger,个人推荐if.svn,php的,比较好看,呵呵
    做完后,直接扔给新人。ok了。其中配置if.svnadmin时,里面的密码和权限配置文件,和apache保持一致,很简单,没什么好说的。