💡
更新于:2023年9月13日,Ghost版本:5.60
💡
记录一下自己搭建Ghost博客的过程,本教程面向小白。由于环境或者操作步骤有差异,如果您在准备按照我的步骤操作搭建的时候,请做好备份工作。如遇到数据问题,请注意作者不承担风险责任。
💡
Ghost 是一个开源的专业发布平台,建立在现代 Node.js 技术堆栈之上,专为需要强大、灵活和高性能的团队而设计。

写在前面

本教程要特别感谢Memories'Blog平替生活,在我不断切换搜索引擎但是所获不多,百思不得其解的时候,有幸阅读了其发布的文章,再综合了其灵感的代码后顺利搭建了Ghost。

搭建docker版Ghost CMS - Memories’ Blog
面向小白教程,引导入门,不懂请留言docker Ghost版本:目前最新版(ghost:5.10.1)准备已安装好 docker 和 doc
开源博客Ghost安装/升级指南
距离上一次更新这个网站的系统版本已经过去了一年,今天尝试按照去年的方法升级版本,发现已经不通用了。网上没有找到其他中文安装或升级指南,就把我的操作过程记录一下。

安装环境

  • 腾讯云轻量云服务器 2H2G3M
  • 宝塔面板「最新版8.02」。
  • Ubuntu 20.04.4 LTS
  • Nginx
  • Docker

1.准备工作

1.1安装宝塔面板

安装宝塔面板,宝塔面板可以帮助我们避免一些代码困扰,同时能够帮我们便捷地安装软件、编辑文件、管理网站等。

我的系统是Ubuntu 20.04.4,所以在SSH运行以下代码安装宝塔:

wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec

1.2安装Nginx和Docker

安装好宝塔面板后,直接进入宝塔面板,在软件商店中安装:

  • Nginx 1.22.1(编译安装)
  • Docker管理器 3.9.2

2.新建宝塔站点

  1. 在宝塔面板-网站-「添加站点」,把你的域名解析到你的服务器,并在添加站点中绑定你的域名。
  2. 然后在站点设置中配置你的SSL:你可以选择申请一个宝塔提供的Let’s Encrypt证书,或者自己添加其他证书,记得选择强制SSL(这个对新版本的Ghost站点来说十分重要)。

3.为站点添加反向代理

在站点设置的侧边栏点击「反向代理」并「添加反向代理」,按照下面的图片进行填写:

  • 目标URL http://127.0.0.1:8081
  • 发送域名 按照下图规范填写你的访问域名(SSL)

点击「提交」后,在列表中点击「配置文件​」,全部替换成下方代码,点击保存。

#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/

4.安装Ghost

  • 登录到SSH,切换到root。输入命令: Sudo su
  • 进入当前用户目录 cd ~
  • 创建相关文件夹并进入

mkdir docker_app && cd docker_app && mkdir ghost && cd ghost

  • 创建 docker-compose.yml 和 config.production.json

touch {docker-compose.yml,config.production.json}

然后你可以进入宝塔面板,在「文件」的/根目录/root/docker_app/ghost下看到你刚刚创建的 docker-compose.yml 和 config.production.json文件,分别双击进行编辑,代码如下:

docker-compose.yml

version: '3'
 
services:
  ghost:
    image: ghost
    container_name: ghost
    ports:
      # 宿主机与容器端口映射,8081宿主机端口,另一个是容器的,访问时,宿主机公网 IP:8081/
      - "8081:2368"
    volumes:
      # 生产模式下的ghost配置文件映射目录(ghost相关配置写在这里面,比如数据库、邮箱...)
      -  /root/docker_app/ghost/config.production.json:/var/lib/ghost/config.production.json
      # ghost 相关数据目录从容器映射到宿主机
      - /root/docker_app/ghost/content:/var/lib/ghost/content
    environment: 
      # 以生产模式运行
      - NODE_ENV=production 
    restart: unless-stopped

config.production.json

{
    "url": "https://你的域名/",
    "server": {
        "port": 2368,
        "host": "0.0.0.0"
    },
    "database": {
         "client": "sqlite3",
         "connection": {
        "filename": "content/data/ghost.db"
      },
      "useNullAsDefault": true,
      "debug": false
    },
    "logging": {
        "transports": [
            "file",
            "stdout"
        ]
    },
    "process": "systemd",
    "paths": {
        "contentPath": "/var/lib/ghost/content"
    }
}

5.创建Ghost容器

  • 编辑并保存好上面两个文件后,在SSH中输入下面命令:
cd ~/docker_app/ghost
docker-compose up -d

等跑完代码就可以在浏览器输入「https://你的域名/ 」访问您Ghost网站了!

网站后台地址是:「https://你的域名/ghost 」

到此尽情享受写作和分享的乐趣吧!

Meilyn
作者: Meilyn
又见梅林 采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 又见梅林