Home > Linux > linux 下subversion安装

linux 下subversion安装

December 21st, 2007

linux 下subversion安装

系统环境: centos5
内核:2.6.18-8.el5
apache:2.2.6

下载软件包:
 apache:  wget http://apache.mirror.phpchina.com/httpd/httpd-2.2.6.tar.bz2
 berkeley-db: wget http://download.oracle.com/berkeley-db/db-4.6.21.tar.gz
 subversion: wget http://subversion.tigris.org/downloads/subversion-1.4.5.tar.bz2
一、安装berkeley-db
 a. # tar zxf db-4.6.21.tar.gz
 b. # cd db-4.6.21/build_unix/
 c. #../dist/configure –prefix=/usr/local/db-4.6.21 –enable-compat185
 d. #make
 e. #make install

二、安装apache 
 a. tar jxf httpd-2.2.6.tar.bz2(解压缩)
 b。安装apr apr-util
  #cd /home/cuijie/httpd-2.2.6/srclib/apr
  #./configure –prefix=/usr/local/apr
  # make
  # make install

  #cd /home/cuijie/httpd-2.2.6/srclib/apr-util
  #./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr/ –with-berkeley-db=/usr/local/db-4.6.21/
  #make
  #make install
 c.安装apache
  #./configure –prefix=/usr/local/apache2 –enable-module=so –enable-mods-shared=all –enable-cache –enable-file-cache –enable-mem-cache –enable-disk-cache –enable-static-support –enable-static-htpasswd –enable-static-htdigest –enable-static-rotatelogs –enable-static-logresolve –enable-static-htdbm –enable-static-ab –enable-static-checkgid –with-mpm=worker –enable-ssl –enable-deflate –with-included-apr –enable-so –enable-rewrite=share –enable-proxy=share –enable-proxy-ajp=share –enable-dav=share –enable-dav-fs –with-apr=/usr/local/apr/ –with-apr-util=/usr/local/apr-util/
  #make
  #make install
三、安装subversion
 a. # tar jxf subversion-1.4.5.tar.bz2
 b. # cd subversion-1.4.5
 c. # ./configure –prefix=/usr/local/subversion –with-apxs2=/usr/local/apache/bin/apxs –with-apr=/usr/local/apr –with-apr-util=/usr/local/apr-util –with-berkeley-db=/usr/local/db-4.6.21/ –with-ssl
 d. # make
 e. # make install

四、配置
 a.创建库文件所在的目录
  # mkdir -p /usr/local/svnroot/repository
 b.进入subversion的bin目录
  # cd /usr/local/subversion/bin
 c.创建仓库”bjso”
  # ./svnadmin create /usr/local/svnroot/repository/bjso
  # cd /usr/local/svnroot/repository/bjso
  # ls
   conf  dav  db  format  hooks  locks  README.txt (看看是不是多了些文件,如果是则说明Subversion安装成功了)
  # cd /usr/local/subversion/bin/
  下面这条语句将把路径/home/user/import下找到的文件导入到你创建的Subversion仓库中去,提交后的修订版为1。
  # ./svn import -m “New import” /home/cuijie/web/ file:///usr/local/svnroot/repository/bjso/
   如果成功会显示下面内容
    增加           /home/cuijie/web/index.php

    提交后的版本为 1
  下面语句为修改仓库权限
  # chown -R www:www /usr/local/svnroot/repository
 d。修改版本库配置文件
  版本库1:
   # vi /usr/local/svnroot/repository/bjso/conf/svnserve.conf
   内容修改为:
    [general]
    anon-access = none
    auth-access = write
    password-db = /usr/local/svnroot/repository/authfile
    authz-db = /usr/local/svnroot/repository/authz.conf
    realm = bjso

 e.修改Apache配置文件
  # vi /usr/local/apache2/conf/httpd.conf
   确认下面2个模块是否存在
   LoadModule dav_svn_module     modules/mod_dav_svn.so
   LoadModule authz_svn_module   modules/mod_authz_svn.so
  在最后面添加下面内容
  <VirtualHost 192.168.1.252>
  ServerAdmin cuijie@beijingso.com
  DocumentRoot /usr/local/www/
  ServerName 192.168.1.252
  <Location />
   DAV svn
   SVNParentPath /usr/local/svnroot/repository/
   AuthzSVNAccessFile /usr/local/svnroot/repository/authz.conf
   AuthType Basic
   AuthName “Subversion”
   AuthUserFile /usr/local/svnroot/repository/authfile
   Require valid-user
  </Location>
  </VirtualHost>
  //SVNParentPath /usr/local/svnroot/repository/ 目录不能与DocumentRoot目录一样,否则会出现使用浏览器访问svn仓库正常,但是当用客户端svn命令check out的时候提示错误: 301 Moved Permanently subversion
  //其中authfile是通过
  htpasswd -b -c /usr/local/svnroot/repository/authfile cuijie cuijie@bjso
  //来创建的 -c  Create a new file.   -b  Use the password from the command line rather than prompting for it.
  //”Require valid-user”告诉apache在authfile中所有的用户都可以访问。
  
  //下面这一部分是用来配置一个虚拟主机,用subversion的钩子来建立同步测试服务器。
  <VirtualHost 192.168.1.251>
  ServerAdmin cuijie@beijingso.com
  DocumentRoot /usr/local/www/
  ServerName 192.168.1.251
  ErrorLog logs/192.168.1.251-error_log
  CustomLog logs/192.168.1.251-access_log common
  </VirtualHost>
  
  重新启动apache,打开浏览器输入http://192.168.1.252 会出现认证对话框。
  打开http://192.168.1.251 用来进行同步测试。
