惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
GbyAI
GbyAI
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
B
Blog
博客园 - 叶小钗
V
Visual Studio Blog
小众软件
小众软件
阮一峰的网络日志
阮一峰的网络日志
博客园 - 聂微东
S
SegmentFault 最新的问题
Engineering at Meta
Engineering at Meta
博客园 - Franky
V
V2EX
人人都是产品经理
人人都是产品经理
H
Hackread – Cybersecurity News, Data Breaches, AI and More
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客
IT之家
IT之家
T
The Blog of Author Tim Ferriss
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
C
Check Point Blog
N
Netflix TechBlog - Medium
博客园 - 【当耐特】

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
Ghost Blog 部署指南 - 少数派
2021-09-17 · via 少数派

Matrix 首页推荐

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。

文章代表作者个人观点,少数派仅对标题和排版略作修改


折腾博客将近 6 年了,尝试过 WordPress、Typecho、Ghost、Hexo、Gridea 等不少的博客程序。这些程序各有优缺点,WordPress 的高度个性化与可玩性值得称赞,但也给站点优化带来了问题;基于 Node.js 的 Hexo 搭配上 GitHub Pages,降低了博客搭建的门槛,但渲染速度、npm、跨平台都是逃不过的问题。

从体验上来说,我更偏向自托管的静态博客,数据在自己的服务器上,一定程度上保证用户对内容的所有权。因为对 Git 平台的操作不熟悉,加上 访问速度不佳,我将博客从 Hexo 迁移到了 Gridea,但后者长时间停更,以及主题数量偏少,我开始寻找下一个适合的博客程序。

3 月 16 日,Ghost 发布 4.0 版本,与先前 1.0、2.0 版本不同,Ghost 4.0 版本中新增了后台面板、订阅支持,同时也继承先前版本优秀的设计。或许,可以试试?

搭建前的准备

域名

通过自己的服务器搭建博客,通常需要绑定域名,关于选购与注册方面,在这里不做过多阐述。注册好域名后,在域名解析设置中,将域名解析至服务器 IP。

域名解析

服务器

由于 Ghost 是动态博客,因此需要准备一台服务器。官方文档中推荐使用 RAM ≥ 1G、运行在 Ubuntu 16.04 / 18.04 / 20.04 系统的服务器上。除了基于 Node.js 运行,Ghost 官方还提供基于 Docker 运行的 Ghost Blog。

本机直接部署

系统:Ubuntu 21.04、Debian 11.0

Nginx:nginx/1.18.0

MySQL:8.0.26

Node.js:v14.17.6

Ghost:v4.9.4

安装流程

初步配置

通过 SSH 或终端登入服务器,并切换至 root 用户,然后新增一个普通用户,用于安装 Ghost。

运行更新服务器中的软件。

# 更新系统软件包
apt update && apt upgrade -y

运行 adduser 命令添加新普通权限的 Linux 用户,根据提示输入用户密码与其它信息。

# 新增普通用户,用户名需自行设定(除 ghost)
adduser 用户名

为新增用户添加 sudo 权限,并将当前身份切换为该用户。

# 赋予用户 sudo 权限
usermod -aG sudo 用户名

# 切换到普通用户
su - 用户名

安装网站环境

Ghost 未限制网站环境的安装方式,你可以使用 Nginx 或 Apache 运行前端,下文以官方文档介绍的安装方式为主。如需使用 LAMP 环境包 / LNMP 环境包 / OneinStack / 面板,需留意在安装 Ghost 环节,跳过 ghost-cli 自动配置 Nginx 与 SSL 环节,并手动建立网站,将反向代理部分的配置写入网站配置文件中。

从 Ubuntu 仓库安装 Nginx 与 MySQL 数据库。

# 从 Ubuntu 仓库中安装 Nginx 与 MySQL-Server
sudo apt install nginx mysql-server -y

MySQL 安装完成后,需要重设数据库 root 用户密码。

# 重置 MySQL root 密码
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
quit;

NodeSource 安装 Node.js。如果通过其它方式安装,需要留意 Node.js 版本 Ghost 只支持运行在 Node.js 12.x、14.x 两个大版本中。

# 通过 NodeSource 安装指定版本的 Node.js
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash
sudo apt install nodejs -y

