距离上一次更新这个网站的系统版本已经过去了一年,今天尝试按照去年的方法升级版本,发现已经不通用了。网上没有找到其他中文安装或升级指南,就把我的操作过程记录一下。

更新日志:2023/1/17更新5.30版本安装、更新方法

💡
你现在看到的网站正是依照以下流程进行安装和维护。如果你打算按照以下步骤部署生产用程序,请先看完全文后再决定是否进行。作者不承担任何因遵从本文做法而导致的数据遗失或财产损失风险。
💡
为数不少的Ghost使用者反馈,在使用Ghost深度绑定的邮件群发服务Mailgun时,出现了自动将免费套餐升级为付费套餐、群发人数无故受限等问题。且由于Ghost的深度绑定,目前没有特别好的群发服务平替方案。
在这里郑重提醒:务必做好与Mailgun客服沟通的准备,及时查看邮件,最好不要绑定可扣费的银行卡。如果不是非用Ghost不可,请及时止步,转用其他博客系统。

安装环境

  • 宝塔面板「宝塔纯净版 7.6.0版本」。
  • Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-124-generic x86_64)
  • Nginx
  • Docker

安装Docker

省略,因为作者太懒,该环节请到别处查询

配置宝塔站点

  1. 在宝塔侧边栏的「网站」中点击「添加站点」
  2. 填写域名,确保域名已经解析至服务器ip
  1. 可以看到,填写好域名后将会自动生成网站根目录/www/wwwroot/cheapy.top,接下来会用到。
  2. 点击「提交」。然后点击刚刚创建好的网站域名,进入设置,点击侧边栏的「SSL」,选择「Let's Encrypt」证书并签署即可。
  3. 再点击侧边栏的「反向代理」,如下图所示填写,目标url填入http://127.0.0.1:8081
  4. 2023年6月28日补充:最新版5.3版本亲测需要将「发送域名」设置为完整网站域名(如https://cheapy.top)
  1. 点击保存后,点击刚刚生成的配置文件
  1. 删掉所有内容,替换为以下内容:
#PROXY-START/
location  ~* \.(php|jsp|cgi|asp|aspx)$
{
    proxy_buffering off;
    proxy_pass http://localhost:8081;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header REMOTE-HOST $remote_addr;
}
location /
{
    proxy_pass http://localhost:8081;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header REMOTE-HOST $remote_addr;
    client_max_body_size 200m;
    
    add_header X-Cache $upstream_cache_status;
	#Set Nginx Cache
	proxy_ignore_headers Set-Cookie Cache-Control expires;
	add_header Cache-Control no-cache;
    expires 12h;
}

#PROXY-END/

保存即可。

安装Ghost

在服务器中新建一个单独的文件夹,用于存放网站相关配置文件。我这里直接使用宝塔建立站点时生成的文件夹/www/wwwroot/cheapy.top

进入该文件夹,新建空白文件,文件名为stack.yml,文件内容:

version: '3.1'

services:

  ghost-cheap:
    image: ghost:5.30
    volumes: 
      - /www/wwwroot/cheapy.top/volume:/var/lib/ghost/content
      # 注意,这里冒号左边换成你用来存放网站文件的文件夹
    restart: always
    ports:
      - 8081:2368
    environment:
      # see https://ghost.org/docs/config/#configuration-options
      database__client: mysql
      database__connection__host: db
      database__connection__user: root
      database__connection__password: yourpassword
      database__connection__database: ghost
      url: https://cheapy.top
      # url这里写你网站最终的网址
      #NODE_ENV: development

db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: yourpassword
      # 这里的密码要跟上面的密码一致

使用ssh登入服务器命令行,执行cd /www/wwwroot/cheapy.top

执行docker-compose -f stack.yml up,看后台已经不跑了,就可以在浏览器输入网址看是否能打开Ghost主页了

如果网页可以正常浏览,就可以在ssh里ctrl+c退出,再执行docker-compose -f stack.yml up -d让Ghost在后台跑了。

这时候就可以在浏览器输入https://你的网址/ghost,开始配置你的网站啦,基本安装已经结束

从低版本升级到Ghost 5.30

Ghost版本变化非常大,只有使用MySQL作为数据库的3.x、4.x版本可以升级,其他版本只能重新安装。

3.x/4.x+MySQL升级方式

非常抱歉,本站之前使用的是SQLite数据库,没有涉及本升级方式,给不出详尽的教程。可能通过重新拉取最新镜像运行的方法可行,但我没有测试过,不敢保证,请在数据完全备份后再尝试,如有数据丢失概不负责。

重新安装的方式升级

该方法其实就是将原有数据导出,安装新版本后再导入。由于官方没有给出Docker版本的完整数据导出导入方法(可能是我不知道,有知道的同学辛苦共享一下~),我这里只能通过一些蠢办法来进行。
该方法可以保留以下数据:

  1. 主题文件
  2. 上传到服务器的图片
  3. 发表的文章、页面
  4. 订阅用户列表

该方法仅适用于旧版本使用Docker安装,且挂载了宿主机文件夹的用户。接下来就开始吧!

导出旧版本数据

  1. 登录ghost网页后台,点击侧边栏的Members,再点击右上角齿轮图标,点击「Export all members」即可导出订阅用户数据。
  1. 点击侧边栏下方的齿轮图标,再点击「Labs」,点击 Export your content 右边的「Export」,即可导出网站内容数据(不包含上传到服务器的附件)
  1. 在ssh中,使用docker stop [ghost容器名字]命令停用ghost容器;使用cp命令复制一份ghost挂载在宿主机的文件夹用于备份。这样就备份了网站的theme文件、图片文件。
  2. 重新安装ghost最新版本。使用本文前面的安装办法即可。安装时请将宿主机挂载文件地址设为与旧版本的挂载地址一致。
  3. 安装完毕后登入Ghost后台,再挨个导入Members文件盒content文件就可以了。

配置Ghost邮件服务器

到这里为止,如果一切顺利,你的Ghost网站已经可以正常使用大部分功能了。
但最重要的邮件功能还不可用。Ghost已经更新了原生评论系统,需要访客通过邮箱注册后才可以用,如果不把邮件功能也配置好就太可惜了!请期待下一篇文章的介绍吧!太久没码字我真的写不下去了😭

喜欢本文?给点掌声👏