Centos7 搭建SVN服务器
安装-卸载
- 如果有防火墙先关闭
systemctl stop firewalld.service
- 安装SVN服务器
sudo yum install subversion
- 查看版本号
svnserve --version
- 卸载
sudo yum remove subversion
SVN启动模式(一个svnserve只能为一个版本库工作)
-
前置条件:创建版本库存放的目录
mkdir /home/admin/SVN
-
命令创建一个版本库
svnadmin create /home/admin/SVN/project_01
-
项目文件解析
- hooks目录:放置hook脚步文件的目录
- locks目录:用来放置subversion的db锁文件和db_logs锁文件的目录
- format目录:表示当前文件库配置的版本号
- conf目录:仓库的配置文件(比如仓库用户访问账户,权限等)
-
复制
project_01/conf
下的passwd
和authz
到/home/admin/SVN
可以多个版本库公用配置文件 -
编辑
/home/admin/SVN/project_01/conf
配置文件svnserver.conf文件# vi /home/admin/SVN/project_01/conf/svnserve.conf [general] anon-access = none auth-access = write password-db = /home/admin/SVN/passwd authz-db = /home/admin/SVN/authz realm = project_01
- anon-access:没有登录认证用户的权限,取值范围(“write”、“read”、“none”),默认为可读。
- auth-access:登录认证用户的权限,取值范围(“write”、“read”、“none”),默认为可写。
- password-db: 指定用户账号密码的文件。如果指定需要使用绝对路径,否则文件位置为相对目录下conf目录的相对路径。默认值为:passwd。
- authz-db:指定用户权限的权限配置文件名。 如果指定需要使用绝对路径,否则文件位置为相对目录下conf目录的相对路径,默认值为:authz。
- realm: 指定版本库的认证域,即在登录时提示的认证域名称。 默认值:一个UUID(Universal Unique IDentifier,全局唯一标示)。
-
配置账号密码
# vi /home/admin/SVN/passwd.conf [users] # 添加一个用户名:SVN,密码:svn123456 svn = svn123456 # 添加一个用户:SVN2,密码:svn123456 svn2 = svn123456
-
配置权限
# vi /home/admin/svn/conf/authz [groups] # 添加的一个用户组,组员为svn developer = svn [/] #设置对项目根目录下的权限,开发者具有读写,svn2用户只具有读 @developer = rw svn2 = r
-
启动svn服务
svnserve -d -r /home/admin/SVN/project_01
-
查看服务是否开启
ps -ef |grep sv
-
停止SVN命令
killall svnserve
-
开启阿里云的默认端口3690
-
客户端直接访问:
svn://xxxxxxx
,即可访问到project_01
版本库 -
服务命令
设置SVN开机自启动:systemctl enable svnserve.service
停止SVN开机自启动:systemctl disable svnserve.service
查看SVN服务当前状态:systemctl status svnserve.service
SVN启动模式(一个svnserve为多个版本库工作)
-
新增项目二
svnadmin create /home/admin/SVN/project_02
-
修改
project_02
配置文件svnserver.conf文件# vi /home/admin/SVN/project_02/conf/svnserve.conf [general] anon-access = none auth-access = write password-db = /home/admin/SVN/passwd authz-db = /home/admin/SVN/authz realm = project_02
-
因为上面的配置是使用同一个用户,所以不用修改
-
修改公用的文件authz-配置用户对版本库的权限
# vi /home/admin/svn/conf/authz [groups] # 添加的一个用户组,组员为svn developer = svn [project_01:/] #设置对项目1根目录下的权限,svn和svn2均 @developer = rw svn2 = rw [project_02:/] #设置对项目2根目录下的权限,开发者具有读写,svn2用户只具有读的权限 @developer = rw svn2 = r
-
启动svn服务
svnserve -d -r /home/admin/SVN
-
则可以通过svn://xxxxxxx/项目名
出现的问题
使用客户端,查看log发现没有log显示,解决方法:把两个项目中的svnserve.conf里的anon-access = read改成anon-access = none。同时右键-》TortoiseSvn-》setting-》Saved Data,把这里的日志缓存clear一下即可显示。