一、前言
用了很久的svn客户端,但是没有自己搭建过svn服务器,准备在自己的服务器搭建一个svn服务器,所以现在虚拟机上搭建了一遍,然后在服务器上开始搭建(都是基于centos7系统)
二、SVN简介
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。
三、centos上安装svn服务器
安装subversion
1、查看是否已经安装过svn
[root@VM_0_16_centos /]# svnversion --version
如果出现下图提示则未安装
2、yum安装
[root@VM_0_16_centos /]# yum install subversion
安装成功提示
或者安装成功后,用subversion -v测试,如下图所示就是安装成功
[root@VM_0_16_centos /]# svnversion --version
新建仓库
创建SVN仓库的命令
svnadmin create 仓库路径
如果想在指定目录创建仓库(我现在演示在/svn/目录创建projects仓库)
[root@VM_0_16_centos /]# cd / #进入/根目录
[root@VM_0_16_centos /]# mkdir svn #创建svn文件夹
[root@VM_0_16_centos /]# cd /svn #进入svn目录
[root@VM_0_16_centos svn]# svnadmin create projects #创建projects仓库
在projects文件夹下面ls出来如下文件则表示创建成功
配置SVN服务器
subversion目录说明
db目录:就是所有版本控制的数据存放文件。
hooks目录:放置hook脚本文件的目录。
locks目录:用来放置subversion见艰苦锁定数据的目录,用来追踪存取文件库的客户端。
format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。
conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)
配置文件详解
conf/passwd #用户文件,配置用户名和密码
conf/authz #用户权限文件,用于配置用户权限
conf/svnserve.conf #配置启动参数
编辑svnserve.conf配置文件,如图
[root@VM_0_16_centos conf]# vim svnserve.conf
编辑passwd用户文件
添加用户以及用户的密码:用户名=密码**
[root@VM_0_16_centos conf]# vim passwd
编辑用户授权文件authz
[root@VM_0_16_centos conf]# vim authz
[groups]模块下配置分组信息
[/dir]模块下配置分组权限/个人权限信息,r代表读,w代表写
配置说明:
@分组名 = rw # 分组权限配置
&用户名 = rw # 单个用户权限配置
* = rw # 所有用户权限配置
运行以及测试
运行SVNSERVE
svnserve是一个服务端程序,启动后就能向其他人提供SVN服务
命令
svnserve -d -r /路径 –listen-port 端口号
参数说明:
-d 表示守护进程
-r 表示SVN服务根路径
–listen-port 可指定端口号
运行以及检查运行是否成功
[root@VM_0_16_centos conf]# svnserve -d -r /svn/
[root@VM_0_16_centos conf]# ps -fe | grep svnserve
root 6736 1 0 19:45 ? 00:00:00 svnserve -d -r /svn/
root 6746 4077 0 19:45 pts/1 00:00:00 grep --color=auto svnserve
防火墙设置
查看svnserve端口,可以看到默认端口是3690,所以需要开启INPUT链 dport 3690和OUTPUT链 sport 3690
[root@VM_0_16_centos sysconfig]# netstat -antp | grep svn
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 6736/svnserve
开放3690端口
[root@VM_0_16_centos sysconfig]# firewall-cmd --permanent --zone=public --add-port=3690/tcp
success
[root@VM_0_16_centos sysconfig]# firewall-cmd --reload
success
[root@VM_0_16_centos sysconfig]#
以上是通过命令开启,当然也可以通过修改/etc/sysconfig/iptables文件开启,具体操作这里就不说明了
windows环境测试
wondows安装svn客户端软件
下载对应自己系统的版本并安装
https://tortoisesvn.net/downloads.html
新建或者选择一个空文件夹右击鼠标选择SVN Checkout
输入仓库地址
输入刚才设置的用户和密码,我这里用admin登录
成功!
设置开启svn开机自启动
安装好 svn 服务后,默认是没有随系统启动自启动的, CentOS7 的 /etc/rc.d/rc.local 是没有执行权限的,系统建议创建 systemd service 启动服务,于是查看 systemd 里 svn 的配置文件 /lib/systemd/system/svnserve.service
[root@VM_0_16_centos projects]# systemctl cat svnserve.service
编辑配置文件/etc/sysconfig/svnserve
设置开机自启动
systemctl enable svnserve.service
总结
防火墙设置
firewall-cmd --permanent --zone=public --add-port=3690/tcp #开放端口
systemctl start firewalld.service #开启防火墙
systemctl stop firewalld.service #关闭防火墙
systemctl restart firewalld.service #关闭防火墙
systemctl disable firewalld.service #禁止开机自启动
systemctl enable firewalld.service #设置开机自启动
firewall-cmd --reload #重启防火墙
svn操作
ps aux|grep svnserve #查看状态
ps -aux |grep svn #查看svn进程
kill -9 {进程id} #关闭进程
svnserve -d -r /svn/ #开启svnserve
认证失败
1、检查防火墙设置
2、检查authz配置
3、[/]分组的权限配置问题,先改为* = rw试一下
报URL错误
svn: E170000: URL 'svn://118.25.177.194/projects' doesn't exist
可能是启动svn时指向错误
svnserve -d -r /svn/projects
svnserve -d -r /svn/ 改成这个试试
抢沙发
小傻子
小智障