# 安装 Yarn
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update && sudo apt install yarn -y

# 假如服务器位于大陆区域,需要借助 cnpm 镜像提高 npm 与 yarn 依赖的安装速度,否则 ghost install 时,无法下载依赖会导致安装失败
sudo npm install -g cnpm --registry=https://registry.npm.taobao.org
sudo yarn config set registry https://registry.npm.taobao.org/

安装 Ghost

建立文件夹,配置好文件夹权限,下文以 /var/www/ghost 作为 Ghost 数据目录。

# 新建 Ghost 数据目录文件夹
mkdir -p /var/www/ghost

# 设置文件夹权限
chown 用户名:用户名 -R /var/www/ghost
chmod 0775 -R /var/www/ghost

# 前往文件夹
cd /var/www/ghost

安装 Ghost-CLI。

# 未配置 cnpm 加速源
sudo npm install ghost-cli@latest -g

# 配置了 cnpm 加速源
sudo cnpm install ghost-cli@latest -g

前往网站文件夹安装 Ghost。

# 安装 Ghost
ghost install

进入安装流程。

# 进入 Ghost 安装流程

# 检查系统环境
✔ Checking system Node.js version - found v14.17.6
✔ Checking logged in user
✔ Checking current folder permissions

# 此处如系统版本非 Ghost 官方文档推荐的,会询问是否继续安装,这里选择 Yes
? Continue anyway? Yes
System stack check skipped

# 检查软件环境
ℹ Checking system compatibility [skipped]
✔ Checking for a MySQL installation
✔ Checking memory availability
✔ Checking free space
✔ Checking for latest Ghost version
✔ Setting up install directory

# 下载 Ghost 本体、npm 与 yarn 依赖
# 假如服务器位于大陆区域,需要借助 cnpm 镜像提高 npm 与 yarn 依赖的安装速度,否则 ghost install 时,无法下载依赖会导致安装失败
✔ Downloading and installing Ghost v4.14.0

# 进入网站域名、MySQL 数据库、系统服务设置
✔ Finishing install process

# 输入网站绑定域名
? Enter your blog URL: http://xavier.wang

# 输入 MySQL 数据库服务器地址、用户名、密码、数据库名称
? Enter your MySQL hostname: localhost
? Enter your MySQL username: root
? Enter your MySQL password: [hidden]
? Enter your Ghost database name: db_ghost
✔ Configuring Ghost
✔ Setting up instance
+ sudo chown -R ghost:ghost /var/www/ghost/content
✔ Setting up "ghost" system user

# 如先前使用 MySQL root 用户登录,此处可以让 ghost-cli 自动创建一个属于 Ghost 数据库的用户
? Do you wish to set up "ghost" mysql user? Yes
✔ Setting up "ghost" mysql user

# 如果本机先前已有其它网站或需要使用自定义的网站环境,需要跳过自动配置 Nginx 与 SSL 证书
? Do you wish to set up Nginx? Yes
+ sudo mv /tmp/xavier-wang/xavier.wang.conf /etc/nginx/sites-available/xavier.wang.conf
+ sudo ln -sf /etc/nginx/sites-available/xavier.wang.conf /etc/nginx/sites-enabled/xavier.wang.conf
+ sudo nginx -s reload
✔ Setting up Nginx
# 选择是否通过 acme.sh 自动配置 SSL 证书
? Do you wish to set up SSL? Yes
ℹ Setting up SSL [skipped]

# 将 Ghost 绑定到 Systemctl 上
? Do you wish to set up Systemd? Yes
+ sudo mv /tmp/xavier-wang/ghost_xavier-wang.service /lib/systemd/system/ghost_xavier-wang.service
+ sudo systemctl daemon-reload
✔ Setting up Systemd
+ sudo systemctl is-active ghost_xavier-wang

# 启动 Ghost
? Do you want to start Ghost? Yes
+ sudo systemctl start ghost_xavier-wang
+ sudo systemctl is-enabled ghost_xavier-wang
+ sudo systemctl enable ghost_xavier-wang --quiet
✔ Starting Ghost

Ghost uses direct mail by default. To set up an alternative email method read our docs at https://ghost.org/docs/config/#mail

------------------------------------------------------------------------------

