(2021-4-15) Ghost v4 版本更新大坑(建议不要升级到 v4)

长话短说

今天 2021-4-15 手贱,看到 Ghost 出到了 v4,想着更新一下应该没事吧。毕竟都 v4 大版本了。
实际打脸了。以为5分钟搞定实际花了可能1个小时。而且最终结果还不算成功。

v3.0.3 升级到 v3.42.4

这一步出错了,解决办法:

  1. 升级 nodejs 版本到 14.x
  2. 升级 ghost cli 到 1.16 (ghost version 命令可见 Ghost-CLI version: 1.16.3)

然后升级到 v4.2.1

ghost update

大坑。启动不起来了。

另外,我的 Ubuntu 跑 apt update 的时候会报错 Key Expired,具体报错信息是

Get:63 http://security.ubuntu.com/ubuntu xenial-security/multiverse Translation-en [2672 B]
Fetched 44.3 MB in 9s (4440 kB/s)
Reading package lists... Done
W: GPG error: https://dl.yarnpkg.com/debian stable InRelease: The following signatures were invalid: KEYEXPIRED 1507181400  KEYEXPIRED 1546376218  KEYEXPIRED 1546372003  KEYEXPIRED 1612319250  KEYEXPIRED 1612319280  KEYEXPIRED 1612319250  KEYEXPIRED 1507181400  KEYEXPIRED 1546376218  KEYEXPIRED 1546372003  KEYEXPIRED 1612319250  KEYEXPIRED 1612319280  KEYEXPIRED 1507181400  KEYEXPIRED 1546376218  KEYEXPIRED 1546372003  KEYEXPIRED 1612319250  KEYEXPIRED 1612319280
W: The repository 'https://dl.yarnpkg.com/debian stable InRelease' is not signed.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.

这个错误和 Ghost 一点关系都没有,只是记录一下。

如何解决:

sudo apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com

Ghost v4 具体问题

跑 ghost run 看起来没啥问题,可以访问,/ghost 后台也可以访问。
然后 ghost start 卡在 Starting 阶段起不来。
或者首页看起来是可以的,但是访问 /ghost 就会报错 502 或者 503

另外一说,我改了下我的端口,config.production.json 里头,改成了 3390。
后来我跑 sudo lsof -t -i:3390
经常看到 PID 一会儿是 A,然后一会儿又是 B。
说明这个进程在不断重启。

顺带说明一下

我装了2个 Ghost 在我的 Digital Ocean 里。
一个在

/var/www/ghost/

网站是 1c7.me

另一个在

/var/www/ghost2

网站是 blog.1c7.me

(对,我整了俩博客)

来解决一下 ghost 无限重启问题

既然 ghost 用的是 systemd,那么我们来看看这个文件

/var/www/ghost/files/ghost_localhost.service

文件内容:

[Unit]
Description=Ghost systemd service for blog: localhost
Documentation=https://docs.ghost.org

[Service]
Type=simple
WorkingDirectory=/var/www/ghost
User=1000
Environment="NODE_ENV=production"
ExecStart=/usr/bin/nodejs /usr/bin/ghost run
Restart=always

[Install]
WantedBy=multi-user.target

我把 Restart=always 删掉了。
然后

systemctl daemon-reload

重启了 systemmd

最后 tmux 里面跑 ghost run 然后 Ctrl+B,然后按 D 退出。

结论

  1. v4 我没法正常 ghost start 跑起来。这个 start 命令是官方建议的做法, run 命令只是直接跑起来看到 log 方便 debug 啥的。
  2. 最后用 tmux 搞定。算是凑合搞定,能用就行。
  3. v3 就挺好,不要更新到 v4,我想 rollback 到 v3 都做不到。
  4. 我大概是2021-4-15 晚上6,7点弄的升级,结果耽误到 21:42 (现在写下这篇文章的时间)