基于SVN搭建企业内部知识库系统实践
一、准备工作
- CentOS 7 服务器:确保你有 root 或 sudo 权限,可以访问该服务器。
- Windows 客户端:你将需要在 Windows 上安装 TortoiseSVN 客户端来与 SVN 服务器交互。
- 防火墙:确保你的防火墙已开放 3690 端口,用于 SVN 通信。
二、在 CentOS 7 上安装 SVN
- 更新系统软件包:
在 CentOS 上首先确保系统软件包是最新的:
sudo yum update -y
- 安装 Subversion(SVN):
安装 SVN 服务器所需的包:
sudo yum install subversion -y
- 确认安装成功:
运行以下命令,验证 SVN 是否安装成功:
svn --version
输出类似如下,表示安装成功:
svn, version 1.7.14 (r1542130)
三、创建 SVN 仓库
- 创建一个 SVN 仓库目录:
sudo mkdir -p /svn/repos
- 创建仓库:
创建名为project
的 SVN 仓库:
sudo svnadmin create /svn/repos/project
- 配置仓库权限:
SVN 使用svnserve.conf
和passwd
文件进行权限管理。我们将配置这些文件来实现用户认证和权限控制。 - 编辑 SVN 配置文件:
编辑svnserve.conf
配置文件,允许基于用户名和密码的访问:
sudo nano /svn/repos/project/conf/svnserve.conf
在文件中,找到以下配置并修改:
[general]
anon-access = none # 禁止匿名访问
auth-access = write # 允许授权用户写入
password-db = passwd # 使用密码文件进行认证
- 配置用户认证:
编辑passwd
文件,添加用户和密码:
sudo nano /svn/repos/project/conf/passwd
在文件中添加用户信息,例如:
[users]
user1 = password1
user2 = password2
admin = adminpassword
其中:
- `user1` 和 `user2` 是普通用户,`admin` 是管理员。
- `password1` 和 `password2` 是相应的用户密码。
四、启动 SVN 服务
- 启动 SVN 服务器:
使用svnserve
启动 SVN 服务,指定根目录为/svn/repos
:
sudo svnserve -d -r /svn/repos
- `-d` 表示后台运行。
- `-r` 设置仓库根目录。
- 设置 SVN 服务开机自启:
让 SVN 服务在服务器重启后自动启动:
sudo systemctl enable svnserve
sudo systemctl start svnserve
- 开放防火墙端口:
如果防火墙启用,你需要开放 3690 端口:
sudo firewall-cmd --permanent --zone=public --add-port=3690/tcp
sudo firewall-cmd --reload
五、配置 SVN 权限管理
- 配置授权文件:
authz
文件用于更精细的权限控制,定义不同用户对不同目录的访问权限。编辑authz
文件:
sudo nano /svn/repos/project/conf/authz
示例配置:
[groups]
developers = user1, user2
admins = admin[/]
* = r # 所有用户只能读取[project:/]
@developers = rw # developers 组有读写权限
@admins = rw # admins 组有读写权限
这个配置的含义是:
- **所有用户**对根目录的访问权限为只读(`* = r`)。
- `developers` 组成员对 `project` 仓库的根目录(`/`)有读写权限。
- `admins` 组成员对 `project` 仓库的所有目录都有读写权限。
- 为用户添加权限:
如果需要对不同用户设置不同目录的权限,可以修改authz
文件。例如:
[project:/docs]
@developers = rw # developers 组有权限修改 docs 目录
@admins = rw # admins 组有权限修改 docs 目录[project:/src]
@admins = rw # 只有 admins 组有权限修改 src 目录
六、在 Windows 客户端安装 TortoiseSVN
- 下载并安装 TortoiseSVN:
- 访问 TortoiseSVN 官网,下载并安装适合 Windows 版本的 TortoiseSVN 客户端。
- 连接到 SVN 服务器:
安装完成后,右键点击任意文件夹,选择 SVN Checkout…,在弹出的对话框中输入 SVN 服务器的地址,格式如下:
svn://<服务器IP地址>/project
例如,如果 CentOS 服务器 IP 是 192.168.236.140
,则地址是:
svn://192.168.236.140/project
然后点击 OK,输入在 passwd
文件中配置的用户名和密码。
- 上传和下载文件:
-
下载:通过右键点击文件夹,选择 SVN Checkout,将仓库内容检出到本地。
-
上传:将文件放入本地检出的目录中,右键选择
-
SVN Commit,提交文件到 SVN 仓库。

-
如下,上传成功:
七、进一步优化和管理
- 设置 SVN 为系统服务:
如果需要,创建一个 Systemd 服务,确保服务器重启后 SVN 服务可以自动启动。创建svnserve.service
文件:
sudo nano /etc/systemd/system/svnserve.service
配置文件内容:
[Unit]
Description=Subversion service
After=network.target[Service]
ExecStart=/usr/bin/svnserve -d -r /svn/repos
User=svn
Group=svn[Install]
WantedBy=multi-user.target
然后执行:
sudo systemctl daemon-reload
sudo systemctl enable svnserve
sudo systemctl start svnserve
- 管理和监控 SVN 仓库:
- 查看日志:使用
svn log
查看仓库的提交历史。 - 备份仓库:定期备份仓库,使用
svnadmin dump
命令备份仓库:
- 查看日志:使用
svnadmin dump /svn/repos/project > /path/to/backup/project.dump
八、总结
通过上述步骤,你已经在 CentOS 7 上成功安装并配置了 SVN 服务器,并能够进行权限管理。用户可以使用 TortoiseSVN 从 Windows 客户端上传和下载文件。
SVN 的权限管理通过 passwd
文件控制用户的访问,通过 authz
文件来细化目录级别的权限配置。这样可以确保不同的用户有不同的权限访问不同的仓库内容。