# 当显示这条信息时,表示 Ghost 已完成安装流程
Ghost was installed successfully! To complete setup of your publication, visit: http://xavier.wang/ghost/

在设置过程中,按照提示设置域名、数据库连接信息、SSL 证书、系统服务。使用「LAMP 环境包 / LNMP 环境包 / OneinStack / 面板」的用户需留意在安装 Ghost 环节,跳过 ghost-cli 自动配置 Nginx 与 SSL 环节,并手动建立网站,将反向代理部分的配置写入网站配置文件中。

# Nginx 反向代理配置

location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:2368;
    }

当提示 Ghost was installed successfully 时,表示 Ghost 安装成功,点击下方域名进入博客后台设置。

站点配置

初始化网站

Ghost 博客首页

在浏览器中输入域名,比如我绑定的是 xavier.wang,那么就输入 https://xavier.wang/ghost/ 进入 Ghost 后台,进入配置环节。

Ghost 博客配置 - 第一步

设置网站信息、管理员用户名与密码。

Ghost 博客配置 - 第二步

完成设置,进入博客后台。

后台设置

Ghost 博客后台面板

后台大致分为两个版块,左侧菜单栏与右侧面板。点击左下方的齿轮按钮,可以看到博客设置,如站点信息、主题、导航链接、用户、高级功能等。

Ghost 博客后台设置

关于 Ghost 的一些看法

Ghost 后台面板

Ghost 4.0 版本中首次集成了原生的会员管理与订阅功能,通过连接第三方支付服务,可以向注册用户提供付费内容、邮件订阅服务。在博客后台的 Dashboard 上,直观展示了当前的文章收入、注册会员数量、付费会员比例、邮件打开率等数据。

Ghost 博客文章编辑

Ghost 的编辑器原生支持实时渲染 Markdown 语法,并且还有与 Notion 编辑器类似的「Type '/' for commands」功能,可快捷插入多媒体内容,如图片、YouTube 视频、Twitter 推文等卡片。

在编辑器的文章发布设置中,可以直接设置文章摘录、分享样式、邮件订阅,这个功能点对于自媒体 / Newsletter 运营者十分友好,在发布文章的同时,可以完成社交媒体分享、邮件订阅发送、文章发布等动作,减少工作程序。

Ghost 博客插件拓展(Integrations)

与 WordPress、Hexo 等博客平台相比,Ghost 会更注重写作与阅读,它在插件拓展、博客样式的个性化方面上会显得比较简陋,支持的插件(Integrations)会更多来自成熟的外部服务,以丰富读者阅读的内容。

但也有不足的地方,对于拓展博客自身的功能性上,更多要靠后期开发,比如文章搜索、云储存、图片压缩,对的,Ghost 没有默认搜索功能。

Ghost 博客主题自定义

主题自定义方面,默认设置中只给到了站点 Logo、焦点颜色、Banner 底图的设置,更深层次的个性化修改,则需要修改主题的相关文件。GitHub、ThemeForest 上有一些比较好看的第三方主题,如 AttilaLieblingLondon-Grid,官方的主题商城内提供了 24 款免费主题,付费主题价格较高,相对来说 Ghost 的主题数量仍然偏少。

Ghost 博客相对于 WordPress 而言会更加简约,同时优秀的设计风格也会让人耳目一新。但 Ghost 是否值得推荐呢?

如果是对平台运行追求稳定的自媒体、Newsletter 运营团队来说,Ghost 或许是一个不错的选择,文章编辑器、会员管理、第三方服务可圈可点,Ghost 也提供了官方的付费托管服务 —— Ghost Pro,让你专注于内容创作,以及加强与读者互动。

就我个人的需求来说,我认为不值得。一是 Ghost 的主题、插件拓展生态圈还未发展起来;其次,Ghost 数据导出仅支持 json 格式,相关的迁移工具如 oghosthexo-migrator-ghost 停更已久,迁移至 WordPressJekyllHugo 的工具虽然有更新,但跨程序之间的搬运并不是一件轻松事。第三点,也是最头疼的一点,Node.js 和 npm 的报错,看到密密麻麻的报错我都不想处理了。

相关阅读

> 下载少数派 客户端 、关注 少数派公众号 ,了解更妙的数字生活 🍃

> 想申请成为少数派作者?冲!