svn在redhat enterprise linux 3下的安装

来源:互联网 发布:浙江省经济数据 编辑:程序博客网 时间:2024/05/18 13:27

参考了几篇文章,并结合自己遇到的问题,总结如下:

 

参考文章:

http://www.yoyotown.com/?p=422

http://blog.zjol.com.cn/?uid-1222-action-viewspace-itemid-599186

 

以下部分以root身份操作,部分以svnroot身份操作

 

1.下载文件(http://subversion.tigris.org/)
  一共两个包
  subversion-1.4.6.tar.gz
  subversion-deps-1.4.6.tar.gz

 

2.解压
  tar -xzvf subversion-1.4.6.tar.gz
  tar -xzvf subversion-deps-1.4.6.tar.gz

 

3.配置

  ./configure --with-apxs=/usr/local/apache/bin/apxs --prefix=/usr/local/subversion --with-apr=/usr/local/apache --with-apr-util=/usr/local/apache --with-ssl --with-zlib=/usr/lib --enable-maintainer-mode

 

4.编译和安装
  make
  make install

 

5.增加svnroot用户和svnroot组
  useradd svnroot,这个命令执行后,可以看到产生了svnroot用户和组,见/etc/passwd和/etc/group文件

6.以svnroot身份

   su svnroot

 

7.创建仓库"test"
  /usr/local/subverison/bin/svnadmin create /home/svnroot/repository/test

 

8.看看是不是多了些文件,如果是则说明Subversion安装成功了
   cd /home/svnroot/repository/test
   ls –l

 

9.只有svnroot这个用户可以访问这个目录

  chmod 700 /home/svnroot/repository

 

10.以root身份su root

 

11.更改apache配置

    (1) 更改apache启动的用户和组,否则apache没有权限读/home/svnroot/repository

         User nobody
         Group #-1
         把上述内容改成:
         User svnroot
         Group svnroot

 

    (2) vi /usr/local/apache2/conf/httpd.conf
        如果apache是先装的,其中应该有以下两行代码
        LoadModule dav_svn_module modules/mod_dav_svn.so
        LoadModule authz_svn_module modules/mod_authz_svn.so

        如果没有,添加

 

        再加入下列:


<Location /svn>
   DAV svn
   SVNParentPath /home/svnroot/repository/     //svn父目录
   AuthzSVNAccessFile /home/svnroot/repository/authz.conf     //权限配置文件
   AuthType Basic     //连接类型设置
   AuthName "Subversion.Login"     //连接框提示
   AuthUserFile /home/svnroot/repository/authfile    //用户配置文件
   Require valid-user   //采用何种认证
</Location>
//其中authfile是通过"htpasswd [–c] /home/svnroot/repository/authfile username password"来创建的
//"Require valid-user"告诉apache在authfile中所有的用户都可以访问。如果没有它,则只能第一个用户可以访问新建库

 

12. 权限管理

       1)增加用户
         htpasswd [-c] /home/svnroot/repository/authfile  haha
        //第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,完成对用户的增加
        htpasswd authfile 用户名(加入新的用户)

2)权限分配
vi /home/svnroot/repository/authz.conf
   [test:/] //这表示,仓库test的根目录下的访问权限
   wooin = rw //test仓库wooin用户具有读和写权限
   bao = r //test仓库bao用户具有读权限
   [test2:/] //test2仓库根目录下的访问权限
   wooin = r //wooin用户在test2仓库根目录下只有读权限
   bao = //bao用户在 test2仓库根目录下无任何权限
   [/] //这个表示在所有仓库的根目录下
   * = r //这个表示对所有的用户都具有读权限
   #[groups] //这个表示群组设置
   #svn1-developers = wooin, bao //这个表示某群组里的成员
   #svn2-developers = wooin
   #[svn1:/]
   #@svn1-developers = rw //如果在前面加上@符号,则表示这是个群组权限设置

 

13.将以上设置完成后,重启apache

     /usr/local/apache/bin/apachectl restart

 

     通过这个就可以访问了http://localhost/svn/test

 

14.环境变量

     vi /etc/profile.d/svn.sh

     添加

     export PATH=$PATH:/usr/local/subversion/bin

 

15.一些问题

    (1)注意:apache编译时,要至少加入--enable-dav --enable-so --enable-maintainer-mode选项,否则在安装完svn并启动apache时,会报如下错误:

     httpd: Syntax error on line 58 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_dav_svn.so into server: /usr/local/apache2/modules/mod_dav_svn.so: undefined symbol: dav_register_provider

 

     (2)出现You don't have permission to access /svn/test/ on this server

      这可能是因为apache运行的用户和组没有权限存取/svn/test/,在httpd.conf中改一下即可

 

       (3)在rhel3中安装svn-1.5.0以上版本时,会出现错误:

In file included from buckets/ssl_buckets.c:46:
/usr/include/openssl/ssl.h:909: syntax error before "KSSL_CTX"
/usr/include/openssl/ssl.h:931: syntax error before '}' token
make[1]: *** [buckets/ssl_buckets.lo] Error 1
make[1]: Leaving directory `/usr/local/subversion-1.5.5/serf'
make: *** [external-all] Error 1

 

这是因为openssl的版本太低,升级一下即可

原创粉丝点击