CentOS8 搭建svn服务器 和 常见问题错误排查解决

1.安装svn

命令:yum install subversion

2.创建svn目录

命令:mkdir /var/svn

3.使用svnadmin创建一个项目仓库,并进行配置

命令:svnadmin create /var/svn/project1/

命令:ls /var/svn/project1 列举出文件列表

输出:conf db format hooks locks README.txt

目录说明:

conf目录:是这个仓库配置文件(仓库用户访问账户,权限)

format目录:是一个文本文件,里边只放了一个整数,表示当前文件库配置的版本号

hooks目录:放置hook脚本文件的目录

locks目录:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端

命令:ls /var/svn/project1/conf 列举出conf文件夹下所有文件

输出:authz hooks-env.tmpl passwd svnserve.conf

使用svn内置的认证机制可以有效的增强客户端访问版本库的安全性,当客户端访问版本库服务器时,服务器会根据版本库目录下的conf/svnserve.conf文件中定义的认证与授权策略实现权限的控制,此文件核心配置说明:

anon-access= none #设置拒绝匿名账户访问,此处可以设置为none、read、write

auto-access = write #经过认证的账户权限为可写

password-db = passwd #指定账户名称与密码的存放文件名,该文件在conf目录下

authz-db=authz #指定基于路径的访问控制文件名(可以对文件或目录设置权限)

real = My First Repository #设置版本库域,如果两个版本库的认证域相同,它们将使用相同的密码数据

只需将以上5行最前面的#删除掉,使其生效,其他不用管

passwd文件需要设置账户信息:

规则是用户名=密码

新加一个管理员用户和两个普通用户

user1=123456

user2=123456

user3=123456

authz文件设置访问控制权限

admin=user1

user=user2,user3

[/var/svn/project1/] #svn项目仓库路径

@admin=rw

@user=r

其中

admin=user1 创建admin组,组成员为:user1

user=user2,user3 创建用户组,用户成员:test2和user3

[test:/] 赋予根权限,为了便于管理和权限的控制,可以把权限细化到版本库中相应的目录

@admin = rw admin组有读写的权限

@user = r user组只有读的权限

*= 表示除了上面设置的权限用户组以外,其他所有用户都设置空权限,空权限表示禁止访问本目录,这很重要一定要加上。

权限的主体可以是用户组,用户或者*,用户组在前面要以@开头,*表示全部用户

权限分为:r ,w, rw和null ,null空表示没有任何权限。

auhtz配置文件中的每个参数,开头不能有空格,对于组要以@开头,用户不需要。

4.启动服务

开启服务命令:svnserve -d -r /var/svn/

停止服务命令:killall svnserve

5.连接svn:

我这里使用windows系统svn客户端软件连接:‘

6.常见问题:

1:Error: Can't connect to host '192.168.179.134': 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

解决方案:先telnet看3690端口通不通,如果不通,先把服务器上防火墙关掉测试下,如果关掉防火墙就ok的话,在开启防火墙设置例外

telnet 192.168.179.134 3690

正在连接192.168.179.134...

这样就是不通

( success ( 2 2 ( ) ( edit-pipeline svndiff1 accepts-svndiff2 absent-entries commit-revprops depth log-revprops atomic-revprops partial-replay inherited-props ephemeral-txnprops file-revs-reverse list ) ) )

跳出这样的文字就是通的

操作防火墙命令:

systemctl unmask firewalld #执行命令,即可实现取消服务的锁定

systemctl mask firewalld # 下次需要锁定该服务时执行

systemctl start firewalld.service #启动防火墙

systemctl stop firewalld.service #停止防火墙

systemctl reloadt firewalld.service #重载配置

systemctl restart firewalld.service #重启服务

systemctl status firewalld.service #显示服务的状态

systemctl enable firewalld.service #在开机时启用服务

systemctl disable firewalld.service #在开机时禁用服务

systemctl is-enabled firewalld.service #查看服务是否开机启动

systemctl list-unit-files|grep enabled #查看已启动的服务列表

systemctl --failed #查看启动失败的服务列表

2:认证配置无效:

1.可能原因之一:服务端conf目录下的两个文件authz和passwd中可能存在重复的用户名或者组名(随着时间的推移,由于用户组和用户多了,就极可能存在重复),而导致客户端认证配置无效。

2.可能原因之二:svnserve.conf文件里,除上面说的5行取消注释外,还有其他的行也被取消注释了,也有可能导致这个问题

3.其它可能原因:比如存在多余空格,中文标点,中文字符,权限不对,路径不对,组名不对,用户名不对,等等。需要仔细逐行排查。

签出成功后的签入等操作就不写了

linux下签出:

命令:svn co svn://127.0.0.1/project1 mime2

将这个svn签出到mime2文件夹

列举出svn下目录:

命令:svn ls svn://127.0.0.1/project1

转载请说明出处:第六感博客 原文链接:

相关阅读:

vs2017 关联 gitee码云 使用git进行版本控制