当前位置: 首页 > news >正文

如何在Linux环境搭建本地SVN服务器并结合cpolar实现公网访问

目录

前言

1. Ubuntu安装SVN服务

2. 修改配置文件

2.1 修改svnserve.conf文件

2.2 修改passwd文件

2.3 修改authz文件

3. 启动svn服务

4. 内网穿透

4.1 安装cpolar内网穿透

4.2 创建隧道映射本地端口

5. 测试公网访问

6. 配置固定公网TCP端口地址

6.1 保留一个固定的公网TCP端口地址

6.2 配置固定公网TCP端口地址

7. 使用固定TCP端口地址远程SVN服务


前言

由于文档资料越来越多,将所有资料都存放在自己的电脑上容易混淆,并且也不利于分享。这种情况下,考虑将资料上传SVN统一管理,这样一来其他人也能很方便的查略各种资料。

当SVN安装在局域网内的话,想要远程访问资料库或者代码将会受到限制,为了能从公共网络访问内网SVN资料库,cpolar能很好的解决这一需求,cpolar是一个能把内网服务暴露至公网进行访问的工具。

SVN分为服务端和客户端,服务端主要是做数据资料存储,客户端主要是图形化工具连接服务端获取服务端数据资料,下面介绍在ubuntu系统安装服务端,在通过客户端远程访问。

1. Ubuntu安装SVN服务

命令行输入安装命令:

sudo apt install subversion

20230131111701

查看svn版本,出现版本信息表示安装成功:

svnserve --version

20230131111702

创建版本库,执行如下系列命令

cd /opt
sudo mkdir svn
cd svn
sudo mkdir repository

创建好后输入以下命令创建仓库

sudo svnadmin create /opt/svn/repository

20230131111703

创建成功后我们repository目录下会发现一系列文件,其中:

  • conf文件夹下是存放的配置文件,包括SVN用户名的权限、密码这些;

  • db里面的包含我们上传到SVN服务器上面的文档、代码等数据的不同版本。

这里需要注意的是要对db文件夹释放权限,否则客户端可能无法连接SVN服务器。

20230131111704

输入以下命令,对db文件夹释放权限,释放成功后db文件夹会变成绿色

sudo chmod -R 777 db

20230131111705

2. 修改配置文件

首先修改repository文件下的conf这个文件夹里面的文件

2.1 修改svnserve.conf文件

这个文件里面主要设置我们的SVN访问方式.输入编辑命令:

sudo vim svnserve.conf

i键进入编辑 解开四个参数的#号注释

202301311117063

然后按Esc键退出编辑,输入:wq保存退出

2.2 修改passwd文件

这个文件主要是添加用户名和密码,输入命令进入编辑:

sudo vim passwd

i进行编辑

添加以下信息,账号密码可自行定义!

20230131111707

添加完成Esc键退出,输入:wq保存退出.

2.3 修改authz文件

这个文件主要是对登录用户的权限管理,输入以下命令进入编辑:

sudo vim authz

i进行编辑 添加如下信息

20230131111708

然后Esc键退出编辑,输入:wq保存退出

3. 启动svn服务

输入以下命令启动svn

sudo svnserve -d -r /opt/svn/

4. 内网穿透

上面我们在本地Ubuntu虚拟机安装了svn服务端,但目前只能在局域网络下访问,如离开了局域网将无法连接svn。不过我们可以通过cpolar来实现公网访问,突破局域网的限制,不需要公网IP,不需要设置路由器。

cpolar官网:cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站

4.1 安装cpolar内网穿透

  • 支持一键脚本安装命令

curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • token认证

登录cpolar官网后台,点击左侧的验证,查看自己的认证token,之后将token贴在命令行里:

cpolar authtoken xxxxxxx

20230206171248

  • 向系统添加服务

sudo systemctl enable cpolar
  • 启动cpolar服务

sudo systemctl start cpolar

4.2 创建隧道映射本地端口

成功启动cpolar服务后,我们在浏览器上访问本地9200端口【http://127.0.0.1:9200 】,登录cpolar web UI管理界面。

登录成功后,点击左侧仪表盘的隧道管理——创建隧道,创建一个tcp协议的隧道指向本地3690端口:

  • 隧道名称:可自定义,注意不要与已有的隧道名称重复

  • 协议:tcp

  • 本地地址:3690

  • 域名类型:免费选择随机域名

  • 地区:选择China VIP

点击创建

20230131111709

隧道创建成功后,点击左侧的状态——在线隧道列表,可以看到,刚刚创建的隧道已经有生成了相应的公网地址,将其复制下来

20230131111710

5. 测试公网访问

