懒癌患者的VPS搬家填坑记录

背景介绍

  之前几年一直用着搬瓦工的年付10刀以下的VPS,放个博客建个私人机场,时不时跑点数据,用起来美滋滋的。结果后来一纸通知彻底停掉了OpenVZ架构的主机,粉碎了把它当传家宝的希望。

  要上年付19.9刀的套餐实在囊中羞涩,谁知道后来竟然连这个套餐也没有了,于是到头来又得重新找便宜的VPS。好不容易找到了注册好了,作为一个懒癌患者愣是磨蹭到搬瓦工到期的最后一天才开始慢慢搬家。

  今天要记录的就是这次搬家过程中打算实现的目标和遇到的小问题。

  主要目标及达成情况

  1. 原有功能不变√
  2. 博客从HEXO架构转移到HUGO架构 ×
  3. 利用Caddy实现全站HTTPS√

  本来想更换到 Hugo 是之前HEXO用到后期速度变慢了,结果后面又舍弃不下现在用着的这个主题,所以最终还是没有更换到 Hugo。

  下面是这次遇到的坑,内容有些水哈~

Caddy启动失败

  其实最早接触 Caddy 是为了构建私人机场,发现它配置非常简单,而且很容易实现 HTTPS,所以这次在新的VPS上彻底停用 nginx,直接全站启用Caddy来进行管理了。

  然而在这次实际使用的过程中,老是启动失败。后来解决也简单,发现是域名配置打错字导致卡在获取TLS证书上,后面重新修改好就能正常启动了。

Caddy 403 forbidden

  成功启动Caddy之后,我是通过ln -s软连接来把 HEXO 的 public 目录链接到 www 目录下面,但是访问的时候总是显示403 forbiden

  通过查看日志,老是Permission denied,后来发现问题出在 systemd 的配置上面,以前我是用 Caddy 是通过 supervisor 来作为进程守护的,后面因为同时用 supervisor 来守护了其他的某个软件,不想在调试修改配置的过程中老被重启整个 supervisor,所以就换成了 Caddy 官方相对比较推荐的 systemd 来做守护启动。

  可是默认的 systemd 配置文件中的ProtectHomeProtechSystem对一些安全相关的目录做了保护,而我这个 public 文件夹刚好在被保护的 /home 目录下,所以访问的时候就 403 了。

  解决只要修改 Caddy 的 systemd 配置文件即可,即/lib/systemd/system/caddy.service文件。有这样的配置:

1
2
3
4
; Hide /home, /root, and /run/user. Nobody will steal your SSH-keys.
ProtectHome=true
; Make /usr, /boot, /etc and possibly some more folders read-only.
ProtectSystem=full

  把ProtectHome=true改为ProtectHome=read-only就行了。

HashOver评论异常

  自从多说停运之后,我的博客就开始启用HashOver作为评论系统(见前文),不过当时搭建好了之后就再也没有更新过系统版本。这次搬家顺带把 HashOver 从之前的老板本升级到新的 hashover-next 版本。

  新旧版本的引入文件有所变化,要把旧版本的hashover.js引用路径替换成新版本的comments.php或者loader.php

  即

1
<script type="text/javascript" src="/hashover/hashover.js" ></script>

  改为

1
<script type="text/javascript" src="/hashover-next/comments.php" ></script>

  旧版本的评论内容是放在pages文件夹下,新版本改到了comments文件夹,并且文件内容也不同。

  旧版本的文件夹结构是这样:

1
2
3
4
5
6
7
8
9
10
11
├── pages
│ ├── posts-post-76
| │ ├── 1-1.xml
│ │ ├── 1.xml
│ │ ├── 2-1.xml
│ │ ├── 2.xml
│ │ ├── 3-1-1-1.xml
│ │ ├── 3-1-1.xml
│ │ ├── 3-1.xml
│ │ ├── 3.xml
│ │ └── .metadata

  新版本变成了多级结构,并且 metadata 文件也有相应变化,把原本的.metadata文件拆分成了latest-comments.jsonpage-info.json文件。

  新版本的文件夹结构是这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
├── comments
│ ├── metadata
│ │ └── latest-comments.json
│ └── threads
│ ├── posts-post-76
│ │ ├── 1-1.xml
│ │ ├── 1.xml
│ │ ├── 2-1.xml
│ │ ├── 2.xml
│ │ ├── 3-1-1-1.xml
│ │ ├── 3-1-1.xml
│ │ ├── 3-1.xml
│ │ ├── 3.xml
│ │ └── metadata
│ │ ├── latest-comments.json
│ │ └── page-info.json

  我发现json文件是可以自动生成的,所以直接摒弃掉原来的.metadata文件,然后用cp命令把之前的评论文件直接拷贝到新的地方的,并且批量生成metadata子文件夹并设置权限。结果发现有些评论正常有些评论不正常。

  后来偶然间发现,不使用cp命令来复制过去,而是直接诶在 C9 IDE 下面拖动文件夹到新的地方,结果就正常了。后面想来,大概是还有一些会影响显示或者编码的隐藏文件, cp 的时候原样过去了,而拖动的时候忽略掉了,反而正常了。不过这只是个人猜想,并没有得到证实。

后记

  除了上面一些问题之外,其实这次也遇到了诸如 sendmail 配置不正确,postfix 域名解析不成功等小问题,不过基本上都是稍微查一下就能解决的,就不赘述了。

  经过此番折腾,这个荒废的博客基本上又能苟延残喘一段时间了。

文章目录
  1. 1. 背景介绍
  2. 2. Caddy启动失败
  3. 3. Caddy 403 forbidden
  4. 4. HashOver评论异常
  5. 5. 后记
|