由于本文中出现了一些敏感词,所以请去https://guyujiezi.com/cicada或是 gh: guyujiezi/cicada 下载安装「寒蝉」插件用于查看暗语。

服务器忘续费了当然是要赶紧续费。问题在于我的服务器是 ConoHa 家的,续费页面没「纤云弄巧」jxRPQ/XSuC5。是打不开的……而我的「纤云弄巧」jxRPQ/XSuC5。架在了忘续费的服务器上……

啧,死锁了。

找稳定的、免费的「纤云弄巧」jxRPQ/XSuC5。花了三个小时,过程按下不表。

初步续费完了之后发现 ssh 不上服务器了,于是打开了 ConoHa 提供的在线 shell,发现是因为重启服务器之后 IP、网关、DNS NameServer 之类的配置信息都被重置了,甚至都没法 ping 通外网。于是疯狂 Google,各种修……最后修好了。用时五小时,过程按下不表。

再之后发现之前架在服务器上的「纤云弄巧」jxRPQ/XSuC5。崩了。使用 「谁道飘零不可怜,旧游时节好花天」3sU0BS/IiWci。 命令启动的工作在 10234 端口的「纤云弄巧」jxRPQ/XSuC5。服务器端根本接收不到客户端的请求。于是简单调试一下:

1
2
3
$ mkdir temp-server-dir && cd temp-server-dir
$ python3 -m http.server --bind 0.0.0.0:10234
$ curl "0.0.0.0:10234"

发现是有回显的,但是浏览器里打开 http://<server-ip>:10234 一直加载。联想到之前修改过防火墙策略,初步判断是防火墙的问题。然而我之前折腾的时候分别动过 ufwiptablesfirejail……各种删规则,中间还把 ssh 连接弄断了两次……最后把 ufw 的规则给清空了,把 firejail 的所有 jail 都删除了,但是把 iptables 给弄崩了:每次 sudo iptables-apply 都会报类似于 *.log not found 的错误,尝试手动添加空白 log 之后还会继续提示别的 log 丢失。 于是想到卸载重装 iptables。此步耗时:一小时

执行:

1
$ apt-get remove iptables

结果 apt-get 告诉我之前有 linux-image-extra-4.4.0-138-genericlinux-image-4.4.0-138-genericlinux-image-extra-4.4.0-142-genericlinux-image-4.4.0-142-generic 没有删除干净,现在将会被 remove 掉。我合计着这应该是更新系统小版本的时候的残留,删了就删了,结果 apt-get 告诉我删不掉,因为一个 post-remove 的 script 执行出错了。错误回显:没有,返回码:10。没有错误回显我调试个 p 啊!掀桌!此步耗时:一小时

好了,现在这四个 package 成为了我的心头大患。删也删不掉,重装也装不回来,还拦着我用 apt-get 装、卸载别的 package。真的烦。干脆重装系统好了。

先备份:

1
2
3
4
5
6
7
8
$ alias rndname="node -pe \"crypto.randomBytes(4).toString('hex')\""
$ tar -czvf server-$(rndname).tar.gz ./server/
$ tar -czvf nginx-conf-$(rndname).tar.gz /etc/nginx/sites-enabled/
$ ls -hl
total 1.8G
drwxrwxr-x 7 4.0K Apr 23 00:34 server
-rw-rw-r-- 1 1.8G Apr 29 01:24 server-bdc98068.tar.gz
-rw-rw-r-- 1 3K Apr 29 01:24 nginx-conf-9c0ac2ef.tar.gz

然后把 *.tar.gzscp 命令拷贝到本地。此步耗时:七小时。

在 ConoHa 控制台选择恢复系统,发现 Ubuntu 18.04 的镜像已经可以使用了,于是果断装了 18.04。随后配置 ssh authorized_keys、 ssh config,安装各种 infrastructure 例如 nvmz.luahexo 等等等等,过程略过不表。随后还要 npm rebuild。此步共耗时三小时。

检查上传文章+发布的 infrastructure,发现崩了:

1
2
3
4
5
$ ./upload.sh source/_posts/服务器忘续费了之后咋就这么多事.md
script/reload.sh: line 2: node: command not found
script/reload.sh: line 3: node: command not found
script/reload.sh: line 5: hexo: command not found
script/reload.sh: line 6: hexo: command not found

于是猜测是因为这次重装系统后使用了 nvm (gh: nvm-sh/nvm) 来管理不同的 node 版本,而据我所知 nvm 的初始化脚本是放在 ~/.bashrc 里的。于是尝试为 ./upload.sh 中的在服务器上运行的部分添加了 source ~/.bashrc,并无效果。找谷歌娘问了问,发现需要 . ~/.nvm/nvm.sh (see nvm-sh/nvm/issues/521#issuecomment-54908623),果然就 work 了。

网站恢复正常运行,正式宣告此次折腾圆满结束。

来源:https://blog.jiejiss.com/