搭建软件仓库回源代理拾遗

栏目: 后端 · 发布时间: 7年前

内容简介:这次机器升级带来的服务大迁移过程中,我发现之前设定给 Npm 仓库、Docker 仓库专用的代理服务失效了。之前这台专供仓库使用的代理服务,是跑在一台古老的群晖设备(DS115j)上的,当我探寻问题登录设备之后,发现了一件事:不光是代理程序进程消失了、守护进程管理软件也消失了,这大概率是群晖系统自动升级造成的。考虑服务稳定性和维护成本,我决定把代理服务从群晖中剥离,正巧前一阵收拾屋子,发现还有一台“MTK7621”的迅雷下载宝,决定废物利用一下,做一台稳定性更高的代理服务设备。

这次机器升级带来的服务大迁移过程中,我发现之前设定给 Npm 仓库、 Docker 仓库专用的代理服务失效了。

之前这台专供仓库使用的代理服务,是跑在一台古老的群晖设备(DS115j)上的,当我探寻问题登录设备之后,发现了一件事:不光是代理程序进程消失了、守护进程管理软件也消失了,这大概率是群晖系统自动升级造成的。

考虑服务稳定性和维护成本,我决定把代理服务从群晖中剥离,正巧前一阵收拾屋子,发现还有一台“MTK7621”的迅雷下载宝,决定废物利用一下,做一台稳定性更高的代理服务设备。

如果你有闲置路由器或者下载宝,也有类似需求,那么下面的内容,应该可以帮到你。

更换服务载体的考虑

为什么选择类路由设备的下载宝作为服务载体呢,主要是考虑以下几个角度:

  • 稳定的白盒环境:
    • 相比较在低端群晖中使用(非 Docker 容器运行),会受到不确定的系统环境变化影响,开源的 OpenWRT 更值得信赖,从配置到应用软件,全部都敞开在你的面前。
    • 路由器文件系统多数只读,保障了环境的稳定。
  • 相对够用的资源:
    • 性能足够,发热量低。
    • 下载宝支持通过 USB 进行储存扩展,当然,使用机身自带的 SD / MMC 卡槽扩展的容量也足够我们使用了。
  • 安静却不失小巧:
    • 如果说 DS115j 几乎静音,下载宝、多数路由无风扇设计的设备则是绝对静音。
    • 相比较一本大部头书厚的 DS115j 来说,下载宝和小米充电宝差不多的体积,极大的节省空间。

初始化设备

编译固件,网上讲的太多了,这里就不赘述了,教程在 GitHub 和一些个人博主的日志上都有,如果实在懒得编译可以使用网上的固件,寻找你信任的作者的三方固件也不是不可以。

我这里会着重写一些和常规路由器不同的地方。

由于下载宝只有一个 RJ45 接口,所以他只能作为单臂路由或者普通的网络客户端使用,这里我们为了更少的性能损耗和维护成本,会将设备作为网络客户端使用。

选择 BootLoader

在进行固件刷新之前,考虑到有可能出现固件刷新失败造成无法启动、无法再次刷入,建议先了解并刷入一个稳定可靠的 BootLoader ,普遍的选择是:

  • breed
  • uboot

我这里推荐使用 Breed ,如果你使用的设备也是下载宝,那么可以使用下面的地址:

html

当你将 Bootloader 刷入设备之后,下载宝启动进入 Breed 和其他的设备不同,需要长按的不是 Reset 按键,而是位于 Reset 按键小孔上方的硬盘弹出按钮。

断开设备电源,长按硬盘弹出按钮,给设备供电,等待设备启动完毕,访问 http://192.168.1.1/ 即可打开 Breed 的管理界面。

在进行刷机过程中,除了选择你的固件文件之外,其他一切保持默认值即可。

默认鉴权

如果你使用的官方配置编译出的固件,默认账号一般是 root , 密码为 admin

在登录管理界面之后,需要对 Dropbear 提供的 SSH 访问功能中添加你的 SSH 密钥, 以方便后面的操作。

时间相关设置

有的代理软件考虑重放攻击,所以会涉及到“当前执行环境时间”这个因素。

为了保障这类软件的正常使用,我们需要先设置靠谱的 NTP 服务器,从网上可以找到大量资源,比如:

1.cn.pool.ntp.org
ntp1.aliyun.com

选择你觉得靠谱的,进行设置就好了。

清理无用软件

考虑到我们只是要一个稳定可靠的代理服务,所以官方固件、三方固件中包含的许多内容是可以直接清理掉的,比如我们不需要文件共享服务等。

