Linux系统SVN安装指导配置说明
1 安装SVN前检查:
检查是否安装SVN: rpm -qa subversion
查看安装SVN版本信息: svnserve --version
如果存在旧版本,卸载旧版本SVN: yum remove subversion
2 安装SVN:
yum install subversion
3 代码库创建:
mkdir -p /root/svn/mohan
svnadmin create /root/svn/mohan
执行上面的命令后,自动建立mohan库,查看/root/svn/mohan 文件夹发现包含了conf, db,format,hooks, locks, README.txt等文件,说明一个SVN库已经建立。
4 配置代码库:
进入上面生成的文件夹conf下,进行配置:cd /root/svn/mohan/conf
1)设置SVN用户及口令:修改文件passwd,如以下内容:
目的是设置哪些用户可以访问SVN资源库
[root@admin conf]# vi passwd
[users]
# harry = harryssecret
# sally = sallyssecret
hello=123
# 这样我们就建立了1个用户,其中有个用户为hello, 密码123,以上语句都必须顶格写, 左侧不能留空格, 否则会出错.
2)设置SVN用户访问权限控制:修改文件authz,如以下内容:
目的是设置哪些用户可以访问哪些目录,向authz文件追加以下内容:
[root@admin conf]# vi authz
[groups]# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
admin=hello
#设置[/]代表根目录下所有的资源
[/]@admin=rw
# 意思是admin组中的用户对mohan库下所有的目录有读写权限。以上语句都必须顶格写, 左侧不能留空格, 否则会出错.
3)设置服务配置文件:修改文件svnserve.conf,如以下内容:
[root@admin conf]# vi svnserve.conf
[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none #使授权用户有写权限
auth-access=write #密码数据库的路径
password-db=passwd #访问控制文件
authz-db=authz
#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
realm = /root/svn/mohan
# 以上语句都必须顶格写, 左侧不能留空格, 否则会出错.
5 启动SVN服务:
停止svn
killall svnserve
启动SVN
svnserve -d -r /root/svn
1)带 -d 选项即可以作为一个单独的守护进程运行,-r 选项可以指定发布哪个目录下的版本库;
2)一旦服务器运行,就在默认端口3690进行监听,使用 telnet 可以测试到 3690 端口已经开放了,如下:
# telnet 127.0.0.1 3690 Trying 127.0.0.1...
Connected to Hinex.VM (127.0.0.1). Escape character is '^]'.
( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops depth log-revprops partial-replay ) ) )
3)若需更改SVN服务默认端口:
查看端口使用情况:netstat -antp
启动svn和指定端口的方法是:svnserve -d --list-port 3700 -r /opt/svn/repos
6 查看SVN服务是否正常:
ps -ef|grep svn 或者 ps aux|grep svn
7 SVN客户端TortoiseSVN连接访问服务端地址:
svn://ip/mohan
记得让防火墙放过3690端口哦,不然无法访问,svn的默认端口是3690.
此外,如果需要将一个 svn 服务器中的版本库移植到另外一台svn服务器上,可以直接将原版本库中 db 文件夹中的内容全部复制到新 svn 服务器相应版本库目录下即可,还要注意两个 svn 服务器所运行的 svn 版本,不同版本可能会出现不兼容情况。
----------------------------------------------------------------------------------------------------------------------
1、checkout时,提示:URL svn://192.168.1.99/svntestdoesn't exist...
奇怪,怎么会提示库不存在呢?肯定是哪里配置问题。后来尝试了半天,也在网上搜索了很久,终于发现问题所在。
如果你的svn库的路径为:/home/svn/svntest
那么你启动时,不能用命令:
svnserve -d -r /home/svn/svntest
而要用命令:
svnserve -d -r /home/svn/
2、commit时,提示:Authorization failed
开始一直以为是authz文件配置得不对,一直尝试,一直修改,还是不行,郁闷了。在确定authz的配置完全没问题后,开始查其它两个配置文件的问题。后来终于发现问题出在svnserve.conf这个文件。以下四行:
# anon-access =read
# auth-access =write
# password-db =passwd
# authz-db =authz
是被注释掉的,虽然文件说明里面说默认就是按注释掉的配置来执行,但好像并不是这样。放开注释:
anon-access =read
auth-access =write
password-db =passwd
authz-db = authz
问题解决。
PS:有些童鞋问文件上传到服务器后存放在服务器的哪个地方。
答:一般放在/home/svn/svntest/db/revs(根据我自己的目录结构)里面。