经过测试基本都OK,有什么地方错误的话大家指出,共同学习Think。Email:cnbjthink@gmail.com

1> 软件下载

http://mirror.bjtu.edu.cn/apache//httpd/httpd-2.2.22.tar.gz

http://labs.renren.com/apache-mirror//apr/apr-1.4.6.tar.gz

http://labs.renren.com/apache-mirror//apr/apr-util-1.4.1.tar.gz

http://www.sqlite.org/sqlite-autoconf-3071000.tar.gz

http://apache.etoak.com/subversion/subversion-1.7.4.tar.gz

系统为RHEL-5.7-64

注:系统在默认情况下,是已经有apr-util及apr这两个包的版本较低,只支持subversion 1.4,而subversion要求较高的版本,所以要删除系统自带的apr,apr-util这两个包编译新的版本来支持。


2> 软件安装

[root@test ~]# rpm -qa | grep apr
apr-1.2.7-11.el5_6.5
apr-1.2.7-11.el5_6.5
apr-util-1.2.7-11.el5_5.2
apr-util-1.2.7-11.el5_5.2
[root@test ~]# rpm -e --allmatches apr --nodeps
[root@test ~]# rpm -e --allmatches apr-util --nodeps  

或者

[root@test ~]#  rpm -qa | grep subversion
[root@test ~]#  yum remove subversion
[root@test ~]#  yum remove apr
[root@test ~]#  rpm -qa | grep apr

[root@test ~]# cd /usr/local/src/svnsoft/
[root@test svnsoft]# ls
apr-1.4.6.tar.gz       httpd-2.2.22.tar.gz             subversion-1.7.4.tar.gz
apr-util-1.4.1.tar.gz  sqlite-autoconf-3071000.tar.gz
[root@test svnsoft]# tar zxvf apr-1.4.6.tar.gz
[root@test svnsoft]# cd apr-1.4.6
[root@test apr-1.4.6]# ./configure --prefix=/usr/local/apr
[root@test apr-1.4.6]# make && make install

[root@test apr-1.4.6]# cd ..
[root@test svnsoft]# tar zxvf apr-util-1.4.1.tar.gz
[root@test svnsoft]# cd apr-util-1.4.1
[root@test apr-util-1.4.1]# ./configure --prefix=/usr/local/apr-util/ --with-apr=/usr/local/apr/
[root@test apr-util-1.4.1]# make && make install

[root@test apr-util-1.4.1]# cd ..
[root@test svnsoft]# tar zxvf httpd-2.2.22.tar.gz
[root@test svnsoft]# cd httpd-2.2.22
[root@test httpd-2.2.22]# ./configure --prefix=/usr/local/apache2 --enable-modules=all --enable-mods-shared=all --enable-dav --enable-dav-fs --enable-so --with-mpm=prefork --enable-ssl --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/
[root@test httpd-2.2.22]# make && make install

[root@test httpd-2.2.22]# cd ..
[root@test svnsoft]# tar zxvf subversion-1.7.4.tar.gz

编译subversion的时候会报错,说sqlite文件,可以如下解决

[root@test svnsoft]# cd subversion-1.7.4
[root@test subversion-1.7.4]# mkdir sqlite-amalgamation
[root@test subversion-1.7.4]# cd ..
[root@test svnsoft]# tar zxvf sqlite-autoconf-3071000.tar.gz
[root@test svnsoft]# cd sqlite-autoconf-3071000
[root@test sqlite-autoconf-3071000]# cp sqlite3.c ../subversion-1.7.4/sqlite-amalgamation/
[root@test sqlite-autoconf-3071000]# cd ..
[root@test svnsoft]# cd subversion-1.7.4
[root@test subversion-1.7.4]# ./configure --prefix=/usr/local/subversion-1.7.4 --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --with-ssl --with-zlib --enable-maintainer-mode   
[root@test subversion-1.7.4]# make && make install
[root@test subversion-1.7.4]# vim /etc/profile(添加以下内容)

PATH=/usr/local/subversion-1.7.4/binPATH
export LC_ALL=C

[root@test subversion-1.7.4]# source /etc/profile
     
[root@test subversion-1.7.4]# svnserve --version        回车显示版本说明安装成功
svnserve, version 1.7.4 (r1295709)
   compiled Mar 20 2012, 17:33:24

Copyright (C) 2012 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/

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

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

Cyrus SASL authentication is available.

[root@test subversion-1.7.4]#



3> 配置

查看apache是否有生成相应的模块

[root@test subversion-1.7.4]# ls /usr/local/apache2/modules/ | grep svn
mod_authz_svn.so
mod_dav_svn.so
[root@test subversion-1.7.4]#