bash

可以看到,如果你想连锅端一些软件,可以使用 --force-removal-of-dependent-packages 这个参数,但是这个参数不是万能的,对于 CLI 软件和管理面板脱离的安装包,还需要额外进行卸载操作。

另外,如果你对 luci-* 软件包进行了卸载,必须进行重启,才能够将管理后台上的菜单完全干掉。

准备软件存储空间

前面提过,路由类设备的文件系统多数被设定为了只读类型,一旦重启将会把所有修改打回原形,除非执行了一些特殊的命令,将改动同步到设备中。

并且多数设备可用闪存的空间都非常有限,这里要外储存器进行一些操作,来扩展可用空间。

在进行空间扩展之前,需要先了解哪个设备该被“安排”,使用 fdisk 命令:

bash

这里名为 /dev/mmcblk0 的设备就是外置储存卡了,使用 mkfs.ext4 命令可以对其进行格式化。

bash

当设备格式化完成之后,我们并不能够真正的开始使用。

如果你熟悉操作 fstab 的话,直接编辑 fstab 文件可以把刚刚格式化好的分区进行挂载点分配,如果不熟悉,OpenWRT 管理界面有专门针对挂载点进行设置的页面。

我这里将刚刚的储存卡使用 ext4 文件系统挂载到了 /data 目录。

将设备设置为网络客户端

将电脑和下载宝使用网线连接,因为我们不需要将它当路由使用,所以可以在管理界面将 DHCP 服务先进行关闭。

然后打开接口管理界面,将唯一的接口的网络协议设置为 DHCP 客户端 ,这里需要注意,当你点击保存后,新版的控制台会先进行尝试配置,这个配置是 肯定会失败 的,所以会提示你是否要进行 回滚操作 还是继续进行 强制应用 ,当然是后者。

在你点击强制应用之后,便可以将下载宝和电脑断开连接,将下载宝和路由器进行连接,然后直接访问路由器分配的IP即可继续进行管理操作。

因为是在内网进行服务,所以可以继续在接口配置中,将 IPV6 关闭。

安装OpenWRT离线软件包

通过 SCP 等命令,我们可以将下载好的软件安装包传送到下载宝上,但是当你使用 opkg 命令进行安装的时候,很可能会遇到下面的情况:

bash

解决方案其实很简单,先通过 opkg 命令查看你支持的软件包。

bash

可以看到,下载宝支持的软件包架构是 mipsel 24kc

而如果你要查找一些软件的话,可以从官方的软件仓库中获取: http://archive.openwrt.org/releases/18.06.0/packages/

配置代理软件

代理软件有许多种,所以这里不对具体的软件进行配置,只是聊一下一些通用的处理。

自动启动

使用命令行启动代理软件很容易,但是如果想达到“判断程序没有运行再执行启动命令”就需要借助脚本来实现了。

; then
    echo 'Start new proxy client.'
    /data/软件名称 &
fi]
bash

将脚本保存到一个固定的位置,比如上文中提到的外置储存器中 /data/check.sh ,然后配置“计划任务”(crontab) ,然系统每分钟自动检查是否应该启动代理软件,避免代理软件崩溃后无法提供服务。

bash

重启进程

非商业级产品,在长时间运行的过程中,难免出现内存泄露等问题,导致资源越用越多,但是提供的服务却越来越差,甚至完全不提供服务,变成一个僵尸进程。

为了解决这个问题,我们可以使用自动重启软件的策略,但是同样的,这里也需要编写一个简单的脚本:

; then
    echo "restart client"
    echo ${EXIST} | awk 'NR==1{print $1}' | xargs kill -9
    /data/软件名称 &
fi]
bash

同样的,在计划任务中添加一个新的脚本,可以做到让程序每小时自动重启,避免潜在的资源占用过多却不去释放的问题。

bash

最后

如果你认为你的虚拟机同样稳定、或者路由器有大量的冗余资源,也可以将这个功能放在他们上面,但是个人建议是做成 “单一职责”、“简单可依赖” 的服务,不搞巨无霸。

—EOF


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Developing Large Web Applications

Developing Large Web Applications

Kyle Loudon / Yahoo Press / 2010-3-15 / USD 34.99

As web applications grow, so do the challenges. These applications need to live up to demanding performance requirements, and be reliable around the clock every day of the year. And they need to withs......一起来看看 《Developing Large Web Applications》 这本书的介绍吧!

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具