搭建SVN服务器_CentOS
1、安装
1 |
shell>#yum install subversion |
判断是否安装成功
1 2 |
shell>#svnserve --version svnserve, version 1.6.11 (r934486) |
有了SVN软件后还需要建立SVN库。
1 2 3 |
shell>#mkdir /opt/svn shell>#mkdir /opt/svn/repos shell>#svnadmin create /opt/svn/repos/src |
执行上面的命令后,自动在src下建立多个文件, 分别是conf, db,format,hooks, locks, README.txt。
2、配置
需要配置conf文件夹下的几个文件authz, passwd, svnserve.conf
- authz 是权限控制,可以设置哪些用户可以访问哪些目录
- passwd是设置用户和密码的
- svnserve是设置svn相关的操作
2.1先设置passwd
1 2 3 4 5 6 7 |
[users] # harry = harryssecret # sally = sallyssecret zhouqs = 123456 guest = guest user1 = 123456 user2 = 123456 |
这样我们就建立了zhouqs用户, 123456密码
2.2 再设置权限authz
1 2 3 4 5 6 7 8 9 10 |
[groups] admin = zhouqs developer = user1,user2 [src:/] ##格式为 版本库名称 + :/ @admin = rw @developer = r [src:/Test] guest = r |
解释:
zhouqs属于admin组,user1和user2属于developer组。
根目录下admin组(@符号代表组)拥有rw(读写)权限,developer组拥有r(只读)权限。
/Test目录下guest用户拥有r(只读)权限。
2.3最后设定svnserve.conf
1 2 3 4 5 6 |
[general] anon-access = none # 使非授权用户无法访问 auth-access = write # 使授权用户有写权限 password-db = passwd # 账号文件 authz-db = authz # 访问控制文件 realm = Source Repo # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。 |
注意:采用默认配置。 以上语句都必须顶格写,左侧不能留空格,否则会出错!
3、连接
启动svn:
1 |
shell>#svnserve -d -r /opt/svn/repos/ |
“/opt/svn/repos/”该目录可变,如果是”/opt/svn/repos/src”则直接访问svn://192.168.1.10/即可。
svn默认端口是3690
如果已经有svn在运行,可以换一个端口运行
1 |
shell>#svnserve -d -r /opt/svn/repos/ --listen-port 3391 |
这样同一台服务器可以运行多个svnserver。
好了,启动成功后,就可以使用客户端进行连接测试。建议采用TortoiseSVN,连接地址为: svn://ip:port/版本库名称
,如
svn://192.168.1.10/src
svn://192.168.1.10:3391/src
注:如果连接不上,可能是开启了防火墙,请配置系统防火墙即可!
svn 端口和常用命令
-d [--daemon] : 后台模式
--listen-port : 监听端口(后台模式)
--listen-host : 监听主机名或IP地址(后台模式)
--foreground : 在前台运行(调试时有用)
-h [--help] : 显示这个帮助
--version : 显示程序版本信息
-i [--inetd] : inetd 模式
-r [--root] : 服务根目录
-R [--read-only] : 强制只读成;优先于仓库配置文件
-t [--tunnel] : 隧道模式
--tunnel-user : 隧道用户名(模式是当前用户UID的名字)
-X [--listen-once] : 监听一次(调试时有用)
--pid-file : 将服务进程ID写入文件ARG中
其他命令
停止svn服务:
1 |
shell>#killall svnserve |
可能遇到的问题
客户端提交代码出现“Can’t open file ‘/var/www-svn/db/txn-current-lock’: Permission denied”
是由于这个原因:在svnadmin create时是root身份,所以,普通用户就没有write权限等。
解决:
1 |
shell>#chmod -R 777 /opt/svn/repos |