zoukankan      html  css  js  c++  java
  • Linux(centos)搭建SVN服务器完美方案及遇到的问题--费元星站长

    QQ:971751392 (欢迎交流)

    linux搭建SVN服务器

    安装步骤如下:
    1、yum install subversion
     
    2、输入rpm -ql subversion查看安装位置,如下图:
     
    我们知道svn在bin目录下生成了几个二进制文件。
    输入 svn --help可以查看svn的使用方法,如下图。
     
     
     
    3、创建svn版本库目录
    mkdir -p /var/svn/svnrepos
     
    4、创建版本库
    svnadmin create /var/svn/svnrepos
    执行了这个命令之后会在/var/svn/svnrepos目录下生成如下这些文件
    linux(centos)搭建SVN服务器 - 小木 - 青番茄乐园
     
    5、进入conf目录(该svn版本库配置文件)
    authz文件是权限控制文件
    passwd是帐号密码文件
    svnserve.conf SVN服务配置文件
     
    6、设置帐号密码
    vi passwd
    在[users]块中添加用户和密码,格式:帐号=密码,如dan=dan
     
    7、设置权限
    vi authz
    在末尾添加如下代码:
    [/]
    dan=rw
    w=r
    意思是版本库的根目录dan对其有读写权限,w只有读权限。
     
    8、修改svnserve.conf文件
    vi svnserve.conf
    打开下面的几个注释:
    anon-access = read #匿名用户可读
    auth-access = write #授权用户可写
    password-db = passwd #使用哪个文件作为账号文件
    authz-db = authz #使用哪个文件作为权限文件
    realm = /var/svn/svnrepos # 认证空间名,版本库所在目录
     
    9、启动svn版本库
    svnserve -d -r /home/svn/svnrepos
    查看svn 版本 /usr/bin/svnversion --version

     问题:

     svnserve: 不能绑定服务器套接字: 地址已在使用

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

    问题:2自动启动
    vi /etc/rc.local
    在最后一行加上
    svnserve -d -r /repo/aaa

    svnserve.conf:这个最详细,注意每个配置前面都不能有空格

    1 安装SVN

    官网下载:http://subversion.apache.org/packages.html

    SVN客户端:TortoiseSVN,官网下载:http://tortoisesvn.net/downloads.html

    # yum install subversion:

    1.新建一个目录用于存储SVN所有文件

    1. # mkdir /svn  

    2. 新建一个资源仓库

    1. # svnadmin create /svn/project   
    2. # ls /svn/project/   
    3. conf db format hooks locks README.txt  

    目录用途说明:

    l hooks目录:放置hook脚本文件的目录

    l locks目录:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端

    l format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号

    l conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)

    3. 配置svn服务的配置文件svnserver.conf文件

    1. # vi /svn/project/conf/svnserve.conf   
    2. [general]   
    3. anon-access = none   
    4. auth-access = write   
    5. password-db = /svn/project/conf/passwd   
    6. authz-db = /svn/project/conf/authz   
    7. realm = My Test Repository #这是个提示信息  

    保存

    4. 添加两个访问用户及口令

    1. # vi /svn/project/conf/passwd   
    2. [users]   
    3. xiaoran.shen = 123456   
    4. test1 = 123456   
    5. test2 = 123456 

    保存

    注意:对用户配置文件的修改立即生效,不必重启svn服务。

    5. 配置新用户的授权文件

    1. # vi /svn/project/conf/authz   
    2. [groups]   
    3. admin = xiaoran.shen,test1   
    4. user = test2   
    5. [/]   
    6. @admin = rw   
    7. @user = r   
    8. * =  

    保存

    格式说明:

    版本库目录格式:

    [<版本库>:/项目/目录]

    @<用户组名> = <权限>

    <用户名> = <权限>

    / 表示对根目录(即/svn/project目录)下的所有子目录范围设置权限;

    [/abc] 表示对资料库中abc项目设置权限;

    创建一个admin组,组成员包括xiaoran.shen和test1

    创建一个user组,成员只有test2;

    admin组对目录有读写权限;

    单个用户test2有读写权限;

    *=表示除了上面设置的权限用户组以外,其他所有用户都设置空权限,空权限表示禁止访问本目录,这很重要一定要加上。

    注意:对权限配置文件的修改立即生效,不必重启svn。

    6. 启动svn服务

    svnserve -d -r /svn/project/

    注意:不要使用系统提供的 /etc/init.d/svnserve start 来启动,因为系统默认的启动脚本中没有使用 –r /svn/project参数指定一个资源。这种情况下启动的svn服务,客户端连接会提示“svn: No repository found in 'svn://192.168.11.229/project' ”这样的错误。

    默认svn服务器端口是3690。

    杀死svn服务:

    1. # ps -ef|grep svn   
    2. root 4642 1 0 16:08 ? 00:00:00 svnserve -d -r /svn/project/   
    3. root 4692 3676 0 16:13 pts/2 00:00:00 grep svn   
    4. # kill -9 4642  

    若要使用/etc/init.d/svnserve 脚本,可以修改start()函数部分,如下:

    1. start() {   
    2. [ -x $exec ] || exit 5   
    3. [ -f $config ] || exit 6   
    4. echo -n $"Starting $prog: "   
    5. daemon --pidfile=${pidfile} $exec $args -r /svn/project   
    6. retval=$?   
    7. echo   
    8. [ $retval -eq 0 ] && touch $lockfile   
    9. return $retval   
    10. }   

    完成 

    2 使用客户端连接

    2.1 使用windows的客户端

    打开TortoiseSVN Repository Browser工具

    在URL中输入:

    svn://192.168.11.229回车,提示输入用户名和口令

    2.2 使用Linux下的命令行

    1. # svn co svn://192.168.11.229  

    3 FAQ

    3.1 命令行方式连接,提示svn: No repository found in 'svn://192.168.11.229/project'错误?

    解决:启动svn服务的时候没有使用-r /svn/project参数,没有指明资源库的具体路径。使用# svnserve -d -r /svn/project/ 命令来启动就可以了,不要使用/etc/init.d/svnserver脚本。

    3.2 执行命令# svn co svn://192.168.11.229/project时提示“svn: Authorization failed”错误?

    解决:一般这种授权失败的错误原因都来自conf/authz文件的配置

    正确的配置如下:

    1. [groups]   
    2. admin = xiaoran.shen,test1   
    3. user = test2   
    4. [/]   
    5. @admin = rw   
    6. @user = rw   
    7. * =  

    保存

    myeclipse 

  • 相关阅读:
    Python自动化运维答疑解惑
    MySQL基础
    Centos下常用MySQL语法
    PDO
    生成静态页面的好处
    页面纯静态
    源码安装LNMP
    Nginx URL重写(rewrite)
    防盗链
    自定义菜单
  • 原文地址:https://www.cnblogs.com/feiyuanxing/p/4813088.html
Copyright © 2011-2022 走看看