环境准备
在开始安装之前,请确保您具备以下条件:
- 一台已安装 CentOS 7 或更高版本的服务器。
- 拥有
sudo
权限或 root 权限的用户账户。 - 服务器已连接到互联网,以便下载必要的软件包。
安装SVN软件
CentOS 提供了 yum
(或 dnf
)包管理器,可以非常方便地安装 SVN,打开终端,执行以下命令来安装 subversion
软件包:
sudo yum install subversion -y
执行完毕后,可以通过以下命令检查 SVN 是否安装成功及其版本信息:
svnserve --version
如果屏幕上显示了 SVN 的版本号,则说明软件已成功安装。
创建并配置版本库
版本库是 SVN 存储项目文件和所有历史记录的地方,我们通常会选择一个合适的目录来存放它,/svn
。
创建版本库根目录
创建一个用于存放所有 SVN 版本库的根目录:
sudo mkdir -p /svn
创建项目版本库
在根目录下为您的第一个项目创建一个版本库,例如名为 project1
:
sudo svnadmin create /svn/project1
执行后,/svn/project1
目录下会生成一系列配置文件和子目录,包括 conf
、db
、hooks
等,我们主要关注 conf
目录。
配置版本库
进入 project1
的 conf
目录,这里有三个核心配置文件需要修改:
svnserve.conf
:SVN 服务的核心配置文件。passwd
:用户密码文件。authz
:用户权限控制文件。
(1)配置 svnserve.conf
使用 vi
或 nano
编辑器打开 svnserve.conf
:
sudo vi /svn/project1/conf/svnserve.conf
修改或取消以下几行的注释,并确保其配置如下:
[general] # 禁止匿名访问,none 表示无权限 anon-access = none # 授权用户拥有写权限 auth-access = write # 指定密码数据库文件名 password-db = passwd # 指定权限规则文件名 authz-db = authz # 指定认证命名空间,建议开启,避免权限配置混淆 realm = project1 Repository
注意: 配置项的 前后不能有空格,否则会导致服务启动失败。
(2)配置 passwd
文件
编辑 passwd
文件,添加 SVN 用户及其密码,格式为 用户名 = 密码
:
sudo vi /svn/project1/conf/passwd
在 [users]
标签下添加用户:
[users] user1 = password123 user2 = mypassword
(3)配置 authz
文件
authz
文件用于精细地控制不同用户或用户组对版本库不同路径的访问权限。
sudo vi /svn/project1/conf/authz
创建用户组并分配权限,示例如下:
[groups] # 定义一个名为 'developers' 的组,包含 user1 和 user2 developers = user1, user2 # 根目录的权限配置 # [/] 表示版本库的根目录,即 /svn/project1 [/] # @developers 表示 'developers' 组,给予读写权限 @developers = rw # 其他所有用户(*)无任何权限 * = # 也可以为特定目录设置权限 # [project1:/trunk/docs] 表示对 trunk/docs 目录 # user1 只有读权限 # user2 有读写权限 [project1:/trunk/docs] user1 = r user2 = rw
启动SVN服务
配置完成后,就可以启动 SVN 服务了,我们使用 svnserve
作为独立守护进程运行。
# -d 表示以守护进程模式运行 # -r /svn 指定版本库的根目录,这样客户端访问时无需输入完整路径 sudo svnserve -d -r /svn
重要提示: -r /svn
参数非常关键,它将 /svn
设置为 SVN 服务的根路径,客户端通过 svn://服务器IP/project1
访问时,服务器会自动映射到 /svn/project1
。
检查服务是否启动成功:
ps aux | grep svnserve
如果看到 svnserve
进程,则表示启动成功,可以检查默认端口 3690 是否正在监听:
netstat -antp | grep 3690
配置防火墙
如果服务器的防火墙(firewalld)是开启状态,需要放行 SVN 服务的默认端口 3690。
# 永久添加 3690 端口 sudo firewall-cmd --permanent --add-port=3690/tcp # 重新加载防火墙配置使其生效 sudo firewall-cmd --reload # 查看已开放的端口 sudo firewall-cmd --list-ports
客户端访问测试
在另一台机器上(可以是 Windows、macOS 或 Linux),安装 SVN 客户端(如 TortoiseSVN 或命令行工具),然后尝试检出(checkout)版本库:
svn checkout svn://<您的服务器IP地址>/project1 --username user1
系统会提示输入密码(password123
),验证成功后,当前目录下会生成一个名为 project1
的文件夹,里面包含了版本库的内容,您的 centos 安装svn服务 的核心流程已经完成,可以开始进行版本控制操作了。
FAQs
问:我忘记了某个 SVN 用户的密码,或者想添加一个新用户,该怎么办?
答: 这个操作非常简单,您只需要登录到 CentOS 服务器,找到对应版本库的 conf/passwd
文件(/svn/project1/conf/passwd
),使用编辑器直接修改或添加新的 用户名 = 密码
行即可,修改密码或添加新用户后,通常无需重启 svnserve
服务,新的认证信息在下一次客户端连接时就会生效。
问:客户端连接时提示 “Connection refused” 或 “无法连接到主机”,应该如何排查?
答: 这是一个常见的网络连接问题,建议按以下步骤排查:
- 检查服务状态: 在服务器上执行
ps aux | grep svnserve
,确认svnserve
进程是否正在运行,如果没有,请重新启动它。 - 检查端口监听: 执行
netstat -antp | grep 3690
,确认 3690 端口是否处于LISTEN
状态。 - 检查防火墙: 确认服务器的防火墙已经放行了 3690 端口,可以使用
firewall-cmd --list-ports
查看,如果未放行,请按照本文第五步的说明进行配置。 - 检查网络连通性: 从客户端
ping
服务器的 IP 地址,确保网络是通的。 - 确认启动参数: 检查启动
svnserve
时是否使用了-r
参数指定了正确的根目录,以及客户端的 URL 路径是否正确(如果-r /svn
,则 URL 应为svn://IP/project1
,而不是svn://IP/svn/project1
)。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复