经过测试基本都OK,有什么地方错误的话大家指出,共同学习Think。Email:[email protected]
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
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
配置详解:
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)