五、权限管理
 a。增加用户
  //由于htpasswd是apache的内置命令,所以先进入apache的命令目录
  #/usr/local/apache2/bin/htpasswd  /usr/local/svnroot/repository/authfile username
  //第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,完成对用户的增加,再增加别的用户时,不用加c
 b.权限分配
  配置用户访问权限,用于定义用户组和版本库目录权限
  # vi /usr/local/svnroot/repository/authz.conf
  注意:
   * 权限配置文件中出现的用户名必须已在用户配置文件中定义。也就是在前面用htpasswd添加的用户
   * 对权限配置文件的修改立即生效,不必重启svn。
 
  用户组格式:
   [groups]
   用户组名 = 用户1,用户2
   其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。
  版本库目录格式:
   [版本库:/项目目录]
   @用户组名 = 权限
   用户名 = 权限

   其中,方框号内部分可以有多种写法:
   /,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/usr/local/svnroot/repository。这样,/就是表示对全部版本库设置权限。
   bjso:/,表示对版本库bjso设置权限
 c.删除Subversion默认安装库文件权限文件authz,passwd
  # rm /usr/local/svnroot/repository/bjso/conf/authz
  # rm /usr/local/svnroot/repository/bjso/conf/passwd
六、测试
 测试
 如果顺利的话,就可以通过http://192.168.1.252/bjso访问了,GoodLuck!

七、建立一个subversion的同步测试服务器
 原理: 基于subversion的钩子,即hook。在subversion执行一个操作时,那会相应的首先去调用相关的钩子程序(如果存在的话)。那么实现一个同步的测试服务器,我们只需要在一个用户执行完毕一个commit操作之后,让钩子程序去自动更新测试服务器的文件即可。通过这个思路,我们需要作的就是建立一个post-commit的钩子。

 a。使用checkout建立一个工作副本
  #mkdir /usr/local/www
  # chown -R www:www /usr/local/www/
  //apache运行用户对此目录有完全的可读写操作权限
  # svn checkout file:///usr/local/svnroot/repository/bjso/ /usr/local/www/
  //取出subversion上的文件,可能需要密码
  //如果成功则会提示类似下面输出
   A    /usr/local/www/新建文件夹
   A    /usr/local/www/新建 文本文档.txt
   A    /usr/local/www/新建文件夹 (2)
   A    /usr/local/www/index.php
   取出修订版 6
  
  请保证执行checkout语句的用户是daemon,否则在以后钩子调用update时会出现无法创建或修改文件的错误

 b。设置apache,把你需要的域名指向这个文件夹。
  打开http://192.168.1.251 用来进行同步测试。
 c。建立钩子。
  # cd /usr/local/svnroot/repository/bjso/hooks/
  # vi post-commit (以www用户身份)
   #!/bin/sh
   svn update /usr/local/www/ >>/usr/local/svnroot/repository/bjso/hooks/svn_hook_log.txt
完成

Linux

  1. No comments yet.
  1. No trackbacks yet.