linux安装svn(非apache集成)

     svn支持三种方式的安装,分别是:svnserve服务器、穿越ssh隧道的svnserve服务器、Apache的HTTP服务器。
三种服务器的选择(建议下载一本svnbook查看,在第六章服务配置中有详细描述):
①svnserve服务器:
    优点: 设置快速简单;网络协议是有状态的,比WebDAV快很多;不需要在服务器创建系统账号;不会在网络传输密码。
    缺点:没有任何类型的日志,甚至是错误;没有内置的web浏览(必须单独安装WEB服务器,以及版本库浏览软件,来增加此功能)
②穿越ssh隧道的svnserve服务器:
    优点:网络协议是有状态的,比WebDAV快很多;你可以利用现在的SSH账号和用户基础;所有网络传输是加密的。
    缺点:没有一个认证方法可以选择;没有任何类型的日志,甚至是错误;需要用户在同一个系统组,或者使用共享SSH密钥;如果使用不正确,会导致文件权限问题。
③Apache的HTTP服务器
    优点:允许 Subversion 使用已经集成到 Apache 的多种用户认证系统;不需要在服务器创建系统帐号;完全的 Apache 日志;网络传输可以通过SSL加密;HTTP(S) 通常可以穿越公司防火墙;内置通过浏览器访问版本库;版本库可以作为网络磁盘加载,实现透明的版本控制;
    缺点:比svnserve慢很多,因为HTTP是无状态的协议,需要更多的传递;初始设置可能复杂。
在这里讲解一下配置svnserve服务器,即第一种模式,如下:
一、下载svn工具包。
    在这里搭建svnserve服务器,需要两个支持包,分别是:subversion-1.6.19.tar.gz 和 subversion-deps-1.6.19.tar.gz
    下载地址为:http://subversion.apache.org/download/ ,在这个页面开始是最新版本的svn。我们这里用下面的1.6版本svn。
二、将tar包上传服务器并解压安装。
    ①将subversion-1.6.*.tar.gz 和 subversion-deps-1.6.*.tar.gz上传到服务器。
    ②解压,请按照描述的过程解压:
        a、首先解压subversion包:tar -zxvf subversion-1.6.*.tar.gz 
        b、再次解压subversion-deps包:tar -zxvf subversion-deps-1.6.*.tar.gz
    注意:subversion包 和 subversion-deps包需要解压到同一个目录中,这是解压过程中特别需要注意的。并且需要先解压subversion包,然后再解压 subversion-deps包。
三、编译安装。
    ①预编译:./configure --prefix=/usr/local/svn --without-berkeley-db --with-zlib=/usr/local/zlib(注:以svnserve方式运行,不加apache编译参数。以fsfs格式存储版本库,不编译berkeley-db)
    ②编译安装:make && make install。
四、测试安装是否成功。
    运行指令:/usr/local/svn/bin/svn --version。这时如果成功的话,提醒如下信息:
svn,版本 1.6.19 (r1383947)
     可使用以下的版本库访问模块:
* ra_neon : 通过 WebDAV 协议使用 neon 访问版本库的模块。
  - 处理“http”方案
* ra_svn : 使用 svn 网络协议访问版本库的模块。  - 使用 Cyrus SASL 认证
  - 处理“svn”方案
* ra_local : 访问本地磁盘的版本库模块。
  - 处理“file”方案
* ra_serf : 通过 WebDAV 协议使用 serf 访问版本库的模块。
  - 处理“http”方案
  - 处理“https”方案
五、配置一个svn工作目录,并设置登陆账号、密码以及权限。
    ①建立工作目录库,可以建立多个。如下:mkdir -p /opt/svndata/test1 (mkdir -p /opt/svndata/test2)
    ②建立版本库,如下:/usr/local/svn/bin/svnadmin create /opt/svndata/test1 (/usr/local/svn/bin/svnadmin create /opt/svndata/test2)
       创建完成后,查看目录下(即/opt/svndata/test1下)都是有那些目录和文件如下:conf  db   format   hooks  locks  README.txt
    ③进入conf文件夹,设置svnserve的配置文件、用户密码以及用户权限
        a、编辑svnserve.conf(svnserve配置文件):vi svnseve.conf;内容修改为:
            [general]
            anon-access = none
            auth-access = write
            password-db = passwd
            authz-db = authz
            realm = test1
    注意: password-db = passwd; authz-db = authz;就是指与svnserve.conf同一目录下的passwd和authz文件(相对路径)
        b、编辑passwd,添加用户和密码:vi passwd;对用户配置文件的修改立即生效,不必重启svn。文件格式如下:
            [users]
            <用户1> = <密码1>
            <用户2> = <密码2>
        其中,[users]是必须的。下面列出要访问svn的用户,每个用户一行。示例:
        [users]
        alan = password
        king = hello
        c、编辑authz,设置用户权限;注意:
            * 权限配置文件中出现的用户名必须已在用户配置文件中定义。
            * 对权限配置文件的修改立即生效,不必重启svn。用户组格式:
                [groups]
                <用户组名> = <用户1>,<用户2>
                其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。版本库目录格式:
                [<版本库>:/项目/目录]
                @<用户组名> = <权限>
                <用户名> = <权限>  
        其中,方框号内部分可以有多种写法: /,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/opt/svndata。这样,/就是表示对全部版本库设置权限。
test1:/,表示对版本库1设置权限
test2:/occi, ,表示对版本库2中的occi项目设置权限
test2:/occi/aaa, ,表示对版本库2中的occi项目的aaa目录设置权限  权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。示例:
        [groups]
        admin = alan[/]
        @admin = rw[repos1:/occi/aaa]
        king = rw[repos2:/pass]
        king =
    ④启动svn
    建立启动svn的用户:
        useradd svn
        passwd svn
    根据提示为用户svn设置密码允许用户svn访问版本库:
        chown –R svn:svn /opt/svndata
        chown –R svn:svn /usr/local/svn
    启动svn:
        su - svn -c "/usr/local/svn/bin/svnserve -d --listen-port 9999 -r /opt/svndata"
    其中:
        su – svn表示以用户svn的身份启动svn
        -d表示以daemon方式(后台运行)运行
        --listen-port 9999表示使用9999端口,可以换成你需要的端口。默认端口为:3690。
    ⑤查看运行:ps aux|grep svn;
       查看端口监听:netstat -tunlp | grep svn
    ⑥配置防火墙,如果不配置防火墙,是无法访问的。
        配置文件在:/etc/sysconfig/iptables。具体详见iptables配置这一章。
        配置完成后,需要重启:service iptables restart
    ⑦在linux中测试连接:/usr/local/svn/bin/svn checkout svn://localhost/test1。这是会让你输入linux登陆用户密码,然后输入svn登陆用户,再就是输入密码,最后确定是否保存。
    ⑧采用svn客户端,连接配置启动的svn服务器,地址:svn://address:port/directory
        例如:svn://127.0.0.1:3690/test1  连接成功
再次配置完成。

相关推荐