在路由器上搭建SVN服务器

SVN托管服务大家都不陌生了,我最早开始用的是谷歌提供的SVN,因为在上面托管的项目都是开源的,所以当有些项目不方便在网上公开的时候,就需要自己搭建SVN服务器了。windows、linux的用的是最多的了,但是有时候为了放一个SVN要单独放一台电脑并24小时开机,不符合节能减耗的目的。所以今天笔者就做一个大胆的尝试,使用路由器架设SVN服务器,路由器的功耗只有电脑的百分之一,而且平常也都要开机,这看起来有点像天方夜谭,因为路由器不论是CPU、内存还是ROM上,都远远不如一台电脑,甚至不如一台普通的安卓手机的性能,但是毛主席说过“实践是检验真理的唯一标准”,所以我们今天就来做一个尝试并检验它的可能性。

我们都知道,路由器的操作系统也是基于Linux的,既然Linux上可以搭建SVN,那理论上路由器也是可以的,只是我们要用到第三方的路由器固件,因为路由器自带的固件是封闭的,功能上也有一定的限制,所以我们这里需要一台满足这样需求的路由器:至少带一个USB接口(可以用来挂载U盘或者移动硬盘之类的),可以刷DD-WRT、Openwrt、TOMATO其中的一种。在本文中,我们用的是华为的HG255D路由器,因为这台路由器全新的也就不到100块钱,淘宝二手的50左右即可,有一个USB接口,硬件配置是:CPU Ralink RT3052@384Mhz,16M FLASH,32M DDR内存(+20可以升级64M性能更好)。可以刷DD-WRT和Openwrt系统。

路由器怎么刷第三方固件网上已经有很多资料了,这里就不在详细说明,我们直接拿刷好DD-WRT系统作为今天的测试平台,其他系统基本上操作也都差不多。

1、首先拿一个1G以上的U盘,在Linux系统中格式化为ext3格式,然后插在路由器的USB接口上,打开浏览器输入192.168.0.1(根据自己实际IP)进入路由器管理界面,然后点“服务”-“USB”选项,按照下图中打开USB支持,并将U盘挂载为opt,点应用后如果提示Status: Mounted on /opt则挂载成功。

2、接下来再点选项卡“服务”-“服务”,然后启用SSH并应用,如下图所示:

3、第三步下载PuttyMan,打开软件后新建连接,注意用户名那边无论路由器的用户名是什么都要填root,密码则是路由器的密码,如下图

4、连接路由器,如果出现下图中信息,那么恭喜你,已经离成功只有一半了,否则请重复前面2步。

5、在PuttyMan客户端中输入以下命令:(请先确认USB存储设备已挂载到/opt)

wget http://www.3iii.dk/linux/optware/optware-install-ddwrt.sh -O - | tr -d '\r' > /tmp/optware-install.sh
sh /tmp/optware-install.sh

在这里我要讲一下题外话,原先是本来考虑用其他Linux系统安装svn的方法,直接下载svn安装包,但是试了很多次都不成功,因为路由器的Linux是属于轻量型的,里面很多库都不支持,比如gcc库,而安装gcc库的时候又缺少其他的依赖库,所以走了不少弯路,事实也证明用这种方法几乎是安装不了的,因为安装了太多的库也会导致路由器硬件性能跟不上。所以后面才想到用optware这个更简单的第三方软件运行环境。这也是为什么第一步中要把U盘挂载为opt的原因。

6、等安装好optware后会提示successfully,接下来就可以用功能强大的optware了,在命令中继续输入以下代码更新opt软件列表:

cd /opt
ipkg-opt update

7、你可以输入ipkg-opt list显示所有可安装的软件(还可以安装httpd、mysql、php等等,挂上你的个人主页),这里我们只需要安装SVN,所以输入

ipkg-opt install svn

8、安装好SVN后可以在命令行中输入svnserve --version检查一下SVN是否安装成功,如果可以正常显示svn版本号,那么恭喜你,你已经成功在路由器上运行SVN服务了,接下来让我们启动SVN服务,输入命令:

svnserve -d -r /opt/svndata/

9、为了方便每次路由器关机后会自动启动服务,我们可以把它添加到路由器的启动命令中,点“管理”-“命令”选项卡,然后在指令的最后面添加以上代码并保存为启动指令即可。

10、接下来就是测试了,为了方便测试我们开启路由器的Samba服务,进入“服务”-“NAS”选项卡,启用Samba服务,并在文件分享那边选择opt

11、然后打开我的电脑,点“工具”-“映射网络驱动器”,将路由器U盘映射为A盘,映射只是为了方便访问,也可以直接在运行中输入\\192.168.0.1来访问

12、回到命令行中输入

cd /opt/svndata
svnadmin create svntest

13、打开文件夹,修改这3个配置文件,具体方法参照Linux中svn配置

14、然后回到windows中检出,在版本库中加入我们的程序代码并提交。

提交测试:

检出测试:

路由器负载显示正常(当负载超过7的时候路由器一般会死机):

哈哈,太令人振奋了,和以前用的SVN服务用起来没什么两样,简直看不出来这是用一台路由器搭建的SVN,测试结果很成功,太完美了。