如果没有的话拷贝相关库过去即可

[root@test subversion-1.7.4]# cp ./subversion/mod_dav_svn/.libs/mod_dav_svn.so /usr/local/apache2/modules/
cp: overwrite `/usr/local/apache2/modules/mod_dav_svn.so'?
[root@test subversion-1.7.4]# cp ./subversion/mod_authz_svn/.libs/mod_authz_svn.so /usr/local/apache2/modules/
cp: overwrite `/usr/local/apache2/modules/mod_authz_svn.so'?
[root@test subversion-1.7.4]#

创建SVN相关目录

[root@test ~]# groupadd svn
[root@test ~]# useradd -s /sbin/nologin svn -g svn
[root@test ~]# mkdir -p /data/svn/data
[root@test ~]# chown -R svn:svn /data/svn/data/

建立版本库

[root@test ~]# svnadmin create /data/svn/data/svndata


如果报错(系统安装时安装subversion)

svnadmin: error while loading shared libraries: libaprutil-1.so.0: cannot open shared object file: No such file or directory

出现这个错误的原因就是svnserver在编译时是加了apache支持的,现在无法找到apr-util库,一般情况下我们将apr-util的lib目录加入到系统的lib路径中就可以了

vim /etc/ld.so.conf

/usr/local/apr/lib
/usr/local/apr-util/lib

ldconfig -v  

OK



添加svn的验证文件svn_auth.conf        (网页浏览)

[root@test ~]# /usr/local/apache2/bin/htpasswd -cm /data/svn/svn_auth.conf test
New password:
Re-type new password:
Adding password for user test
[root@test ~]#

注:只有第一次需要加-c参数,后期再添加用戶千万不能加-c,否则会将原文件覆盖,如下:

[root@test ~]# /usr/local/apache2/bin/htpasswd -m /data/svn/svn_auth.conf think (-m是MD5加密)
New password:
Re-type new password:
Adding password for user think
[root@test ~]#



配置svn权限authz

[root@test ~]# vim /data/svn/data/svndata/conf/authz

[groups]

admin = svnadmin



[/]

@admin = rw


[test:/]
@svn = rw



配置svn账户密码passwd

[root@test ~]# vim /data/svn/data/svndata/conf/passwd

[users]

svnadmin = 123456



配置svn配置文件svnserve.conf

[root@test ~]# vim /data/svn/data/svndata/conf/svnserve.conf

[general]

anon-access = read(或者none)
auth-access = write
password-db = passwd
authz-db = authz
realm = My First Repository



配置svn权限控制文件svn_access.conf(网页)

[root@test ~]# vim /data/svn/svn_access.conf

[groups]


svn = test,think


[/]
* = r

[test:/]
@svn = rw


配置apache

[root@test ~]# cp /usr/local/apache2/conf/httpd.conf /usr/local/apache2/conf/httpd.conf.bak
[root@test ~]# vim /usr/local/apache2/conf/httpd.conf

找到Listen 80 改为Listen 10080(注:或者就默认的80端口)
查找LoadModule,在末尾加入:
# for svn
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
并在配置文件最后加入:
# for svn
Include conf/extra/httpd_svn.conf


Apache配置文件httpd_svn.conf

[root@test ~]# vim /usr/local/apache2/conf/extra/httpd_svn.conf

<Location /svn>
DAV svn
SVNParentPath /data/svn/data
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /data/svn/svn_auth.conf
Require valid-user
AuthzSVNAccessFile /data/svn/svn_access.conf
</Location>

配置详解:
AuthUserFile /data/svn/svn_auth.conf指定的是基于网页SVN访问帐号文件
AuthzSVNAccessFile /data/svn/svn_access.conf指定的是基于网页SVN的访问控制文件

[root@test ~]# /usr/local/apache2/bin/apachectl start
[root@test ~]# /usr/local/subversion-1.7.4/bin/svnserve -d -r /data/svn/data/
[root@test ~]# ps -ef | grep svnserve
[root@test ~]# ps -ef | grep httpd


加入开机启动

vim /etc/rc.local

/usr/local/apache2/bin/apachectl start
/usr/local/subversion-1.7.4/bin/svnserve -d -r /data/svn/data/svndata





在浏览器中输入:http://IP/svn/svndata

TortoiseSVN软件:svn://IP/svndata/

Linux下:svn co svn://IP/svndata,然后修改文件后提交到服务器 svn ci -m "test" readme.txt(ci为commit,-m是记录的log信息,可以为空,test为注释)


svn版本回滚

windows版:右键tortoiseSVN-->update to revision 你只要填入你想要回退的版本就可以马上恢复

linux版:svn up -r 1(即恢复到版本1)