玩票试水到深度应用
一开始买这台服务器,是只打算搭一个博客。
博客可能是不少同学买服务器的原因,实话讲一开始我认为我是临时性的技术自嗨,三分钟热度过去了估计就完了,写博客也就抛脑后了。所以一开始就买了个最便宜的服务器 - 1核2G的轻量应用服务器。
一个1C2G的服务器能干个啥?4个月过去了,不仅博客还勉强在写,RSSHub/FTP/远程桌面/Switch加速以及开发一些服务和一个插件的服务端,都跑在这台机器上。
从买个服务器玩玩的心理,到现在确实挖掘了些应用场景方便到我:不仅用作博客,还支持了不少生活工作中场景。
同时现在跑了这么多服务,服资源上居然还有可压榨的空间,心里感受正应了让子弹飞里的那句台词。
记录下在机器上折腾过的一些服务。不会细写某一步应该点哪个按钮或者执行哪条命令,会把这些操作相关的链接放在文章里,比起这些我认为实践用例可能会更有分享价值,我也更关注其它工程师怎么折腾场景应用来寻找启发。
近期一些实践
1. 博客
一开始我选择的是传统的wordpress,LAMP架构。虽然涉及软件是较多的,轻量应用服务器初始化时,有开箱既用的Wordpress环境镜像可直接应用选择。即便手工安装( 链接一 / 链接二 )Apache/Nginx/Mysql/Php网上的教程也非常多。
如果是非技术背景的同学,建议用wordpress,开箱既用插件多。对于技术同学我更推荐
Hugo
/
Jekyll
/
Hexo
。毕竟对于技术来说,Vim是最强的编辑器,Markdown是最好用的富文本语言,而HTML/CSS/及VUE/React则是最顺手的主题功能插件。我后期也考虑现在也已经切到hugo,资源层面再节省一大节。
因为主机在香港,刚开始国内部分区域通达性不佳,所以用Cloudflare做了内容加速(实际上Cloudflare在国内真提供不了加速,很慢。但提供的缓存服务可减少机器流量消耗,也提供免费的https/ssl证书)。
因为网络很慢,之前也试了 PWA 技术对一些资源本地化缓存(pwa必须要求是https)。总体来说还行,博客也不追求性能。这套方案稍微改了一下,也应用到一个Chrome插件服务端上,这个后面讲
关于博客,不管用什么技术,最大的建议是一定要备份。
我写博客是断断续续的,可能大多数同学也一样。几年前有个博客文章产出比较多,当时不少公司和猎头通过博客来联系我,但进入阿里后就中断了。
中断不可怕,断断续续地写可能才是常态,但内容应该作为资产一样保留下来。当时服务器过期未续费导致数据都丢失了,现在很心痛,目前也还能看部份文章星零的在不同平台被转载。
断断续续的写,只拉长到足够的时间,都是可观的积累。
博客在于内容积累而折腾技术,一定做备份机制。要做到即使这台服务器不在了,内容也能快速的恢复。如果用wordpress,可用类似UpdraftPlus插件备份定期到信任的网盘上。如果用hugo/hexo太等,那在github上开一个仓库就好了,即使未来重新在其它地方部署,也能很快恢复。
对于图片媒体资源,不要将外部图床做唯一存储,这会内容管理分散并还有丢失的风险(如果是蹭的图床服务),以后恢复腾挪也更困难。
我曾经有些文章因图片丢失导致文章恢复困难,对写博客来说,制图的成本不比文字低。如果是担心流量消耗过多,可以使用CDN技术或者图床来帮忙做加速,而不是将唯一备份放在网盘或者图床上。
视文章为资产,应该尽量减少打理管理资产的成本和花销。
2. FTP与远程桌面
FTP的搭建就更简单了,网上随意搜索就有很多文章,FTP很多时候是比较鸡肋的需求,但如果是多设备用户,搭一个FTP及一些多端协同服务就很有用了,下面是我的日常设备示意图。
不同环境的多个端之间共享文件是个常见的诉求。我一开始也是搭建的网盘,还是被ftp/scp/rsync取代了,FTP是一个非常成熟的协议,在多个端都有不错的客户端。同时对于技术出身的同学来说,用shell真是的太方便了。
因为有多端的诉求,所以远程桌面就显得更重要的,我在服务器上有一个通用的服务,需要从不同端的上去查看结果或者管理。
VNC也是一个非常成熟的协议,可以在任何端上去访问,随时随地召唤一台电脑(如果早点有这个,那当年某阳师Gua机就能随时随地检查调整了)VNC的安装也很简单( 链接一 / 链接二 ),我的桌面环境用的最轻量级的xfce4。
不过默认的2G内存要跑ubuntu+xfce+vncserver够呛,一旦连接上去,开一个chrome就会卡死。卡死后需要去阿里云控制台重启。这里一定要开启 SWAP 交换区虚拟内存,再加2G就会很从容。
另外由于服务器在香港,我的switch也退掉了一个游戏加速器的服务的订阅费,现在玩怪物猎人组队,或是访问任天堂商城都很顺畅,NAT有时候能到A(不过下载速度一般,1-2M左右)。
3. RSSHub与个人源聚合
这又是日常离不开的一个服务了,我用 RSSHub 搭了一个自己的信息聚合源。
信息爆炸的时代,大平台上的自媒体多是是低质的。缺少观点、情绪化、重复拷贝是这些信息的特点。且往往利用的人性的弱点,比如抖音的成隐性,第一次刷抖音感觉只刷了一会,结果一没注意一个下午就过去了。整个过程中没有任何有益信息的输入,当时当即卸载了也再也不碰了。这些低质量内容在网上的传播很广,盖过了有真知灼见的信息与文章。为了这些低质量的信息中(内容牧场)脱离出来,最后还是选择启用的RSS。
现代博客都支持RSS源输出,这里有一份社区整理的 中文博客清单 (如果你有博客也可以向这个清单提交)。
如果关注的人在公众号/微博或其它新闻媒体上更新,这些平台不支持rss输出,就需要用到RSSHub。它可以将任何一种信息源(包括网页)转化为RSS源,推送到RSS客户端上,比如我定向抽取了几个微博博主发文,也把关注城市的土拍公告转化成RSS源。应用场景上比较广大,深度使用需要一些二次开发工作。
什么是注意力丧失。举个例,如果你现在想去查一个博主文章中的某个数据。点开微博,进到这个博主的列表,找到了那篇文章,但这个过程中有一个广告,你无意识的看了一下,之后又有一个相关内容推荐,后面还有视频……
“查到那个数据”,本是个很直接的路径,但过度的推荐推送服务让路径变得乱七八糟,浪费时间。长久下去更是注意力丧失,能读一篇超过10分钟文章,已是我们当代人面临的挑战了。很建议重整自己的信息源。
因为国外IP访问国内的一些服务可能会被国内平台限制,最近把RSSHub搬到国内服务器了。
4. Chrome插件服务
给自己开发的一个Chrome插件,主要就优化搜索引擎体验的,插件要依赖一个HTTP服务,如下图所示的部分。
由于是自用插件,所以没有考虑过HTTP性能的问题。后面朋友们想用,就上架到了Chrome/Edge应用商店。一开始也没有什么人下载,没在意。但后面发现经常打不开这个页面,才发现虽然Chrome商城里显示没什么人用(Chrome Store统计不到国内使用情况),但实际线下安装包已经不少用户了,下载JS/CSS经常会把流量打满,这对这台小服务器预期之外的。
结合讲博客时的结构图,首先我把这个服务也上到了Cloudflare,这下整体访问稳定性有一些了。但仍然非常慢,慢在dns解析与网络传输。于是在原有结构上做了变化
一是在客户端引入dns-prefetch,解决dns解析慢的问题( 推荐一篇前端网络优化的好文 ),然后发现 Vercel 有100GB的流量且速度与通达性都不错,将把css/js等资源放在vercel上了,免费100G/月的流量,用来帮轻量应用服务器分担静态资源。
具体的方式,是在Vercel上搭了一个Hugo(注册好Vercel绑定好Github后,Vercel有自带的Hugo镜像可供直接选择安装),然后把插件服务依赖的资源放在了Hugo服务的 静态文件目录直接提供http服务 中。如果遇到Hugo版本问题,可以在项目Settings通过环境变量HUGO_VERSION指定版本。
另外开发这个插件的过程中,这台服务器还有个妙用:模拟低性能桌面系统。尤其在测试实际渲染效果时,比Chrome自带的模拟慢速功能真实很多。每次发版前,都会在这台机器上跑一下作为性能验收。😂
5. 一些试过又放弃的服务
-
Gitlab 一开始搭了一个gitlab,后面发现github的通达性在慢慢变好(以及这台服务器上有小猫咪)。并且github在存储/代码服务上都很有优势,所以搭了gitlab后又也没有用起来。如果不是对个人的代码有绝对私密和安全要求,建议github就行了(github的私有仓储也不收费可以随意创建了)。
-
NextClound 开始在多端协同是想搭网盘,后面也没有用起来,被ftp/rsync/scp+shell取代了。一是因为FTP是一个非常成熟的协议,在多个端都有不错的客户端。二是对于技术出身的同学来说,用能shell脚本,配合scp/rsync/ftp等服务用非常方便灵活。
接下来继续折腾
上面便是最近的一些使用实践了。从一开始只想搭个博客,买个服务器技术性自嗨,到现在真切的影响到工作生活体验。无论从服务器能力、场景应用上都还很超期。
脱离一线工程研发工具比较久了,但这段时间围绕这台小机器折腾的过程中,再次感受到工程技术的乐趣,也实际带来的方便。
如果说架构师工作是讲究规模与治理,讲究在概念空间与工程架构之间的zoom-in/out。那工程技术的能量就是最直接的创造力/破坏力。技术融合场景创新,这话有点空,但以服务自己生活为目标,不想那么大,总能长出不少点子来。
接下来准备再基于这套服务器做一个信息服务。一方面还是以服务自己日常生活为目标,同时也是看着服务器的内存和CPU空置让我觉得还有继续压榨的空间。计划是利用阿里云FaaS做Serving,用这台轻量级服务器承接存储服务(ES)。
事实上我建议很多小型初创公司,都可以考虑将自生的serving部分打散,可以更激进一些直接到FaaS模式,在业务中间期以较少的人力获得较高的创新效率与服务保障。
现在的基础设施真5年前7年前便捷了太多,但技术设施就静静躺在那里,能不能找到场景发挥作用,更多是看工程师自己。再往后,准备再买一台国内的ECS/轻量级服务器,除了数据相关的,服务类的全容器化掉。建一些服务,应该可以退掉一些云盘/会员订阅等云服务。
如果也有类似想法,可以考虑试试阿里云 轻量应用服务器 。