CentOS7 基于 subversion 配置 SVN server

 

由于 Window Server 环境下,VisualSVN Server Community 版本只支持 15 个同时在线用户,所以彻底放弃 Windows Server,在 Linux Server 上基于 subversion 建立 SVN server,

 

1. 首先查看是否已安装 subversion

$ svnserve --version

 

2. 如果没有,需要先安装

$ sudo yum install subversion

 

3. 新建一个文件夹,用于存放所有 svn repo,比如在根目录下建立名为 svn 的文件夹

# cd /
# mkdir svn

 

4. 在上述 svn 文件夹建立第一个 repo,比如名字为 hello_kitty

[/] # cd svn
[/svn/]# svnadmin create hello_kitty

 

5. 查看一下 hello_kitty 的目录结构 (下述 conf 中三个绿色文件,需要设置)

[/svn/]# tree hello_kitty

hello_kitty/
├── conf
│   ├── authz
│   ├── passwd
│   └── svnserve.conf
├── db
│   └── ...
├── format
├── hooks
│   └── ...
├── locks
│   └── ...
└── README.txt

 

 6. 设置用户名和密码

打开上述 passwd, 比如添加两个用户 lilei ,hanmm,密码分别是 123,56789

[users]
lilei = 123
hanmm = 56789

 

7. 设置鉴权

打开上述 authz 文件,为方便起见,添加群组,并指定群组权限

[groups]
english_learn_team = lilei,hanmm

[hello_kitty:/]
@english_learn_team = rw
* = 

- 对上述橙色部分的说明:

可设置多个群组

每个群组可包含多个用户,用户之间用逗号分隔

 

- 对上述绿色部分的说明:

[/]:表示对根目录下全部版本库设置权限,根目录是 svnserve 命令启动时指定的目录

[repos:/]:表示对名为 repos 的版本库设置权限

[repos:/abc]:表示对名为 repos 的版本库下的 abc 项目设置权限

[repos:/abc/def]:表示对名为 repos 的版本库下的 abc 下的 def 项目设置权限

 

- 对上述蓝色部分的说明:

对于群组,要以 @ 开头,而对单个用户名不需要

r 只读,w 只写,rw 或 wr 读写,空表示无权限

* = ,表示任何其他用户或群组无权限,这一句不要省略

 

8. 配置 server 属性及文件路径

打开上述的 svnserve.conf 文件,修改如下选项

[general]
anon-access = none
auth-access = write
password-db = /svn/hello_kitty/conf/passwd 
authz-db = /svn/hello_kitty/conf/authz

注意:为了安全起见,可将上述三个文件权限配置为 600,

# chmod 600 conf/*

 

9. 启动 SVN serer  (-d 表示以后台守护模式运行,-r 表示 svn 的根目录,注意这里的根目录指定)

# svnserve -d -r /svn/

注意,修改 passwd, authz 会立即生效,不需要重启 server,但修改 svnserve.conf 后需要重启 server

# pkill svnserve
# svnserve -d -r /svn/

 

10. 可以查看一下网络状态,默认情况下 SVN server 使用端口 3690

# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      331821/svnserve     

注意,如有必要,防火墙需要开放 3690 端口

# /sbin/iptables -I INPUT -p tcp --dport 3690 -j ACCEPT
# iptables-save 

 

11. 设置 SVN 服务随 server 开机启动,参见这里

 

12. 在 Window 端,直接使用 Tortoise SVN 作为客户端程序,比如 SVN server 的 IP 地址是 10.217.32.107,则上述 repo 的地址为 svn://10.217.32.107/hello_kitty/

 

输入用户名密码,即可 update,commit,……

注意:svn 客户端的访问方式有多种,例如,

- file:// 直接访问版本库
- http:// 通过 webdav 协议服务支持 subversion 的 apache 服务器
- https:// 与 http:// 相似,但使用 ssl 加密
- svn:// 通过未认证的 tcp/ip 自定义协议访问 svnserver 服务器
- svn+ssh:// 通过认证并加密的 tcp/ip 自定义协议访问 svnserver 服务器

 

13. 从备份 repo 中恢复,例如要恢复 /svn/ 下的 lilei,hanmm,jim 三个仓库,命令如下,

$ sudo svnadmin recover /svn/lilei/
$ sudo svnadmin recover /svn/hanmm/ $ sudo svnadmin recover /svn/jim/ $ sudo pkill svnserve # 结束服务 $ sudo svnserve -d -r /svn/ # 重启服务 $ sudo netstat -lntup # 检查 svnserve 3690 端口是否正常启动

 

(完)

 

 #===============================================================

本文大部分内容来自网友博客: https://www.cnblogs.com/whybxy/p/8939897.html

 

posted @ 2019-12-05 14:21  Anonymous596  阅读(1055)  评论(0编辑  收藏  举报