15、如果需要外网可以访问,则启用动态DNS即可,这样不管家里的IP怎样变化,也可以用域名来访问了,这样使用更方便。如下图设置,方法很简单就不再具体说明。如果你觉得本文对你有帮助,就帮我点一下推荐吧。(完)

 
 
 

在路由器上搭建SVN服务器的更多相关文章

  1. 打破常规——大胆尝试在路由器上搭建SVN服务器

    注册博客园挺久了,一直比较懒,虽然有几次想写点文章,但是一直没有行动,今天给大家带来一篇比较有意思的文章,不涉及技术上的,希望大家轻拍.本文的文字和图片全部为原创,尊重作者转载请注明出处! 说起路由器 ...

  2. 如何在win上搭建SVN服务器

    本博文转自:http://www.cnblogs.com/armyfai/p/3985660.html SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本, ...

  3. svn使用---在CentOS 7上搭建SVN服务器 及windows搭建svn步骤

    svn搭建方法: https://blog.csdn.net/helijie92902/article/details/51935122?foxhandler=RssReadRenderProcess ...

  4. 在DigitalOcean云主机上搭建SVN服务器

    最近买了个DigitalOcean主机,顺便搭建个PPTP SVN服务器. 下面是搭建方法: https://www.digitalocean.com/community/tutorials/how- ...

  5. 在linux上搭建SVN服务器并自动更新至WEB目录

    1.仓库放在 /var/svn/ 目录下,并且仓库名为 project 2.创建用户组user,该组下添加两个成员user1.user2,密码直接用用户名,两用户可以checkout代码和提交代码 3 ...

  6. 在centos上搭建SVN服务器和MySQL

    ----------搭建MySQL--------------- 1.查看yum库中的mysql yum list | grep mysql //查看yum库中的mysql 2.选择需要的mysql进 ...

  7. 在CentOS上搭建svn服务器及注意事项

    系统环境 CentOS 5.9 推荐使用yum install安装,比较简单   一.检查是否已经安装其他版本svn # rpm -qa subversion #卸载svn # yum remove ...

  8. mac上搭建svn服务器

    1.terminal 执行svnadmin create 库地址/库名,生成的即为svn库根地址. 2.修改对应目录下conf/svnserve.conf文件: anon-access = read ...

  9. linux上搭建svn服务器

    1.检查当前版本,没有的话用yum安装rpm -qa subversion 2.安装yum install subversion -y 2.建库mkdir -p /home/svn/projectsv ...

随机推荐

  1. 拾人牙慧,浅记一些C++的类

    这两天没事又翻了翻Primer,发现自己上岁数了,记单词能力开始下降,索引把一些简单的例子记下来,把一些肥肉剔除,剩一下骨头,方便今后Ctrl+F.  在此感谢:   http://ticktick. ...

  2. The Swift Programming Language-官方教程精译Swift(4)字符串和字符

    String 是一个有序的字符集合,例如 "hello, world", "albatross".Swift 字符串通过 String 类型来表示,也可以表示为 ...

  3. C# 程序自动批量生成 google maps 的KML文件

    原文:C# 程序自动批量生成 google maps 的KML文件 google maps 的 KML 文件可以用于静态的地图标注,在某些应用中,我们手上往往有成百上千个地址,我们需要把这些地址和描述 ...

  4. JavaScript语言基础知识11

    JavaScript字符的比较. 在接下来的学习内容的开始,我们先来看一下alert()此功能,它是一个消息框. OK,接下来正式介绍代码: <HTML> <HEAD> < ...

  5. Jquery AJAX POST与GET之间的区别

    1:GET访问 浏览器 认为 是等幂的就是 一个相同的URL 只有一个结果[相同是指 整个URL字符串完全匹配]所以 第二次访问的时候 如果 URL字符串没变化 浏览器是 直接拿出了第一次访问的结果 ...

  6. 快速构建Windows 8风格应用26-本地应用数据

    原文:快速构建Windows 8风格应用26-本地应用数据 本篇博文主要介绍如何获取应用的设置和文件容器.如何将数据写入设置.如何从设置中获取数据.如何删除设置中数据.如何将数据写入文件.如何从文件中 ...

  7. 用持续集成工具Travis进行构建和部署

    用持续集成工具Travis进行构建和部署 用持续集成工具Travis进行构建和部署 摘要:本文简单说明了如何使用持续集成工具Travis进行构建和部署的过程. 1. 概述 持续集成(Continuou ...

  8. DDD分层架构之值对象(层超类型篇)

    DDD分层架构之值对象(层超类型篇) 上一篇介绍了值对象的基本概念,得到了一些朋友的支持,另外也有一些朋友提出了不同意见.这其实是很自然的事情,设计本来就充满了各种可能性,没有绝对正确的做法,只有更好 ...

  9. C# 通过扩展WebBrowser捕获网络连接错误信息

    想捕获WebBrowser连接指定网站过程中发生的错误信息,包括网络无法连接.404找不到网页等等错误!经过网上的搜集,找到了以下解决方案,该解决方案不会在网站连接前发出多余的测试请求. 向Webbr ...

  10. 文件合并工具DiffMerge发布4.2版本

    DiffMerge一直是文件对比合并工具的佼佼者,其最大特点是多文件对比与合并,并提供可视化界面用于编辑. 此次DiffMerge v4.2发布,提高了文件差异对比,并提供了快速匹配功能,以及更好的用 ...