Linux Ubuntu 部署SVN

最近需要在ubuntu server上部署一个svn,记录

不需要特定版本

如果不需要特定版本,这样安装就是最简单的

sudo apt update

 然后开始安装

sudo apt install subversion

等到安装完成之后执行查看版本命令,如果正常输出那就没问题了

svnadmin --version

安装特定版本

这就需要手动下载包和安装依赖,我这边就用1.14.1举例了

sudo apt update

安装必要的依赖 

sudo apt-get install libapr1-dev libaprutil1-dev libsqlite3-dev zlib1g-dev liblz4-dev libutf8proc-dev

下载 Subversion 1.14.1 的源代码。在浏览器中打开 Apache Subversion 下载页面 并复制链接地址,然后在终端中使用 wget 命令下载:

wget https://archive.apache.org/dist/subversion/subversion-1.14.1.tar.gz

解压源代码:

tar -xzvf subversion-1.14.1.tar.gz

进入解压后的目录:

cd subversion-1.14.1

配置 
如果这个命令当中报错缺少什么包,就进行单独apt安装就行了(我这边缺的包在开头已经在第一步单独进行安装,但是不排除某些特殊版本可能依赖不一样)

./configure

编译:

make

安装

sudo make install

等待命令完成就可以执行版本命令检查是否安装正确

svnadmin --version

 如果报错

svnadmin: error while loading shared libraries: libsvn_fs_fs-1.so.0: cannot open shared object file: No such file or directory


就参考我这篇blog:
SVN手动下载安装包编译安装之后,执行svnadmin命令报错svnadmin: error while loading shared libraries: libsvn_fs_fs-1.so.0-CSDN博客

新建repo

创建一个新的 SVN 仓库:

svnadmin create /path/to/new/repository

将 /path/to/new/repository 替换为你希望创建仓库的路径。

如果你有个某个svn的备份文件dump,可以运行这个进行导入

svnadmin load /path/to/new/repository < your_dump_file

创建用户 

进入你的 SVN 仓库目录:

cd /path/to/new/repository

将 /path/to/new/repository 替换为你创建的 SVN 仓库路径。

创建一个新的 SVN 用户:

htpasswd -c conf/passwd username

将 username 替换为你希望创建的用户名。回车之后需要输入你想要设置的密码

如果报错

Command 'htpasswd' not found, but can be installed with:

sudo apt install apache2-utils

 这个错误表明系统中没有安装 apache2-utils 软件包,而 htpasswd 命令是该软件包的一部分,安装就行了

sudo apt install apache2-utils

配置 SVN 权限

打开 SVN 仓库的 conf 目录:           

cd /path/to/new/repository/conf

 编辑 svnserve.conf 文件:(ctrl+o保存,ctrl+x退出)

nano svnserve.conf

