前两天把我那个破聊天室从AWS搬到Oracle的免费小鸡上了,稳定运行了大概1天的样子,估计最后又是因为内存不足BOOM掉了。
以往BOOM了,我都是直接去SSH重启下systemd服务就OK了,这次不知道为啥不行。。
看了一下RocketChat还有Caddy/MongoDB的日志都没发现什么,就RocketChat的日志里面一直有提示说MongoDB服务没起来,等待MongoDB服务启动。。但实际上MongoDB是起来了的。。啊,就很难受。。
然后想了下,我这个RocketChat是通过snap安装的,从snap上面看能不能找到点什么线索。。
看看最近的更改:
snap changes
发现snap的自动更新报错:
ID Status Spawn Ready Summary 11 Error today at 07:15 JST today at 07:17 JST Auto-refresh snap "rocketchat-server" 12 Error today at 17:35 JST today at 17:36 JST Auto-refresh snap "rocketchat-server" 13 Error today at 18:02 JST today at 18:03 JST Refresh "rocketchat-server" snap
那就手动更新一下看看有没有具体的报错信息:
snap refresh rocketchat-server
结果确实是有错误,大概意思是说Caddy无法验证域名,因为Caddy要申请SSL证书,而我的域名接入到CloudFlare开了CDN,这样Caddy就申请不了证书,然后就报错了。
那就把Caddy的SSL给关闭了吧:
snap set rocketchat-server https=disable snap set rocketchat-server caddy-url=http://chat.ohshit.fun snap set rocketchat-server caddy=enable rocketchat-server.initcaddy
再执行一次更新就OK了,服务全部都正常起来了:
snap refresh rocketchat-server
最后到CloudFlare的SSL/TLS设置页面把Full (strict)改为Flexible即可。
自从我通过RocketChat了解到snap这个工具后,发现snap这个东西其实还是挺不错的,有时候真的挺方便。。很多复杂的软件都可以通过这个东西一键安装。。下面记录下常用命令。
snap find example # 查找软件包 snap install package # 安装软件包 snap list # 列出所有已经安装的包 snap changes # 查看最近的更改 snap refresh package # 更新软件包 snap refresh --list # 查看当前可以更新的软件包 snap refresh package --channel=channel_name # 从其他通道更新软件包,默认应该是stable,额外支持candidate/beta snap revert package # 恢复软件包为上个版本,例如这次更新不满意,就可以还原为上个版本 snap remove package # 删除软件包
最后附上snap的商店地址:
https://snapcraft.io/store