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

一、准备工作

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

二、在 CentOS 7 上安装 SVN

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

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

svn, version 1.7.14 (r1542130)

三、创建 SVN 仓库

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

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

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

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

[users]
user1 = password1
user2 = password2
admin = adminpassword

其中:

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

四、启动 SVN 服务

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

五、配置 SVN 权限管理

  1. 配置授权文件
    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` 仓库的所有目录都有读写权限。
  1. 为用户添加权限
    如果需要对不同用户设置不同目录的权限,可以修改 authz 文件。例如:
[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 服务器的地址,格式如下:
svn://<服务器IP地址>/project

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

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 文件:
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
  1. 管理和监控 SVN 仓库
    • 查看日志:使用 svn log 查看仓库的提交历史。
    • 备份仓库:定期备份仓库,使用 svnadmin dump 命令备份仓库:
svnadmin dump /svn/repos/project > /path/to/backup/project.dump

八、总结

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/96129.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/96129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL注入7----(盲注与回显)

一.前言 在我们的注入语句被带入数据库查询但却什么都没有返回的情况我们该怎么办&#xff1f;例如应用程序就会返回 一个"通用的"的页面&#xff0c;或者重定向一个通用页面&#xff08;可能为网站首页&#xff09;。这时&#xff0c;我们之前学习的SQL注入办 法就…

尚硅谷宋红康JVM全套教程(详解java虚拟机)

https://www.bilibili.com/opus/1071553679925968898 案例7&#xff1a;日均百万订单系统JVM参数设置 https://github.com/wei198621/jvm_by_atguigu https://github.com/xftxyz2001/atguigu-jvm/blob/main/JavaYouthdocsJVM/%E7%AC%AC1%E7%AB%A0-JVM%E4%B8%8EJava%E4%BD%…

鸿蒙NEXT开发实战:图片显示、几何图形与自定义绘制详解

探索HarmonyOS NEXT强大的图形渲染能力&#xff0c;从图片展示到自定义绘图 HarmonyOS NEXT作为华为自主研发的操作系统&#xff0c;为开发者提供了一套丰富而强大的图形渲染能力。无论是显示图片、绘制几何图形&#xff0c;还是实现复杂的自定义绘图&#xff0c;鸿蒙都提供了简…

python + Flask模块学习 2 接收用户请求并返回json数据

用到的模块还是flask&#xff0c;用到的类有Flask&#xff0c; request&#xff0c; jsonfiy &#x1f642; 目录 1、GET请求 2、POST请求 1、表单格式 2、json格式 就酱&#xff0c;也比较简单&#xff0c;下一篇说简单的授权&#xff0c;简单来说就是比如用户付费买了服…

国内外常用的免费BUG管理工具选型

帮助用户根据自身情况做决定&#xff0c;比如团队规模、技术能力、是否需要移动端支持等。避免只是罗列工具&#xff0c;而是提供实际选择的维度。 国内外常用的免费BUG管理工具选择非常丰富&#xff0c;从轻量级到功能全面型都有覆盖。我将它们分为几类&#xff0c;并详细介绍…

JavaScript的事件循环机制

1.事件循环的理解JavaScript是单线程的&#xff0c;意味着它一次只能执行一个任务。而事件循环就是去协调在JavaScript环境中运行的同步任务、异步任务(微任务、宏任务)的执行顺序的一种机制。它是 JavaScript 实现单线程非阻塞异步执行的核心。2.事件循环的执行顺序同步任务—…

数据结构——栈(Java)

目录 一定义. 入栈 出栈 二.栈与线性表的关系 三.栈的实现方式 四.链表实现栈 1.结点的API设计 2.栈的API设计 2.1栈的初始化设计 2.2元素入栈 2.3元素出栈 五.括号匹配问题 完整代码展示 答案 一定义. 栈是一种基于先进后出&#xff08;FILO&#xff09;的数据…

科研笔记:数学建模启发的课题研究方法

借鉴数学建模的思路解决科学问题或开展课题研究&#xff0c;核心是将实际问题抽象为数学框架&#xff0c;通过定量分析、逻辑推演和验证优化&#xff0c;实现对问题的精准描述、解释或预测。其本质是“从现实到数学&#xff0c;再从数学回归现实”的迭代过程&#xff0c;适用于…

Agent落地到底选择LangChain 还是 LangGraph

核心概念 LangChain:一个用于构建由大型语言模型驱动的应用程序的框架。它提供了大量的组件和现成的链,旨在简化和标准化应用程序与LLM交互的过程。 LangGraph:一个用于在LangChain之上构建有状态、多参与者的 工作流 的库。它特别擅长处理具有循环、分支和复杂协调的代理(…

ChatGPT下的相关聊天提示词

问&#xff1a;如果我觉得一个子对话里&#xff0c;聊天聊得太多&#xff0c;在这个项目下新开一个子对话&#xff0c;但是不想把上次太多的信息 都复制过来&#xff0c;有没有什么办法关键词&#xff1a;项目、子对话&#xff0c;上下文ChatGPT:有办法的 ✅在 ChatGPT 里&…

最新PDF版本!Acrobat Pro DC 2025,解压即用版

软件介绍 Adobe Acrobat Pro DC 2025 是全球知名的 PDF 编辑神器&#xff0c;被称为 “最牛 PDF 工具”&#xff0c;能轻松解决 PDF 编辑、创建、转换等难题&#xff0c;本次分享的版本解压即可使用。 软件特点 然解压即可使用不用登录注册最新版本 软件使用 我们打开软件选…

XX汽集团数字化转型:全生命周期网络安全、数据合规与AI工业物联网融合实践

引言&#xff1a;数字化转型中的安全与效率双轮驱动作为中国汽车行业的龙头企业&#xff0c;XX汽集团近年来积极推进数字化转型&#xff0c;通过构建全生命周期网络安全体系、完善数据合规治理框架&#xff0c;并深度融合AI工业物联网技术&#xff0c;实现了生产成本显著降低和…

云原生部署_Docker入门

Docker是啥Docker是一个开源的容器化平台&#xff0c;可以帮助开发者将应用程序和其依赖的环境打包成一个可移植、可部署的容器。Docker的主要目标是通过容器化技术&#xff0c;实现应用程序的快速部署、可移植性和可扩展性&#xff0c;从而简化应用程序的开发、测试和部署过程…

【大数据专栏】大数据框架-Apache Druid Overview

目录 Architecture Advantages and disadvantages 从架构以及设计可以得出结论&#xff0c;Durid不支持ACID事务&#xff0c;基于时间戳列和维度列去查询&#xff0c;所以适合基于时间做分组和学列的查询操作。 Advantages优势&#xff1a; 实时数据摄取与查询 支持秒级数据摄…

云平台面试内容(一)

1. 云计算的优点、服务模型区别及云部署模式 云计算优点: 云计算具有显著的优势,包括无需自建机房和硬件投入,资源即开即用并支持弹性伸缩,按需付费使成本透明可控。企业可以在数分钟内完成全球范围的部署,缩短上线周期。同时云平台提供高可用性和安全性,多副本容灾保证数…

嵌入式 - 硬件:51单片机(2)

本节重点&#xff1a;1. GPIO输入模式、输出模式2. 按键工作原理&#xff08;GPIO输入&#xff09;3. 中断概念4. 中断源概念、中断源个数、哪几个中断源5. 外部中断、定时器中断概念6. 中断处理流程&#xff1a;7. 51单片机中定时器的个数&#xff1f;类型8. 16位定时器和8位…

C语言中奇技淫巧07-使用GCC栈保护选项检测程序栈溢出

-fstack-protector 是 GCC 和 Clang 编译器提供的一种栈保护&#xff08;Stack Smashing Protection, SSP&#xff09; 机制&#xff0c;用于检测和防御常见的缓冲区溢出攻击&#xff08;特别是栈溢出&#xff09;。它通过在函数的栈帧中插入特殊的“金丝雀值”&#xff08;can…

.NET 8.0 Web API JWT 身份验证和基于角色的授权

在当今的数字环境中&#xff0c;保护 Web 应用程序的安全至关重要。随着 .NET 8.0 的不断发展&#xff0c;它提供了强大的工具来确保您的 API 既安全又高效。 示例代码&#xff1a;https://download.csdn.net/download/hefeng_aspnet/91490262 如果您喜欢此文章&#xff0c…

ZYNQ SDK软件在线调试

1、然后右键项目->debug as->launch on hardware2、从左到右分别是&#xff1a;运行程序到设置的断点暂停运行终止断开连接步进&#xff08;进入函数内部&#xff09;跳过&#xff08;不进入函数内部&#xff09;跳出函数3、双击添加断点&#xff0c;然后点击运行可以让程…

四大金刚之计算机操作系统

1. 进程和线程的区别&#xff1f;创建线程的代价比创建进程小吗&#xff1f;进程是资源分配和调度的基本单位&#xff1b;线程是 CPU 调度的基本单位。进程有独立的地址空间&#xff0c;线程共享进程地址空间。创建/销毁进程开销大&#xff0c;线程开销小。是的&#xff0c;因为…