安装(centos下yum即可方便的完成安装)
# yum install subversion
yum install apr apr-util httpd httpd-devel subversion mod_dav_svn mod_auth_mysql
测试安装是否成功:
# svnserve --version 回车显示版本说明安装成功
建立版本库
# mkdir -p /myhome/env/svn/repos/truck/lcb 创建svn数据目录(目录可自行制定)
# svnadmin create /myhome/env/svn/repos/truck/lcb lcb就是版本库的名字,可以改变!
配置svn配置文件(为了方便管理,这里多个库调用相同的配置文件。)
#每个版本库创建之后都会生成svnserve.conf主配文件
# vim /myhome/env/svn/repos/truck/lcb/conf/svnserve.conf
anon-access = none
auth-access = write
password-db = /myhome/env/svn/repos/truck/lcb/conf/passwd
authz-db = /myhome/env/svn/repos/truck/lcb/conf/authz
realm = kuming
# mkdi /myhome/env/svn/repos/conf
# vim /myhome/env/svn/repos/conf/passwd //svn用户配置文件
user1 = password1
user2 = password2
user3 = password3
user4 = password4
# vim /myhome/env/svn/repos/conf/authz //svn权限控制配置文件
[groups] #设置组group1 = user1,user2 #多用户用逗号隔开
[/] #根目录权限设置(就是“ kuming”这个文件夹)
user3 = rw #用户1权限是:可读写
user4 = r #用户2权限是:可读,不可写
user = #什么都没写代表没有任何权限
@group1 = rw #设置组权限
[kuming:/123] #设置根目录下“123”文件夹的权限
#说明“123”这个文件件怎么创建?这是在SVN服务器配置好之后,创建一个权限很高的用户在客户端登录SVN
#然后创建一个文件夹“123”。
启动服务器
# svnserve -d -r /myhome/env/svn/repos
-d表示以daemon方式(后台运行)运行
-r /myhome/env/svn/repos/truck/lcb指定根目录是 /myhome/env/svn/repos/truck/lcb
关闭SVN 服务器
# killall svnserve
# ps aux | grep svnserve 查看服务,端口:3690
客户端使用的软件是TortoiseSVN
浏览方法:
打开版本库浏览器输入:svn://ip-addr/lcb/文件夹名
下面是随便折腾一个小脚本用来管理服务器的启动、重启、停止等操作
# vim svn
# chmod +x svn
case "$1" in
start)
svnserve -d -r /myhome/env/svn/repos/truck/lcb
svnport=`netstat -natp | grep svnserve | awk -F: '{print $4}' | awk 'NR==1'`
if [ $svnport -eq 3690 ]
then
echo "SVN Server Already Runnning. Port:3690"
else
echo "SVN Server Does Not Start"
fi
;;
reload)
svnport=`netstat -natp | grep svnserve | awk -F: '{print $4}' | awk 'NR==1'`
if [ $svnport -eq 3690 ]
then
killall svnserve && svnserve -d -r /svndata
echo "Reload OK"
else
echo "SVN Server Is Not Running"
fi
;;
stop)
killall svnserve
echo "SVN Server Has Been Stopped"
;;
status)
svnport=`netstat -natp | grep svnserve | awk -F: '{print $4}' | awk 'NR==1'`
pid=`ps aux | grep svnserve | grep -v "grep" | awk '{print $2}'`
if [ $svnport -eq 3690 ]
then
echo "SVN Server (pid:$pid) 正在运行..."
else
echo "SVN Server 停止运行..."
fi
;;
*)
echo "$0: Usage: $0 {start|status|stop|reload}"
exit 1
;;
esac
一,Subversion有两种运行方式
一种是基于Apache Http Server,另外一种是Subversion Standalone Server。
以下是基于httpd的svn的安装
二,安装svn
yum install subversion mod_dav_svn
1),确定已经安装了svn模块:mod_dav_svn
[root@svn zhangying]# cd /etc/httpd/modules/
[root@svn modules]# ls |grep svn
mod_authz_svn.so
mod_dav_svn.so
[root@svn modules]#
2),看一下svn是否已安装成功
[root@svn modules]# svn --version
svn, version 1.4.2 (r22196)
compiled Aug 10 2009, 18:00:04
Copyright (C) 2000-2006 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).
The following repository access (RA) modules are available:
* ra_dav : Module for accessing a repository via WebDAV (DeltaV) protocol.
- handles 'http' scheme
- handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
- handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
- handles 'file' scheme
三,创建仓库,修改svn配置文件
1),加载模块
[root@svn conf.d]#cd /etc/httpd/conf.d
[root@svn conf.d]# vi subversion.conf
添加以下二行
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
2),创建仓库,以及仓库目录的设置
# mkdir -p /var/www/svn
# cd /var/www/svn
# svnadmin create test
# chown -R apache.apache test
# vi /etc/httpd/conf.d/subversion.conf
<Location /svn>
DAV svn
#注意,下面的路径,子文件夹名不能和父文件名重复,不然就会出问题
SVNParentPath /myhome/env/svn/repos/truck/
#
# # Limit write permission to list of valid users.
# <LimitExcept GET PROPFIND OPTIONS REPORT>
# # Require SSL connection for password protection.
# # SSLRequireSSL
#
AuthType Basic
AuthName "Subversion repository"
AuthzSVNAccessFile /myhome/env/svn/repos/conf/authz.conf
AuthUserFile /myhome/env/svn/repos/conf/authfile
Require valid-user
# </LimitExcept>
</Location>
#SVN模块加载
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule dav_module modules/mod_dav.so //如果apache已加载, 要去掉本行。
LoadModule authz_svn_module modules/mod_authz_svn.so#资源配置(如果多个项目, 共用一套验证, 下面配置就可以, 不然需要每个项目组分开建)
<Location /svn>
DAV svn
SVNParentPath /var/repos #svn父目录
AuthzSVNAccessFile /var/repos/config/authz.conf #启用目录级别授权, 权限配置文件
AuthType Basic #连接类型设置
AuthName "Subversion Repository" #连接框提示
AuthUserFile /var/repos/config/authfile #用户配置文件
Satisfy Any #表示在同时启用了Allow(允许)和Require的情况下,指定相关策略的,一共有两个备选值,All表示用户必须同时满足Allow和 Require的条件,而Any则是满足其中之一即可。这这里,Satisfy Any用于允许先用匿名方式尝试访问,并根据svnauthz对匿名用户的控制给予访问权限。若没有这句话,则无论svnauthz中是否加入了 "*=r"的写法,匿名用户都是无法访问的。
#<LimitExcept GET PROPFIND OPTIONS REPORT> #允许匿名访问,不允许Commit,不能与AuthzSVNAccessFile同时使用, 此选项没试过。
Require valid-user #采用何种认证
</Location>