zoukankan      html  css  js  c++  java
  • svn服务配置和日常维护命令

    Subversion独立服务和与apache整合服务。

    一 、Svn独立服务安装

    操作系统: Redhat Linux AS3  AS 4   ContOS AS 4

    安装包获取:

    下载[url]http://subversion.tigris.org/downloads/subversion- 1.4.0.tar.gz[/url]和[url]http://subversion.tigris.org/downloads /subversion-deps-1.4.0.tar.gz[/url]。

    编译:

    以root用户登录。

    将subversion-1.4.0.tar.gz和subversion-deps-1.4.0.tar.gz传到服务器。

    tar xfvz subversion-1.4.0.tar.gz

    tar xfvz subversion-deps-1.4.0.tar.gz

    subversion-deps包有四个目录zlib apr apr-util neon这四个目录都是依赖包,编译subversion所必须的代码

    cd subversion-1.4.0

    ./configure –prefix=/opt/svn –without-berkeley-db –with-zlib

    (注:以svnserve方式运行,不加apache编译参数。以fsfs格式存储版本库,不编译berkeley-db)

    make clean

    make

    make install

    vi /etc/profile,在/etc/profile最后加入:

    PATH=$PATH:/opt/svn/bin

    export PATH

    测试:

    svnserve –version

    如果显示如下,安装成功:

    svnserve, version 1.4.0 (r21228)

    compiled Oct 12 2006, 10:18:56

    Copyright (C) 2000-2006 CollabNet.

    Subversion is open source software, see [url]http://subversion.tigris.org/[/url]

    This product includes software developed by CollabNet ([url]http://www.Collab.Net/[/url]).

    The following repository back-end (FS) modules are available:

    * fs_fs : Module for working with a plain file (FSFS) repository.

    2. svn配置

    建立版本库目录,可建多个:

    mkdir -p /opt/svndata/repos1

    mkdir -p /opt/svndata/repos2

    建立版本库:

    svnadmin create /opt/svndata/repos1

    svnadmin create /opt/svndata/repos2

    修改版本库配置文件:

    版本库1:

    vi /opt/svndata/repos1/conf/svnserve.conf

    内容修改为:

    [general]

    anon-access = none

    auth-access = write

    password-db = /opt/svn/conf/pwd.conf

    authz-db = /opt/svn/conf/authz.conf

    realm = repos1

    版本库2:

    vi /opt/svndata/repos2/conf/svnserve.conf

    内容修改为:

    [general]

    anon-access = none

    auth-access = write

    password-db = /opt/svn/conf/pwd.conf

    authz-db = /opt/svn/conf/authz.conf

    realm = repos2

    即除realm = repos2外,其他与版本库1配置文件完全相同。如果有更多的版本库,依此类推。

    配置允许访问的用户:

    vi /opt/svn/conf/pwd.conf

    为了简化配置,2个版本库共用1个用户配置文件。如有必要,也可以分开。

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

    文件格式如下:

    [users]

    <用户1> = <密码1>

    <用户2> = <密码2>

    其中,[users]是必须的。下面列出要访问svn的用户,每个用户一行。示例:

    [users]

    alan = password

    king = hello

    配置用户访问权限:

    vi /opt/svn/conf/authz.conf

    为了简化配置,3个版本库共用1个权限配置文件/opt/svn/conf/pwd.conf。如有必要,也可以分开。文件中定义用户组和版本库目录权限。

    注意:

    * 权限配置文件中出现的用户名必须已在用户配置文件中定义。

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

    用户组格式:

    [groups]​

    <用户组名> = <用户1>,<用户2>

    其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。

    版本库目录格式:

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

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

    <用户名> = <权限>

    其中,方框号内部分可以有多种写法:

    /,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/opt/svndata。这样,/就是表示对全部版本库设置权限。

    repos1:/,表示对版本库1设置权限

    repos2:/abc, ,表示对版本库2中的abc项目设置权限

    repos2:/abc/aaa, ,表示对版本库2中的abc项目的aaa目录设置权限

    权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。

    示例:

    [groups]

    admin = alan

    [/]

    @admin = rw

    [repos1:/abc/aaa]

    king = rw

    [repos2:/pass]

    king =

    删除无用文件:

    rm /opt/svndata/repos1/conf/authz

    rm /opt/svndata/repos1/conf/passwd

    rm /opt/svndata/repos2/conf/authz

    rm /opt/svndata/repos2/conf/passwd

    3. 启动svn

    建立启动svn的用户:

    useradd svn

    passwd svn

    根据提示为用户svn设置密码

    允许用户svn访问版本库:
    ​chown -R svn:svn /opt/svndata

    chown -R svn:svn /opt/data​

    启动svn:

    su - svn -c “svnserve -d –listen-port 9999 -r /opt/svndata”

    其中:

    su - svn表示以用户svn的身份启动svn

    -d表示以daemon方式(后台运行)运行

    –listen-port 9999表示使用9999端口,可以换成你需要的端口。但注意,使用1024以下的端口需要root权限

    -r /opt/svndata指定根目录是/opt/svndata

    检查:

    ps -ef|grep svnserve

    如果显示如下,即为启动成功:

    svn    6941   1 0 15:07 ?    00:00:00 svnserve -d –listen-port 9999 -r /opt/svndata

    二、svn服务与apache 整合

    Subversion存储方式,一是Berkeley DB伯克利存储方式,二是fsfs存储方式。

    两种版本库数据存储对照表

    特性

    Berkeley DB

    FSFS

    对操作中断的敏感

    很敏感;系统崩溃或者权限问题会导致数据库“塞住”,需要定期进行恢复。

    不敏感

    可只读加载

    不能

    可以

    存储平台无关

    不能

    可以

    可从网络文件系统访问

    不能

    可以

    版本库大小

    稍大

    稍小

    扩展性:修订版本树数量

    无限制

    某些本地文件系统在处理单一目录包含上千个条目时会出现问题。

    扩展性:文件较多的目录

    较慢

    较慢

    检出最新代码的速度

    较快

    可以

    大量提交的速度

    较慢,但时间被分配在整个提交操作中

    较快,但最后较长的延时可能会导致客户端操作超时

    组访问权处理

    对于用户的 umask 设置十分敏感,最好只由一个用户访问。

    对 umask 设置不敏感

    功能成熟时间

    2001 年

    2004 年

    1、安装APR-1.2.7和APR-util-1.2.7

        下载地址:[url]http://apr.apache.org/ [/url]  

        tar zxvf  apr-1.2.7.tar.gz​

        ./configure

        make

        make install

        tar zxvf apr-util-1.2.7.tar.gz

        ./configure --with-apr=/usr/local/apr/

         make

         make install

    2、编译安装APACHE。

        tar zxvf httpd-2.2.3.tar.gz 

      cd httpd-2.2.3

     ./configure --prefix=/opt/apache --enable-dav --enable-so --enable-maintainer-mode --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config

    make

    make install

    3、安装subversion-1.4.0

     tar zxvf subversion-1.4.0.tar.gz

     ./configure --with-apxs=/opt/apache/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr

    问题:有关共享库错误

    方法:  echo "/usr/local/apr-util/lib" >> /etc/ld.so.c

        ldconfig      echo $?

    make

        make install

      设置环境变量(可做可不做)

    vi /etc/profile,在/etc/profile最后加入:

    PATH=$PATH:/opt/svn/bin

    export PATH

    4、查看subversion两个动态库有没有安装成功

    vi /opt/apache/conf/httpd.conf

        看到下面两个模块说明安装成功​

      LoadModule dav_svn_module     modules/mod_dav_svn.so

      LoadModule authz_svn_module   modules/mod_authz_svn.so

    5、配置SVN

      vi /opt/apache/conf/httpd.conf

         配置:

          DAV svn

      SVNParentPath /data/svn/repos //svn父目录

      AuthType Basic //连接类型设置

    AuthName "Subversion repository" //连接框提示

      AuthUserFile /data/svn/passwd //用户配置文件

    AuthzSVNAccessFile /data/svn/auth

    Require valid-user //passwd所有的用户都可以访问

    6、建立SVN存储仓库

       #mkdir -p /opt/svndata/repos

    #svnadmin create –fs-type fsfs /opt/svndata/repos

    备份以前的SVN库

    #svnadmin dump /opt/svndata/repos > /root/repos20080328

    把备份出来的数据恢复到本地

    #svnadmin load /opt/svndata/repos/ < /root/repos20080328

    7、建立本地访问控制文件

    #/opt/apache/bin/htpasswd [-c] /opt/passwd north

    //第一次设置用户时使用-c表示新建一个用户文件。#/opt/apache/bin/htpasswd passwd 用户名(加入新的用户)

    8、建立本地项目控制文件

        touch /opt/svndata/auth

      文件内容为:

    [groups]

    [repos1:/]

    #wxy = rw

    north = rw

    tom = rw

    [repos2:/]​

    repos2 = rw

    9、安装客户端,访问服务器

     [url]http://192.168.0.180:/svn/jishu[/url]

       注意:SVN是APACHE配置的时候加上去的。

    10、到此安装基本结束

    修改一下/data/svn/repos属性,否则会导致文件上传失败。

     chmod -R apache.apache repos

    三、日常维护命令和参数

    启动svn服务

    svnserve -d --listen-port 20000 -r /opt/svndata

    创建版本库

    svnadmin create fs-type fsfs /opt/svndata/mark

    查看版本库的信息

    svn list  file:///opt/svndata/mark

    svn list --verbose file:///opt/svndata/mark

    导入库的目录结构

    svn import /tmp/mark/ file:///opt/svndata/mark/ --message "init" (文件夹mark下有bo)

    删除版本库mark下文件夹bo

    svn delete svn://192.168.0.180:20000/opt/svndata/mark/bo -m "delete "

    //导出

    $svnlook youngest oldrepo

    $svnadmin dump oldrepo >; dumpfile

    //还原

    $svnadmin load newrepo < dumpfile

    停止subversion服务

    ps –aux | grep svnserve

    kill -9 ID号

  • 相关阅读:
    读入输出优化模板
    HDU-2647 Reward(拓扑排序)
    HDU-2647 Reward(拓扑排序)
    HDU-2647 Reward(拓扑排序)
    HDU-2647 Reward(拓扑排序)
    Using KafkaBolt to write to a kafka topic
    Using KafkaBolt to write to a kafka topic
    Using KafkaBolt to write to a kafka topic
    Using KafkaBolt to write to a kafka topic
    getElementById() 获取指定ID的第一个元素
  • 原文地址:https://www.cnblogs.com/dcrq/p/5556628.html
Copyright © 2011-2022 走看看