将 anon-access 和 auth-access 设置为 none,并确保 authz-db 行没有注释(去掉前面的 #):

anon-access = none
auth-access = write
authz-db = authz

#anon-access = none:

#意义:该配置项指定匿名用户(未经身份验证的用户)的访问权限。在这里,none 表示禁止匿名用户访问,他们无法读取或写入版本库。
#其他可能的值:
#read:允许匿名用户只读访问版本库。
#write:允许匿名用户读写访问版本库。
#auth-access = write:

#意义:该配置项指定经过身份验证的用户的访问权限。在这里,write 表示身份验证用户具有读写访问版本库的权限。
#其他可能的值:
#read:身份验证用户只有读取版本库的权限。
#write:身份验证用户具有读写访问版本库的权限。
#authz-db = authz:

#意义:该配置项指定用于访问控制的权限数据库文件的路径。在这里,authz 表示使用名为 authz 的文件作为权限数据库。
#默认情况下,authz 文件中定义了用户和组的权限规则,用于更精细地控制用户对特定路径的访问权限。

保存并关闭文件。

创建并编辑 authz 文件:

nano authz

在文件中添加用户权限配置,例如:

[groups]
developers = username

[/]
@developers = rw

这将创建一个组 developers,其中包含名为 username 的用户,并为该组授予对仓库的读写权限。 

在 SVN 的 authz 文件中,你可以通过在 groups 部分为组添加多个用户,然后在权限部分为该组分配相应的权限。以下是一个示例,演示如何添加多个用户到组:

[groups]
developers = user1, user2, user3

[/]
@developers = rw

在这个例子中,developers 组包含了三个用户:user1、user2 和 user3。然后,@developers 表示将权限赋予该组。这意味着 user1、user2 和 user3 都将具有对整个仓库的读写权限。

如果要为不同的目录或项目设置不同的权限,你可以在 authz 文件中添加更多的部分,例如:

[groups]
developers = user1, user2, user3

[/project1]
@developers = rw

[/project2]
@developers = r

在这个例子中,/project1 目录对 developers 组开放读写权限,而 /project2 目录只开放读权限。

记得在修改 authz 文件后重新启动 SVN 服务器,以使更改生效。

然后保存并关闭文件。

启动 SVN 服务器

返回到 SVN 仓库的根目录:

cd /path/to/new/repository

启动 SVN 服务器:

svnserve -d -r /path/to/new/repository

-d 选项表示以守护进程(后台)模式运行,-r 选项指定 SVN 服务器的根目录。

 配置SVN自启动

这边如果想要server启动的时候svn就自动启动,就需要配置service

打开文本编辑器,创建一个新的服务文件,例如 svnserve.service:

sudo nano /etc/systemd/system/svnserve.service

在编辑器中添加以下内容(替换 /path/to/new/repository 为你的 SVN 仓库路径):

[Unit]
Description=Subversion SVN Serve

[Service]
ExecStart=/usr/bin/svnserve -d -r /path/to/new/repository
Restart=always
User=your_username

[Install]
WantedBy=multi-user.target

将 your_username 替换为运行 SVN 服务的用户名

保存并关闭文件。

重新加载 systemd 配置:

sudo systemctl daemon-reload

启用 SVN 服务,使其在系统启动时自动启动:

sudo systemctl enable svnserve.service

手动启动 SVN 服务:

sudo systemctl start svnserve.service

现在,SVN 服务将在系统启动时自动启动。你可以使用以下命令检查服务状态:

sudo systemctl status svnserve.service

确保在 Active 行中看到 running 表示服务正在运行。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

环境配置、如何安装OpenHarmony HAR

OpenHarmony HAR OpenHarmony js/ts三方库使用的是OpenHarmony静态共享包&#xff0c;即HAR(Harmony Archive)&#xff0c;可以包含js/ts代码、c库、资源和配置文件。通过HAR&#xff0c;可以实现多个模块或者多个工程共享ArkUI组件、资源等相关代码。HAR不同于HAP&#xff0c…

07-prometheus的自定义监控-pushgateway工具组件

一、概述 pushgateway用于自定义监控节点、节点中服务的工具&#xff0c;用户可以通过自定义的命令获取数据&#xff0c;并将数据推送给pushgateway中&#xff1b; prometheus服务&#xff0c;从pushgateway中获取监控数据&#xff1b; 二、部署pushgateway 我们可以“随便”找…

十四 超级数据查看器 讲解稿 背景和颜色

十四 超级数据查看器 讲解稿 背景和颜色 点击打开新页面播放视频教程 点击访问应用宝下载 讲解稿全文: 大家好&#xff0c;我们讲解一下 超级数据查看器 背景和颜色设置。 首先&#xff0c;我们打开超级数据查看器。 这节课设置的是 列表和详情界面的背景 和顶栏颜色。 …

小程序学习

一、第一天 1、小程序体验 2、注册账号 小程序 (qq.com) 3、开发工具下载 下载 / 稳定版更新日志 (qq.com) 4、目录结构 "navigationBarBackgroundColor": "#00b26a" 配置头部背景色 4、wxml模板介绍 5、wxss 6、js文件 7、宿主环境 1、通信主体 2…

腾轩科技传媒讲解企业怎样做整合营销推广才有效果

当今信息爆炸的时代&#xff0c;企业如何才能从浩渺的市场中脱颖而出&#xff0c;触达目标消费者&#xff0c;实现品牌与销售的双增长&#xff1f;腾轩科技传媒讲解的整合营销推广正是解决这一问题的关键所在。它不仅仅是一种营销策略&#xff0c;更是一种全新的思维方式&#…

猫狗分类图像识别

根据深度学习的基本框架&#xff0c;我们要做以下工作&#xff1a; 1&#xff0c;构建神经网络。 2&#xff0c;预处理数据。 3&#xff0c;用训练集训练权重。 4&#xff0c;用测试集进行测试。 首先我们从创建神经网络开始&#xff1a; 先上代码&#xff1a; import torc…

【C++进阶】哈希(万字详解)—— 学习篇(上)

&#x1f387;C学习历程&#xff1a;入门 博客主页&#xff1a;一起去看日落吗持续分享博主的C学习历程博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a; 也许你现在做的事情&#xff0c;暂时看不到成果&#xff0c;但不要忘记&…

web学习笔记(二十五)BOM

目录 1.BOM概述 1.1什么是BOM 1.2BOM的构成 2.windom常用属性汇总 3.window常用方法汇总 4.window对象常见事件汇总 5.this总结&#xff1a; 1.BOM概述 1.1什么是BOM BOM(Browser Object Model)就是浏览器对象模型(整个浏览器)&#xff0c;他的核心对象是window,BOM缺…

力扣大厂热门面试算法题 - 动态规划

爬梯子、跳跃游戏、最小路径和、杨辉三角、接雨水。每题做详细思路梳理&#xff0c;配套Python&Java双语代码&#xff0c; 2024.03.05 可通过leetcode所有测试用例。 目录 70. 爬楼梯 解题思路 完整代码 Python Java 55. 跳跃游戏 解题思路 完整代码 Python 代码…

【kubernetes】关于k8s集群的存储卷

目录 一、存储卷的分类 二、empty存储卷以及特点 三、hostpath存储卷以及特点 四、nfs存储卷以及特点 五、pvc存储卷 查看pv的定义 查看pvc的定义 实操&#xff1a;静态创建pv的方式 实现pvc存储卷 步骤一&#xff1a;先完成nfs的目录共享&#xff0c;需要准备不同的目…

为PDF创建目录(侧边栏目录)

通过可以新建书签的pdf阅读器。 知云翻译&#xff1a;可以新建书签和子书签。 Adobe Acrobat&#xff1a;只能新建书签&#xff0c;不能建立子书签。

思维调试:为什么FormatMessage提示找不到资源?

在不调试的情况下解决下面的问题&#xff0c;说明你的思维调试能力又进阶了。 问题 我在调用 FormatMessage 函数加载一个插入的资源字符串&#xff0c;由于某种未知的原因&#xff0c;它没能按预期那样工作。 我要加载的字符串类似于这样的 “Blah blah blah %1. Blah blah …

MongoDB获评2023年Gartner®云数据库管理系统“领导者”

MongoDB 很荣幸在《2023 年 Gartner 云数据库管理系统 (CDBMS) 魔力象限》报告中被评为领导者。我们相信这一成就让 MongoDB 成为唯一一家连续两年斩获“领导者”称号的纯应用程序数据库服务提供商。 社区及开发者数据平台用户的需求一向是 MongoDB 关注的重点&#xff0c;而这…

《低代码平台开发实践:基于React》读书心得与实战体验

低代码平台开发实践标题 &#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 &#x1f4d8; 一、引…

2024年最新苹果cms MXoneV10 10.8版本模板独家

2024年最新苹果cms MXoneV10 10.8版本模板独家 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/88891237 更多资源下载&#xff1a;关注我。

【Python】Python注册微服务到nacos

Python注册微服务到Nacos 1.Nacos部署 github 的nacos项目的发布页&#xff08;Releases alibaba/nacos GitHub &#xff09;&#xff0c;选择所要下载的nacos版本&#xff0c;在nacos下方的assets中选择安装包进行下载。 解压nacos安装包到指定目录。 tar -zxvf nacos-ser…

Flutter图片内存占用过大问题

图片(Image)加载原理&#xff1a; Image &#xff1a; 显示图⽚的Widget&#xff0c;通过ImageState管理ImageProvider的⽣命周期。 ImageProvider&#xff1a; 图⽚的抽象概念。 根据Image创建实例时调用的工厂方法的不同&#xff08;Image.network或者Image.assetImage&#…

CSS标准文档流与脱离文档流,分享一点面试小经验

大厂面试真题整理 CSS&#xff1a; 1&#xff0c;盒模型 2&#xff0c;如何让一个盒子水平垂直居中&#xff1f; 3&#xff0c;css 优先级确定 4&#xff0c;解释下浮动和它的工作原理&#xff0c;清除浮动的方法&#xff1f; 5&#xff0c;CSS隐藏元素的几种方法 6&#xff0…

浅谈神经网络的正则化技术

神经网络的正则化技术是一组用于减少过度拟合(overfitting)的方法,其中过度拟合是指模型在训练集上表现很好,但在测试集上表现不佳的情况。这些技术有助于提高模型的泛化能力,使其在未见过的数据上表现更好。 以下是几种常见的神经网络正则化技术: Dropout: Dropout …

Python 多线程编程实战:threading 模块的最佳实践

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站AI学习网站。 目录 前言 线程的创建 1. 继承 threading.Thread 类 2. 使用 threading.Thread 对象 线程的同步 使用锁 线程的通信…