昨天帮朋友做了个svn。,以前都没写日志的习惯,先记录,给新手。
一、先yum吧
配置svn配置文件(为了方便管理,这里多个库调用相同的配置文件。)
#vim /svn/svndata/kuming/conf/svnserve.conf
yum install subversion
如果yum成功了,使用
svnserve --version 查看版本,有就成功。
添加版本库
mkdir /svn/svndata
svnadmin create /svn/svndata/版本库名 建议英文
添加权限
chmod -R g+rws 版本库名
或者
chmod -R 777 版本库名
因为后面我们会用authz来控制,所以这里的权限不用很死。
三种访问方法
1、apache 80
如果使用apache,添加
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so (注意先后顺序)
到httpd.conf里面,当然,要查看modules里面有木有,如果没有这两个so
可以使用
yum list mod_dav_svn yum install mod_dav_svn
后面就是写配置文件,有两个种,一是直接写在httpd.conf后面,一种可能在conf.d/subversion.conf
直接修改
subversion.conf也可以
我的svn配置文件如下:
<Location /svn/> #结尾必须加"/" http://ip/svn/ 1.3版本还是多少,就一定要加了,不加没有根目录了。
DAV svn
SVNListParentPath on #显示根目录
SVNParentPath /svn/svndata #svn仓储目录
# Limit write permission to list of valid users.
# Require SSL connection for password protection.
# SSLRequireSSL
AuthType Basic
AuthName "Subversion Repositories"
AuthUserFile /svn/svnadmin/test/passwd.cfg
AuthzSVNAccessFile /svn/svnadmin/test/authfile.cfg #想要所有人都可以看到根目录,必须添加 [/] ×=r
Require valid-user
</Location>
RedirectMatch ^(/svn)$ $1/ # http://ip/svn 跳转到http://ip/svn/
注:这里的passwd和authz都是调用的外层的,这样,所以版本库都是使用的同样的权限和密码控制,当然,每个版本库可以使用单独调用配置文件,在版本库/conf/下面,不过管理就麻烦了,不建议这么使用。
创建用户
这里调用apache,所以用htpasswd
#
htpasswd
/svn/svnadmin/test/passwd.cfg abc ×第一次建立需加参数-c
调整authfile里的权限,这个自己写,很简单,不会看下面svn 3690里面怎么写的
浏览器打开方式
http://ip/svn/
2、svn 3690
# svnadmin create /svn/svndata/kuming
#每个版本库创建之后都会生成svnserve.conf主配文件,
里面发现里面有很多写好的注释。一般
case "$1" in
start)
svnserve -d -r /svndata
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
该脚本参数s
tart|status|stop|reload,很简单,不用也可以。
anon-access = none
#vim /svn/svndata/conf/authz
auth-access = write
password-db = /svn/svndata/conf/passwd
authz-db = /svn/svndata/conf/authz
password-db = /svn/svndata/conf/passwd
authz-db = /svn/svndata/conf/authz
realm =kuming
####这里的conf/authz、passwd使用外层,调用相同配置,方便。
这里就写完了,如果去创建passw
#vim
/svn/svndata/conf/passwd
[users]
user1 = password1
user2 = password2
user3 = password3
user4 = password4
user1 = password1
user2 = password2
user3 = password3
user4 = password4
[groups] #设置组
group1 = user1,user2 #多用户用逗号隔开
group1 = user1,user2 #多用户用逗号隔开
[/] #根目录权限设置(就是“kuming”这个文件夹)
user3 = rw #用户1权限是:可读写
user4 = r #用户2权限是:可读,不可写
user = #什么都没写代表没有任何权限
@group1 = rw #设置组权限
user3 = rw #用户1权限是:可读写
user4 = r #用户2权限是:可读,不可写
user = #什么都没写代表没有任何权限
@group1 = rw #设置组权限
[kuming:/123] #设置根目录下“123”文件夹的权限
#说明“123”这个文件件怎么创建?这是在SVN服务器配置好之后,创建一个权限很高的用户在客户端登录SVN
#然后创建一个文件夹“123”。
以上差不多把所有的authz例子都写进去了,这段是抄袭的。
启动服务器
# svnserve -d -r /svn/svndata
-d表示以daemon方式(后台运行)运行
-r /svndata指定根目录是/svndata
查看netstat -ntl |grep 3690 或者
ps aux | grep svnserve 查看服务,端口:3690
-d表示以daemon方式(后台运行)运行
-r /svndata指定根目录是/svndata
有就成功了
关闭SVN 服务器
# killall svnserve
浏览方法:打开版本库浏览器输入:svn://ip-addr/kuming/文件夹名
赠送一个sh
# vim svn
# chmod +x svn
case "$1" in
start)
svnserve -d -r /svndata
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
3、apache SSL443
这个以后在说,不难。
二、建议使用web管理,自己懂,不一定别人也懂,
做个if.svnadmin或者 svnmanger,个人推荐if.svn,php的,比较好看,呵呵
做完后,直接扔给新人。ok了。其中配置if.svnadmin时,里面的密码和权限配置文件,和apache保持一致,很简单,没什么好说的。