去年秋天,我接了个活:给一家做机械配件的外贸公司维护网站。他们一共有十二个语言站点,外加三个备用域名,两个测试环境。交接那天,前维护人发来一个Excel,里面密密麻麻全是后台地址、账号、密码、服务器IP。我盯着那个表格看了十分钟,默默关掉,然后打开浏览器,敲下了一行地址。那个地址,就是我后来搭的镜像站群网页版。
所谓镜像站群,说白了就是一群内容高度相似、甚至完全同步的网站。镜像,是内容上的复制;站群,是数量上的集合。过去管理这些东西,要么靠一堆浏览器书签,要么靠远程桌面挨个登录,要么写脚本定时跑。网页版的好处在于,它把所有这些散落的东西收进一个页面里,让你像看仪表盘一样看所有站点。
为什么是网页版
其实客户端软件也能管站群,但网页版有两个明显的好处。第一,不用装东西。你在任何一台电脑上,只要有个浏览器,输入地址就能操作。第二,适合远程协作。比如我可以给客户开一个只读账号,他只能看状态,不能乱点同步,省得他把正式站和测试站搞混。网页版天然适合这种权限分级。
我给它设计了几个区域:最上面是站点状态,绿点代表正常,红点代表挂了;中间是同步任务,哪些站点今天更新了,哪些还没同步;下面是日志区,谁在什么时候动过哪个文件,一目了然。最右侧是一排按钮:一键同步、批量备份、生成报告。没用什么高级框架,就一个单页应用加几个API,跑在一台轻量服务器上。
它到底能干什么
最让我头疼的是内容同步。以前改了一处模板,要手动传到十几个站,传到最后自己都忘了哪个传过哪个没传。现在我在网页上勾选所有目标站点,点“同步”,它就会按顺序把最新文件推过去,完成后返回结果。如果某个站因为网络波动失败,它会自动重试两次,再把失败原因写进日志。我喝茶的工夫,它就把活干完了。
另一个常用功能是健康检查。三十个网站,指不定哪个半夜就挂了,等你自己发现可能已经过了两天。网页版可以定时去请求每个站点的首页,如果返回码不对或者响应时间超长,就标红并发出通知。这个功能救过我一次:一个备用域名证书过期,浏览器会报安全警告,但用户不会告诉你,他们只会默默关掉页面。
这套东西不一定只给做站群的人用。我后来帮一个开源社区做过类似的小面板,用来同步他们的文档镜像:北京一个节点,上海一个节点,新加坡一个节点。谁家文档服务器挂了,面板上立刻变红,负责人手机上就能收到通知。还有一个做在线教育的朋友,他有三个几乎一样的课程网站,分别面向不同地区,以前更新一门课要登录三次,现在只在一个网页里操作。
不是所有镜像站都合规
镜像站群这个词也常和一些不太光彩的操作绑在一起。比如用大量重复站点去占搜索引擎排名,或者做成垃圾站群。那种玩法我不评价,但有一点很明确:如果你做的镜像站内容完全一样,搜索引擎大概率会判为重复内容,轻则不收录,重则降权。所以正经用途下,镜像站之间要适当本地化,比如翻译、地址、联系方式、货币单位这些差异。网页版工具能帮你同步公共部分,但差异部分得留给人工或规则。
自己动手的话
如果你也想搭一个,其实不复杂。核心就是一个网页前端加一个后端服务。后端负责和各个站点的服务器通信,可以用SSH、FTP或者各家的API;前端负责展示和操作。数据库用SQLite就够,存站点信息、任务记录、账号密码(记得加密)。我自己的版本用Python写的,前端用Vue,总共不到一千行代码。没有做过大并发,也不打算开源,因为每个人需求都不一样,照搬反而容易出错。但思路就是:把重复的事交给机器,把判断留给人。
现在那个外贸公司的项目已经稳定运行半年多了。我每周打开那个网页两次,看看状态,点点同步,偶尔处理一下报错。那个Excel早就不知道扔哪儿去了。镜像站群网页版不是什么高深的东西,它更像一个私人小工具,把原本要开几十个标签页的活,压缩成一个页面。如果你也在同时维护多个相似网站,不妨试试这个思路。不是为了偷懒,是为了把时间留给真正需要动脑的事。