官方网站下载svn客户端:https://tortoisesvn.net/downloads.html

20230131111711

SVN安装完在桌面鼠标右键,点击svncheckout,输入我们复制的cpolar公网地址,然后点击ok

20230131111712

输入我们前面创建的账号密码

20230131111713

接着右键,这时候出现svn update,点击,没有出现error即连接成功

20230131111714

6. 配置固定公网TCP端口地址

由于以上使用cpolar所创建的隧道使用的是随机公网地址,该地址为随机临时地址,24小时内会发生变化,不利于长期远程访问。

为了更好的连接,我们可以为其配置二级子域名,该地址为固定地址,不会随机变化

需要注意,配置固定TCP端口地址需要将cpolar升级到专业版套餐或以上。【cpolar支持21天退款保证】

6.1 保留一个固定的公网TCP端口地址

登录cpolar官网,点击左侧的预留,选择保留的TCP地址,我们先来为远程SVN保留一个固定端口地址。

  • 地区:选择China VIP

  • 描述:即备注,可自定义填写

点击保留

20230131111715

地址保留成功后,系统会生成相应的固定公网地址,将其复制下来

20230131111716

6.2 配置固定公网TCP端口地址

在浏览器上访问9200端口,http://127.0.0.1:9200/,登录cpolar web ui管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到svn隧道,点击右侧的编辑

20230131111717

修改隧道信息,将保留成功的固定tcp地址配置到隧道中

  • 端口类型:修改为固定tcp端口

  • 预留的tcp地址:填写保留成功的地址

点击更新

20230131111718

隧道更新成功后,点击左侧仪表盘的状态——在线隧道列表,找到我的世界隧道,可以看到公网地址已经更新成为了固定tcp地址。

20230131111719

7. 使用固定TCP端口地址远程SVN服务

右键打开relocate

20230131111720

修改连接地址,改为固定tcp的地址,修改完点击OK

20230131111721

接着右键svn update,点击,没有出现error即连接成功

20230131111722

相关文章:

  • TCPDUMP抓包明确显示IP地址和端口号
  • Blender学习:荧光树桩
  • Affinity VS PS 2024最新功能详细对比?Affinity Photo与Photoshop比哪家强?
  • Unity中Shader指令优化(编译后指令解析)
  • 算法与数据结构(二十五)TopK问题:基于快排的Python模板
  • 使用正则表达式时-可能会导致性能下降的情况
  • 文字处理工具Word mac软件特点
  • 【LeeCode】438.找到字符串中所有字母异位词
  • Opencv获取笔记本摄像头
  • 知识点滴 - 什么是AECS-PRM
  • JVM中 Minor GC 和 Full GC 的区别
  • 【报名】2023产业区块链生态日暨 FISCO BCOS 开源六周年生态大会
  • centos用什么命令可查看版本号
  • 【西南交大swjtu微机与接口技术实验】D/A变换实验实验三:波形发生器
  • 【DevOps】Jenkins:配置jenkins 流水线/多分支流水线任务构建成功通知企业微信@相关人(二)
  • 【5+】跨webview多页面 触发事件(二)
  • chrome扩展demo1-小时钟
  • Computed property XXX was assigned to but it has no setter
  • golang中接口赋值与方法集
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Lucene解析 - 基本概念
  • SwizzleMethod 黑魔法
  • Twitter赢在开放,三年创造奇迹
  • Vue 重置组件到初始状态
  • Wamp集成环境 添加PHP的新版本
  • 线性表及其算法(java实现)
  • 赢得Docker挑战最佳实践
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #laravel 通过手动安装依赖PHPExcel#
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (03)光刻——半导体电路的绘制
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (ZT)薛涌:谈贫说富
  • (二)斐波那契Fabonacci函数
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (论文阅读30/100)Convolutional Pose Machines
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (一)Neo4j下载安装以及初次使用
  • (转)Oracle存储过程编写经验和优化措施
  • *2 echo、printf、mkdir命令的应用
  • .net 获取url的方法
  • .net 使用ajax控件后如何调用前端脚本
  • .NET 药厂业务系统 CPU爆高分析
  • .Net中间语言BeforeFieldInit
  • .net中我喜欢的两种验证码
  • []C/C++读取串口接收到的数据程序
  • [ACTF2020 新生赛]Include
  • [ai笔记9] openAI Sora技术文档引用文献汇总
  • [Android Pro] Notification的使用
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [BZOJ1053][HAOI2007]反素数ant
  • [BZOJ1060][ZJOI2007]时态同步 树形dp
  • [C#] 基于 yield 语句的迭代器逻辑懒执行