我来帮你一步步搭建一个SVN(Subversion)服务器,SVN是一个集中式版本控制系统,适合团队协作管理代码或文档。
我将分Windows和Linux两种常见环境来讲解,你可以根据你的服务器系统选择相应的方法。
无论哪种系统,搭建SVN服务器都离不开以下三步:
1、安装SVN服务端软件
2、创建版本库
3、配置用户权限并启动服务
方法一:Windows 环境下搭建(推荐使用 VisualSVN Server)
这是最简单、最直观的方法,自带图形界面管理,适合新手。
步骤1:下载并安装 VisualSVN Server
- 访问官网 [https://www.visualsvn.com/server/](https://www.visualsvn.com/server/)
- 下载VisualSVN Server (免费的基础版足够小团队使用)。
- 安装时,注意设置:
Location: 安装路径和版本库存放路径(建议放到非系统盘)。
Port: 默认使用443 (HTTPS) 或8443,HTTPS更安全。
Authentication: 选择VisualSVN Server Standard authentication(使用内置用户)。
步骤2:创建版本库(Repository)
- 打开安装好的 “VisualSVN Server Manager”。
- 右键点击Repositories ->Create New Repository...。
- 输入版本库名称(例如MyProject)。
- 选择仓库类型(默认FSFS 或通常选择较新的VDFS)。
- 创建一个初始目录结构(可以选择Empty Repository 或Single-Level Structure)。
- 点击完成。
步骤3:创建用户并授权
- 点击左侧的Users -> 右键Create User...,为团队成员创建账号密码。
- 右键你刚创建的版本库MyProject ->Properties...。
- 在Security 选项卡中,点击Add...,选择你创建的用户,并赋予Read/Write 权限。
- 点击确定。
步骤4:连接测试
- 在 VisualSVN Server Manager 中,右键你的版本库 ->Copy URL to Clipboard。
- 打开浏览器或SVN客户端(如 TortoiseSVN),粘贴地址,输入刚才设置的用户名密码,应该就能访问了。
方法二:Linux 环境下搭建(Ubuntu/CentOS 命令行)
适合在云端服务器或对命令行熟悉的用户。
步骤1:安装 SVN 服务端
Ubuntu/Debian sudo apt update sudo apt install subversion apache2 libapache2-mod-svn -y CentOS/RHEL sudo yum install subversion httpd mod_dav_svn -y
步骤2:创建SVN仓库目录和仓库
创建一个总的存放目录 sudo mkdir -p /var/svn/repos 创建一个项目仓库(myproject) sudo svnadmin create /var/svn/repos/myproject
步骤3:配置用户权限
首先给仓库设置访问权限文件,编辑配置文件:
sudo vim /var/svn/repos/myproject/conf/svnserve.conf
将以下配置项取消注释或添加(去掉前面的#):
[general] anon-access = none # 禁止匿名访问 auth-access = write # 授权用户可写 password-db = passwd # 指定密码文件 authz-db = authz # 指定权限文件
然后设置用户名密码:
sudo vim /var/svn/repos/myproject/conf/passwd
在[users] 部分添加账号:
[users] user1 = password123 user2 = your_secure_pwd
接着设置目录访问权限:
sudo vim /var/svn/repos/myproject/conf/authz
添加以下内容,允许用户读写根目录:
[/] user1 = rw user2 = rw *= r
步骤4:启动服务
方式A:svnserve 独立服务(简单,临时或内网)
启动SVN服务,监听默认端口3690 sudo svnserve -d -r /var/svn/repos 设置开机自启(方式较多,这里提供一个简单方法) 编辑 /etc/rc.local,添加上面那行命令
方式B:通过Apache HTTP服务器(更稳定、支持HTTPS)
配置Apache模块:
sudo vim /etc/apache2/mods-available/dav_svn.conf # Ubuntu 或者 sudo vim /etc/httpd/conf.d/subversion.conf # CentOS
在文件内添加一个虚拟目录配置:
<Location /svn> DAV svn SVNParentPath /var/svn/repos AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/svn-auth-users Require valid-user </Location>
创建HTTP认证用户文件:
sudo htpasswd -c /etc/svn-auth-users admin # 第一次创建,要加 -c sudo htpasswd /etc/svn-auth-users user1 # 后续添加用户,不要加 -c
重启Apache:
sudo systemctl restart apache2 # Ubuntu sudo systemctl restart httpd # CentOS
步骤5:客户端访问
方式A:SVN协议svn://你的服务器IP/myproject
方式B:HTTP(S)协议http://你的服务器IP/svn/myproject
无论你用哪种服务器,客户端都推荐使用TortoiseSVN (Windows) 或 Mac/Linux 下的命令行svn 命令。
- 在桌面右键 ->SVN Checkout...
- 输入仓库地址:svn://your-server-ip/repo-name 或https://your-server-ip/svn/repo-name
- 输入你设置的用户名和密码。
1、防火墙:如果使用 svnserve(端口3690),确保防火墙放行该端口,如果使用 Apache(默认443或80),也需放行对应端口。
2、数据备份:SVN仓库就是对应的文件夹(例如/var/svn/repos/myproject),直接打包该文件夹即可备份。
3、权限管理:authz 文件可以实现更精细的控制,例如只让某人读某个子目录,具体语法参考SVN文档。
4、HTTPS加密:强烈建议在公网上使用Apache+HTTPS,并配置SSL证书,避免密码明文传输。
如果你告诉我具体的操作系统(Windows Server 2022 / Ubuntu 20.04 / CentOS 7),我可以提供更针对性的配置代码。
文章摘自:https://idc.huochengrm.cn/fwq/25001.html
评论