zoukankan      html  css  js  c++  java
  • Redhat E5上安装Subversion 1.6详解

    -1、安装opensslITPUB个人空间 b w-R(k,a M }

    8|:| t&J1t%R Z T0./config  --prefix=/usr/local/openssl
    %d l D:U f I U0make
    e ?-p N o)_,` P x0make install
    q j U B h�t v0ITPUB个人空间7e o0@ o3u i6k
    0、安装apache2ITPUB个人空间"I q X-A m
    #重新编译时,加上特别的参数 --with-apr,如果是第一次,可以不需要这个参数
    0E5h k8?7U4y9Q.e�q0#如果不加上dav等参数,无法load mod_dav_svn.so等
    X w J$i | k�o q0#如果不加上ssl,也不可启用ssl验证ITPUB个人空间 S [$c y!V z s

    0y K&r ?8h9T/W i$}0./configure --enable-dav --enable-dav-fs --enable-so --enable-ssl --with-apr-util=/usr/local/apr-util --enable-dav-lock --with-ssl=/usr/local/opensslITPUB个人空间"V ? w v Z(x Z-{%k
    ITPUB个人空间.S L7o%W {
    makeITPUB个人空间 P N z V R'S l.I
    make install

    (1)ITPUB个人空间 I&F S b,s l ])p ~'|
    /usr/local/apache2/bin/apachectl -k start // 启动 apahceITPUB个人空间 W X L-~%z*H)M o
    /usr/local/apache2/bin/apachectl -k stop // 停止 apache

    (2)

    /usr/local/apache2/bin/apachectl -k restart

    (3)

    /usr/local/apache2/bin/apachectl graceful       (推荐)

    # 配置Subversion需要 --with-apxs=/usr/local/apache2/bin/apxs

    ITPUB个人空间4Z D:e L a U'c$_
    1、Berkeley DB(非必须,安装OpenLDAP时,需要这个)ITPUB个人空间 g"b8j7l"^/X x R
    地址:http://download.oracle.com/berkeley-db/db-4.6.18.tar.gzITPUB个人空间 B r5k2X x7P)U l%S,{)p

    u r#L ?3c7@0Subversion的库有两个模式,一个BDB,一个事Fs,即文件模式,通常我们建库都会使用fs模式,这也是默认的模式。 ITPUB个人空间 W i7[ x7F:B/H B ]

    &C&I7V P I e b |4N%D f0ITPUB个人空间 q-c3J R:B../dist/configure --prefix=/usr/local/berkeley-db

    make
    e'w P u P&z w4a5m ^#z0make install
    z P C M9d h0
    0B V&}+k;w M0  
    %B2X h D w [0S1L02、安装apr和apr-util
    8y�S i+s } c0下载地址http://apr.apache.org/ITPUB个人空间 ] Z%u ^&}
    ITPUB个人空间 U A$\ @ d {
    ./configureITPUB个人空间 d u$r!i;x;| I(V
    makeITPUB个人空间 ] x b)Y ] d
    make install

    # configure的时候不指定路径的话默认是安装到/usr/local/下ITPUB个人空间0B H x5k9G,u m

    # 下面这步要把berkeley数据库一起编译进去,否则berkeley就白装了,如果没有 安装BDB,就不需要--with-berkeleyITPUB个人空间!\&~ j H0z
    ITPUB个人空间:e Y5} M Y"_5i D
    ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ --with-berkeley-db=/usr/local/berkeley-db

    makeITPUB个人空间 j$Q j ^�{+h6o'@ I
    make installITPUB个人空间%p,R P C T g
    ITPUB个人空间0f:E | C Q u X p |$z
    3、安装sqlite3.6.14ITPUB个人空间5f'N0h8` C9r8J Y _

    #Subversion-1.6.0版本需要Sqlite,版本要3.4以上,我用的是3.6,Redhat E5默认安装3.3,很容易引起错误,可用以下命令查看:

    rpm -qa | grep sqlite

    亦可以用rpm 强制删除已安装的sqlite,卸载后,可能引起其它工具无法使用,比如rpm,它也是依赖sqlite才能运行,可能会很麻烦。我第一次安装时,就出了这麻烦,不记得怎么解决的了。

    . SQLite 3.x or newer (REQUIRED for client and server)

    SQLite is a lightweight, embeddable SQL library necessary to
    build any repository-related code.

    You can get sqlite 3.5.4 from:

    http://www.sqlite.org/sqlite-3.5.4.tar.gz

    SQLite must be built in thread-safe mode (with 'configure
    --enable-threadsafe'). If building SQLite yourself, you
    have the option of unpacking the archive into the top of the
    Subversion source tree and renaming the resulting directory
    within the Subversion source code from ./sqlite-3.5.4/ to
    ./sqlite/. Subversion will then build and install it for
    you.

    ITPUB个人空间 Z�L F-] F @9o }8m*_5^ I0H./configure --enable-threadsafe --disable-tcl --prefix=/usr/local/sqlite3.6

    make
    D7S ]4U w K:j)?0make install
    *? r c f C { R0


    T%@)~ v(?04、neon-0.25这个版本可以用,高版本有错误,

    如果不安装neon,访问http和https时出现下面错误:
    (v f1~ e7^#[!r0svn: Unrecognized URL scheme


    X Q { ^ Y ? q {0ra_dav:模块,才能访问https和http
    i;v d1d K0ra_local:file:///
    {;r�s�Q6o p*R E c c0ra_svn:svn://
    7z V&e W;y w'B0

    需要--with-ssl参数,否则使用SVN时,会出现下面错误:
    h Q i R R0svn: SSL is not supported

    o5h V;R V |.Z9L b"Q0
    %G)K f W!| T M%]#k,k0./configure --prefix=/usr/local/neon --with-ssl
    !U%j O5j ` B.q0makeITPUB个人空间4M _ K H-_ w
    make install
    `8^0a e T2j'?0ITPUB个人空间+I j:q h8r d'e-^!v D#A4U
    ITPUB个人空间 b B @1E k3F9S2L z
    5、安装subversionITPUB个人空间*? Y(u&?1Y+H b
    ./configure --with-apxs=/opt/oss/sbin/apxs --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --with-sqlite=/usr/local/sqlite3.6 --with-neon=/usr/local/neonITPUB个人空间 | K6p d h C3I v

    ----另一种 配置apxs的
    ITPUB个人空间 \'z0J K#V4A W

    ./configure --prefix=/usr/local/svn --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util  --with-berkeley-db=/usr/local/berkeley-db --with-sqlite=/usr/local/sqlite3.6

    如果berkeley报错的不要了

    ./configure --prefix=/usr/local/svn --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util   --with-sqlite=/usr/local/sqlite3.6

    make
    Z Y E S s2L8{'?0make installITPUB个人空间 { \1z F L
    ITPUB个人空间 |/D ] z \0K'a/p
    #装完后用svnadmin –version查看下是否有信息,有的话说明安装成功ITPUB个人空间 a t9E!G m
    ITPUB个人空间*n e J N U

    h�w(B k K1r r2o ~0ITPUB个人空间 V;I D e'|-P ^9i-S
    6、配置            
    :I L0Z-| b f P*\4d S0首先创建一个repository            
    &}*L B8\7{ ?0svnadmin create /home/svn/projectname            ITPUB个人空间 x2F f u.i+Z ? e U
    ITPUB个人空间,g I u S%S.b1Y8{ k h
    把/home/svn/projectname/conf/passwd, /home/svn/projectname/conf/svnserve.conf, /home/svn/projectname/hooks/control-file里的参数配置一下ITPUB个人空间 x ? H(u�V E
    passwd里放的是每个用户名和密码              
    D%X M e f0svnserve.conf里放的是关于匿名和非匿名用户的权限              
    !F"d a x7o ^0control-file里放的是具体到每个文件夹,每个用户的读写权限
    P#];Y ~ [0ITPUB个人空间 s C q E Z/B H'H r
    再来要打开subversion的端口,subversion默认端口是3690            
    c ` g k7D*j#D)@*m G0su - root -c "svnserve -d -r /home/svn/projectname"ITPUB个人空间2C n4_ R H ~(]
    ITPUB个人空间'H M o*L h t ? L l:u0q
    命令执行后可以用            ITPUB个人空间3A y'm(S-A/`3Z y+l
    ps -ed | grep svnserve            ITPUB个人空间/E&u _ u E J%Z ^
    查看svnserve服务是否已经启动ITPUB个人空间4V7B:X8k(t�j'e

    Y v1m,V [%a \0还可以用            
    A W6h;k.W E!_ _ z0netstat -ant | grep 3690            ITPUB个人空间 r H S,b�u!k!E
    查看3690端口是否已经被监听
    ~;I ~;x {0ITPUB个人空间 q h W T4a ` I
    7、导入资源
    5N$c P s/N t0p0
    I#l$O4f n/G O D7\ B4l d V0首先把当前路径设置到放的路径,比如说
    *G y ?*I1j0ITPUB个人空间 h%C q8~/t H k V i t8c u
    /home/htdocs/projectname
    9A T#}6c O,L)i F0ITPUB个人空间 \ _4Y6@ B&J3?&}
    然后执行ITPUB个人空间&X } e+u J @4V!V,X S

    #k h i(j _ k0svn import svn://localhost/projectname -m "projectname"ITPUB个人空间 ?'H3Z:q u�c"} }6|
    ITPUB个人空间3s b"L \3z5n R
    等命令行重新出现后就完成了。
    ,S L n:o k l0
    U C(o X u2n#R X E0ITPUB个人空间 A�y8}2c2t9E e }"` d9R d
    8、Check out
    2} g�y B F `)k u0
    P&n x0} N0从客户端把代码check out。

    三、在apache中配置SVN

          vi /usr/local/apache2.2.9/conf/httpd.conf

         ① 如果你看到如下两句,说明安装是成功的

          LoadModule dav_svn_module     modules/mod_dav_svn.so
    LoadModule authz_svn_module   modules/mod_authz_svn.so

          如果有下面一句就用#注释掉

          #LoadModule foo_module modules/mod_foo.so

         
    ② 定义apache访问svn配置:
    <Location /svn>
    DAV svn
    #      SVNPath /opt/svndata
    SVNParentPath /opt/svndata
    AuthzSVNAccessFile /opt/svn/conf/authz.conf
    AuthType Basic
    AuthName "Subversion repository"
    AuthUserFile /opt/svn/conf/passwd.conf
    Require valid-user
    </Location>

    我使用的httpd.conf配置

    LoadModule dav_svn_module     modules/mod_dav_svn.so
    LoadModule authz_svn_module   modules/mod_authz_svn.so
    <Location /svn>
    DAV svn
    # SVNPath /opt/app/svn/repos/
    SVNParentPath  /opt/app/svndata/
    SVNListParentPath on
    AuthzSVNAccessFile /opt/app/svndata/conf/authz
    #       AuthzSVNAccessFile /opt/app/svndata/conf/svn-auto-file
    #        Satisfy Any
    #        <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
    #        </LimitExcept>
    AuthType Basic
    AuthName "Subversion repository"
    AuthUserFile  /opt/app/svndata/conf/svn-auto-file
    </Location>
    CustomLog logs/svn_logfile "%t %u %{SVN-ACTION}e" env=SVN-ACTION

    #############

    /opt/app/svndata/conf/authz 文件的配置如下:

    [groups]
    admin=svnuser,dhj
    [/]
    *=r
    @admin=rw
    [dhj:/trunk]
    svnuser = rw
    * = r

    四、配置svn

          ①建立svn版本库目录

          mkdir -p /opt/svndata/repos #可以多建版本库目录

          ②建立svn版本库

          svnadmin create /opt/svndata/repos

          mkdir -p /opt/svndata/repos #可以多建版本库

          ③建立本地访问控制文件

          /usr/local/apache2.2.9/bin/htpasswd -c /opt/svn/conf/passwd.conf username

          然后输入密码即可,默认是MD5加密的

          /usr/local/apache2.2.9/bin/htpasswd /opt/svn/conf/passwd.conf username1 #追加用户

          ④建立本地项目控制文件

          touch /opt/svn/conf/authz.conf

          本例authz.conf内容为:

         

          [groups]
    #<groupname1>=<username1>,<username2>
    admin=username

          #[<versionLib>:projectName/directory]
    >
    #<username>=<authorities>

          [/]
    @admin = rw      #指定用户组成员可以读写根目录所有应用

          [repos:/abc/aaa]
    username1= rw      #指定用户username1可以读写:/abc/aaa目录的文件

    -----其他的配置

    2)权限分配(可以根据自己的情况来处理,也可看网上的)
    # vi /home/svnroot/repository/authz.conf
    [groups] //这个表示群组设置
    Tester = test,svnroot,nbj,user1,user2 //这个表示某群组里的成员
    #anonymous = guest
    [test:/] //这表示,仓库test的根目录下的访问权限
    @Tester = rw //test仓库Tseter组中用户具有读和写权限
    * = r //test仓库中所有用户具有读的权限
    [document:/] //这表示,仓库document的根目录下的访问权限
    @Tester = rw //test仓库Tseter组中用户具有读和写权限
    #@anonymous = r
    * = r //test仓库中所有用户具有读的权限
    //注意:在编辑authz.conf文件时,所有行都必须要顶头写,不能有缩行出现,否则会报错:"Access denied: 'user1' "。

    目前对apache下的svn权限管理做了优化配置,用户密码采用加密模式,安全性要比以前好了。apache下的svn用户信息保存在/data /svn/passwd_dav.conf中,如果需要添加修改用户和密码,请IT部管理人员使用apache的htpasswd工具(例如:/usr /local/apache2/bin/htpasswd /data/svn/passwd_dav.conf username这样的命令)。 用户访问控制文件保存在/data/svn/authz_dav.conf,我已经把以前沿用的策略应用到其中,以前的用户密码照常使用,并且现在以用户 组的方式来管理权限,配置起来更加方便。 关于svn的安全配置都保存在passwd_dav.conf,authz_dav.conf这两个文件中 建立新目录 917 svnadmin create newdm_backend 930 chown -R daemon:daemon newdm_backend/

    至此,整个安装过程完成了!

    五、测试连接

         ① 启动apache

          /usr/local/apache2.2.9/bin/apachectl start

         ② 打开浏览器,输入http://192.168.1.107/svn/repos #本例服务器ip是192.168.1.107

          使用刚才创建的权限用户名与密码登录即可访问

          注意:在你上传文件的时候可能会有如下权限不足的提示

          Permission denied
    svn: Commit failed (details follow):
    svn: Can't create directory '/opt/svndata/repos/db/transactions/0-1.txn': Permission denied

          这是因为apache在线程用户没有权限访问svn的仓库,两者分别属于不同的用户者

          本例apache属于daemon拥有者,而svn仓库属于svn拥有者

          解决方法:

          chown -R daemon /opt/svndata/repos

          chmod -R 755 /opt/svndata/repos

        

           重启下apache:

           /usr/local/apache2.2.9/bin/apachectl stop

           /usr/local/apache2.2.9/bin/apachectl start

        3. “Could not open the requested SVN filesystem” errorcode=2

            如果出现这个错误你就得看一下Apache的httpd.conf文件里面相关版本库路径是不是正确,请确保使用的是绝对路径.

    其他的配置参考

    4 Svn配置

    4.1 建立版本库目录

    [root@localhost root] #mkdir –p /svn

    svn是我自己建立的目录,各人根据具体情况设计名字

    4.2 建立一个用户,用与管理这个版本库目录

    [root@localhost root] #useradd -m -s /bin/bash lyl

    lyl是建立的用户名,可以根据习惯改

    4.3 用建立的用户管理我们刚建的版本库目录

    [root@localhost root] #chown –R lyl.lyl /svn

    用lyl来管理我们的版本库目录/svn

    4.4 启动服务器

    用用户lyl来管理版本库目录/svn,则须转为lyl,命令如下:

    [root@localhost root] #su lyl

    启动svn服务

    [root@localhost root] #svnserve -d -r /svn/;

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

    -r/svn/指定根目录是/svn/

    检查服务器是否启动正常:

    [svn_leader@localhost root]$ ps –ef|grep svnserve

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

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

    5 建立版本库

    [root@localhost home]# cd /svn

    [root@localhost svnrepos]# svnadmin create p1;

    P1可以改,在p1目录下会有下面目录:conf dav db format hooks locks README.txt

    6 配置允许访问test的用户

    进入到conf,命令为:

    [root@localhost safety]# cd conf

    出现三个文件:authz passwd svnserve.conf

    6.1 修改svnserve.conf

    [root@localhost conf]# vi svnserve.conf

    出现:

    [general]

    ………………………

    # anon-Access = read

    # auth-access = write

    ………………………

    # passWord-db = passwd

    ………………………

    # authz-db = authz

    内容修改为:

    [general]

    ………………………

    anon-access = none

    auth-access = write

    ………………………

    password-db = passwd

    ………………………

    authz-db = authz

    6.2 修改passwd

    [root@localhost conf]# vi passwd

    文件格式如下:

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

    [users]

    alan = password

    king = hello

    这个里面的user表示当前test版本库的成员.

    6.3 修改authz

    [root@localhost conf]# vi authz

    用户组格式:

    其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。用户必须要在 passwd文件里能找到,它是给那个里面的user赋权限.

    版本库目录格式:

    示例:

    [groups]

    admin = alan

    [/]

    @admin = rw

    [/svn/p1/WebProject]

    king = rw(表示king能够读写/svn/p1/WebProject目录下的所有信息)

    [/svn/p1/web]

    zp=r(表示zp能够读/svn/p1/web目录下的所有信息)

    到此svn服务器的的安装和配置就已经完成了
  • 相关阅读:
    shell脚本检查文件是否存在
    自己制作rpm软件包(1)
    lsusb是如何工作的
    Linux脚本Shell命令之葵花宝典
    Linux中find常见用法示例
    RPM包制作
    VIM查找替换归纳总结
    vim全局替换命令
    自己制作rpm软件包(2)
    linux shell编程if语句内判断参数
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400374.html
Copyright © 2011-2022 走看看