基于SVN搭建企业内部知识库系统实践

一、准备工作

  1. CentOS 7 服务器:确保你有 root 或 sudo 权限,可以访问该服务器。
  2. Windows 客户端:你将需要在 Windows 上安装 TortoiseSVN 客户端来与 SVN 服务器交互。
  3. 防火墙:确保你的防火墙已开放 3690 端口,用于 SVN 通信。

二、在 CentOS 7 上安装 SVN

  1. 更新系统软件包
    在 CentOS 上首先确保系统软件包是最新的:
bash 复制代码
sudo yum update -y
  1. 安装 Subversion(SVN)
    安装 SVN 服务器所需的包:
bash 复制代码
sudo yum install subversion -y
  1. 确认安装成功
    运行以下命令,验证 SVN 是否安装成功:
bash 复制代码
svn --version

输出类似如下,表示安装成功:

bash 复制代码
svn, version 1.7.14 (r1542130)

三、创建 SVN 仓库

  1. 创建一个 SVN 仓库目录
bash 复制代码
sudo mkdir -p /svn/repos
  1. 创建仓库
    创建名为 project 的 SVN 仓库:
bash 复制代码
sudo svnadmin create /svn/repos/project
  1. 配置仓库权限
    SVN 使用 svnserve.confpasswd 文件进行权限管理。我们将配置这些文件来实现用户认证和权限控制。
  2. 编辑 SVN 配置文件
    编辑 svnserve.conf 配置文件,允许基于用户名和密码的访问:
bash 复制代码
sudo nano /svn/repos/project/conf/svnserve.conf

在文件中,找到以下配置并修改:

bash 复制代码
[general]
anon-access = none      # 禁止匿名访问
auth-access = write     # 允许授权用户写入
password-db = passwd    # 使用密码文件进行认证
  1. 配置用户认证
    编辑 passwd 文件,添加用户和密码:
bash 复制代码
sudo nano /svn/repos/project/conf/passwd

在文件中添加用户信息,例如:

bash 复制代码
[users]
user1 = password1
user2 = password2
admin = adminpassword

其中:

复制代码
- `user1` 和 `user2` 是普通用户,`admin` 是管理员。
- `password1` 和 `password2` 是相应的用户密码。

四、启动 SVN 服务

  1. 启动 SVN 服务器
    使用 svnserve 启动 SVN 服务,指定根目录为 /svn/repos
bash 复制代码
sudo svnserve -d -r /svn/repos
复制代码
- `-d` 表示后台运行。
- `-r` 设置仓库根目录。
  1. 设置 SVN 服务开机自启
    让 SVN 服务在服务器重启后自动启动:
bash 复制代码
sudo systemctl enable svnserve
sudo systemctl start svnserve
  1. 开放防火墙端口
    如果防火墙启用,你需要开放 3690 端口:
bash 复制代码
sudo firewall-cmd --permanent --zone=public --add-port=3690/tcp
sudo firewall-cmd --reload

五、配置 SVN 权限管理

  1. 配置授权文件
    authz 文件用于更精细的权限控制,定义不同用户对不同目录的访问权限。编辑 authz 文件:
bash 复制代码
sudo nano /svn/repos/project/conf/authz

示例配置:

bash 复制代码
[groups]
developers = user1, user2
admins = admin

[/]
* = r  # 所有用户只能读取

[project:/]
@developers = rw  # developers 组有读写权限
@admins = rw      # admins 组有读写权限

这个配置的含义是:

复制代码
- **所有用户**对根目录的访问权限为只读(`* = r`)。
- `developers` 组成员对 `project` 仓库的根目录(`/`)有读写权限。
- `admins` 组成员对 `project` 仓库的所有目录都有读写权限。
  1. 为用户添加权限
    如果需要对不同用户设置不同目录的权限,可以修改 authz 文件。例如:
bash 复制代码
[project:/docs]
@developers = rw   # developers 组有权限修改 docs 目录
@admins = rw       # admins 组有权限修改 docs 目录

[project:/src]
@admins = rw       # 只有 admins 组有权限修改 src 目录

六、在 Windows 客户端安装 TortoiseSVN

  1. 下载并安装 TortoiseSVN
    • 访问 TortoiseSVN 官网,下载并安装适合 Windows 版本的 TortoiseSVN 客户端。
  2. 连接到 SVN 服务器
    安装完成后,右键点击任意文件夹,选择 SVN Checkout...,在弹出的对话框中输入 SVN 服务器的地址,格式如下:
latex 复制代码
svn://<服务器IP地址>/project

例如,如果 CentOS 服务器 IP 是 192.168.236.140,则地址是:

latex 复制代码
svn://192.168.236.140/project

然后点击 OK ,输入在 passwd 文件中配置的用户名和密码。

  1. 上传和下载文件
    • 下载 :通过右键点击文件夹,选择 SVN Checkout,将仓库内容检出到本地。

    • 上传:将文件放入本地检出的目录中,右键选择

    • SVN Commit,提交文件到 SVN 仓库。

      复制代码
         ![](https://i-blog.csdnimg.cn/img_convert/94c7296f225e1b41df23cefcf0b29a7b.png)

如下,上传成功:

七、进一步优化和管理

  1. 设置 SVN 为系统服务
    如果需要,创建一个 Systemd 服务,确保服务器重启后 SVN 服务可以自动启动。创建 svnserve.service 文件:
bash 复制代码
sudo nano /etc/systemd/system/svnserve.service

配置文件内容:

properties 复制代码
[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

然后执行:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl enable svnserve
sudo systemctl start svnserve
  1. 管理和监控 SVN 仓库
    • 查看日志 :使用 svn log 查看仓库的提交历史。
    • 备份仓库 :定期备份仓库,使用 svnadmin dump 命令备份仓库:
bash 复制代码
svnadmin dump /svn/repos/project > /path/to/backup/project.dump

八、总结

通过上述步骤,你已经在 CentOS 7 上成功安装并配置了 SVN 服务器,并能够进行权限管理。用户可以使用 TortoiseSVN 从 Windows 客户端上传和下载文件。

SVN 的权限管理通过 passwd 文件控制用户的访问,通过 authz 文件来细化目录级别的权限配置。这样可以确保不同的用户有不同的权限访问不同的仓库内容。

相关推荐
huhy~2 小时前
基于Centos7.9搭建svn服务端
svn
sunshine-sm7 小时前
CentOS Steam 9安装 Redis
linux·运维·服务器·redis·centos
小雪_Snow8 小时前
CentOS 7 下载教程
centos
bug攻城狮8 小时前
CentOS 7 设置静态 IP 地址
linux·tcp/ip·centos
纳切威8 小时前
CentOS 7部署Zabbix5.0
linux·运维·centos·zabbix
sunshine-sm8 小时前
CentOS Steam 9安装 MySQL 8
linux·运维·服务器·数据库·mysql·centos·centos stream
bug攻城狮8 小时前
CentOS 7 快速检查软件包是否已安装的5种方法
linux·运维·centos
秃头菜狗20 小时前
下载CentOS 7——从阿里云上下载不同版本的 CentOS 7
linux·阿里云·centos
Lin_Aries_042120 小时前
使用阿里云容器镜像服务 ACR
linux·阿里云·docker·云原生·centos·云计算