说在前头
上次文章还没写完呢,先鸽着。我已经决定不续费阿里云服务器了(费用和资源利用率问题)。但是少部分项目,如SnowBao雪宝,迁移到云函数上要改很多东西,我懒得动,所以还是要有一个简单的服务器。要不自己部署一个?
开始折腾
回家了,得继续折腾!为此,我入手了一台入门软路由,配置如下:
| 硬件 | 型号 |
|---|---|
| 主板 | 升腾NI945W-3 |
| CPU | Intel(R) Atom(TM) CPU D2550 x86_64 |
| 内存 | 金士顿DDR3 2G |
| SSD | 慧荣SM2244LTAB 8G |
配置好像不咋地?没关系,我部署的应用不怎么占内存和CPU的。卖家帮忙刷好了eSir编译的OpenWrt,由于我家联通宽带有公网IPv4地址,所以我就想说干脆搭一台宝塔服务器放家里算了。我部署的一些网站并不要求高可用,故家里短暂停电也没有太大关系。
我没有将其作为主路由使用,而是作为客户端使用,那么它的路由功能相当于废了!因为我不想引起现有路由配置的改变,懒得动。
哪来的公网IPv4地址
现在运营商一般拨号后给的是内网IP地址了,不像十几年前我家刚接入ADSL 12M铜线宽带每个人还有一个独立IP,甚至80端口还是开放的。现在买宽带的人越来越多,而我们国家被分配的IPv4地址才3亿多个,很少很少,所以运营商只能使用NAT技术来缓解公网IPv4地址紧缺的情况。但是!长沙联通可以在宽带账号后面加上@changsha,其他地区联通可以加上@pppoe拨号来获取公网IPv4地址,如果不行或者是其他运营商请致电客服获取公网IPv4地址。
我家是光猫拨号咋整
现在安装网络的时候,师傅帮你在光猫里面配置好了宽带账号密码啥的,而且光猫的DMZ功能好像是假的,所以我们需要用路由器来拨号。我们可以去网上搜索光猫的超级管理员账号密码,然后进Telnet后台把宽带账号密码查出来备份,最后在网页管理端把连接方式修改为桥接模式(Bridge )即可。然后我们可以重置路由器,使用PPPoE拨号上网即可。
IPv4地址变化怎么搞
我们家庭宽带不像企业专线一样有固定IP地址,我们的IP地址都是由运营商随机分配的,所以我们做域名解析的时候咋弄?最简单的就是路由器的DDNS功能了,像我家TP-LINK的路由器自己有DDNS,注册一个账号登录即可,会给你一个域名,然后把自己想要解析的子域名做CNAME到DDNS的域名即可。我总觉得这样不是很优雅,我的域名解析商是DNSPod,提供了API接口供修改解析。刚好Python里面有朋友封装了这些接口,模块名是:dns-dnspod,使用pip3 install dns-dnspod即可。所以我们可以使用这个来给域名做A记录。我们先去创建一个解析记录,然后通过API取得record_id,然后定时修改解析记录即可。
我用Python相关代码如下:
1 | import requests |
然后使用crontab创建定时任务,每几分钟运行一次即可。
OpenWrt怎么安装宝塔
OpenWrt本身应该不能安装宝塔,但是这个固件有Docker呀,我们可以pull一个CentOS最新的镜像,然后执行
1 | docker run -itd --privileged -e "container=docker" -p 443:443 -p 8000-9000:8000-9000 --name="centos" --restart=always 300e315adb2f /usr/sbin/init |
就创建了一个新的容器,并暴露了一些端口。为啥不暴露80,是因为家庭宽带的80端口被封啦。然后再在容器里面执行
1 | yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh |
等一会儿就OK啦,记得把默认的8888端口地址改改。
怎么守护Python后端服务
宝塔安装Supervisor进程管理器,添加守护进程即可。用到Python虚拟环境的可以写上虚拟环境里Python的完整路径来执行程序。
结语
用了几天感觉这个小主板还是挺不错的,不卡也稳定。百来块钱,体验到了非一般的感觉~
目前SnowBao雪宝已经完全迁移到了软路由上了,希望大家用的开心。

