Ghost 建站

本文将讲述什么是Ghost、哪种搭建方式适合你、如何挑选服务器以及如何以最快捷的方式搭建Ghost。

前言

本文由于讲得稍微细一些所以字数较多,但实际操作起来不会超过10分钟(系统网络环境好的前提下)操作时绝大部分时候其实都是在等待安装。文章部分内容基于官方文档翻译,并总结了一些常见的坑及其解决方案。

How to install Ghost, the official guide

Everything you need to know about working with the Ghost professional publishing platform.

Ghost 建站

关于 Ghost:(节选自 维基百科)

Ghost 是一款个人博客系统,其设计主旨是简化个人网站发布以及网上出版的过程。官方也提供开发插件的API和可以定制的Handlebars主题模板样式。

官方提供了多种搭建的方式,其中包括官方托管、第三方托管以及自托管(俗称 自建)

Ghost由John o'nolan于2013年创立,它是由前 WordPress 的一些优秀员工的创业项目。项目仍然采用 100% 开源,加上官方的收费托管的商业模式,目前已经发展成为一个非常的博客系统。

相比于Wordpress,Ghost更专注于写作!由于 Wordpress 实在是太多东西可以优化了(它的优点,同时对非专业用户也是缺点),导致有点像专门去折腾优化的而不是来写作的,所以我也从 Wordpress 换到了 Ghost。


如何选择搭建方式

不熟悉 Linux/ 纯小白

关于搭建,如果你是一个对 Linux 不太熟悉,也没什么时间再去学习代码以及网络方面知识的话。

我推荐你选择 托管这种方式的好处就是有专业人士替你维护服务器,你只需要专注于自己的内容更新。

不少人搭建博客可能就为了图一乐,写点小文章,记录一下身边的美好。不希望花大价钱购买域名、服务器,也不希望花太多时间去维护。那么第三方托管是你最好的选择!

Ghost 建站
Ghost 官方托管价格表,点击图片跳转至 Ghost Pro 页面
唯一的缺点就是,官方托管的价格一般偏贵 最低每月$9起。但是也有很便宜的第三方托管(后面会讲),不过访问速度方面可能会不太理想。

熟悉 Linux / 热爱折腾

如果你对 Linux 有初步了解,或者就是喜欢自己折腾一下。那么我推荐你选择 自托管 ,这种方式的好处是 相对省钱 ➕  高度自定义 。当然,在后期如果你是想要认真打造一个博客的话,在 域名服务器 方面的成本会稍有提升。

爱折腾的人,我推荐是使用 托管+自托管 。在自托管的机器折腾,如果不小心配置错误会导致用户无法访问,如果你刚好不会修还得花时间搜索解答,且有的 VPS 商家还不支持在面板一键重装系统。因此托管的机器最适合用来折腾,然后将最终版本在自托管服务器中上线。

面向群体及服务器选择

服务器类型: Ghost 支持 AMD和ARM!!!所以在使用 Rclone 做好数据备份的前提下,甲骨文也是可以一战的。

一个网址的面向群体决定了你 VPS线路是否需要大陆优化、域名是否需要备案(以下只是举例博主正在使用/以往使用过的机器,并没有在此为商家做出提供担保,请按需购买)

  • 如果你是面向国内的博客,请优先选择 阿里云/腾讯云 等大厂的国内机器。

优点:国内访问速度更快,无需担心被墙无法访问的情况。

缺点:域名需要走流程备案,否则无法解析。

如果懒得备案的话,可以选择 第三方商家位于香港、圣何塞、法兰克福的服务器,也可以前往其他商家购买 CN2 GIA/4837/9929 等对国内优化的线路。

  • 如果你不考虑面向国内用户,VPS 则有非常多的选择,有钱人可以直接上AWS、GCP、Azure等大厂,中规中矩的话可以选择下面价格商家。

Vultr

注册即可免费获得$100额度,有效期14天

优点:再差的机器套上Cloudflare也差不到哪里去了,并且无需备案。

缺点:鱼龙混杂,尽量选择大厂、已开设多年的商家

部署 - 托管(以PikaPods举例)

准备步骤

  • 提前购买一个域名(非必需)
  • 一张国际信用卡💳 / 美区PayPal
一个好的域名有利品牌推广,优秀的域名能够让客户很快的记住并找到你,创造品牌价值,吸引回头率。

开始搭建

1. 进入 PikaPods 的官网,并注册账号(新用户可得$5额度,无需绑卡)

PikaPods - Instant Open Source App Hosting

Run the finest Open Source web apps from $1/month, fully managed, no tracking, no ads.

Ghost 建站
Instant Open Source App Hosting

Ghost 建站

2. 点击右上角 ADD PODS 创建一个新容器

Ghost 建站

3. 相关配置

Choose App 一栏中输入 GhostPod Name 输入你想要的名字, Pod Region服务器所在区域 随便选一个即可...都不咋样

系统会给出所需的最小配置,你可以根据自己的喜好修改(一般如果访问量不大的话无需改动),点击 绿色的 ADD POD 一键创建。

这里给出的硬盘空间是指你博客的图片、文字等占用的空间,Ghost 本体的占用不会算在里面。

⚠️

注意:CPU数量、内存、硬盘大小后期都是可以随意调整的,但是创建容器后服务器区域是不可变更的!!!

更新: 9月21日,在我还在写教程的时候收到官方邮件称:由于香港地区服务器需求过低,因此下架了香港地区服务器并迁移至了洛杉矶。(但是会对亚洲地区进行优化)

Ghost 建站
Ghost 建站

4. 等待20秒左右即可完成创建,点击 齿轮⚙️ 可以进入设置面板

Ghost 建站
控制台会显示当前的运行状态以及Ghost正在运行的版本。

PikaPod 会提供一个免费且可以自定义的三级域名供你使用,如果你已经购买域名 还可以开启 Custom Domain 开关,并配置 CNAME 以达到自定义域名的效果。

Ghost 建站
创建容器时,系统会随机分配一个域名,如果不满意可以自行修改。

SFTP 开关是访问该容器时需要使用的,因为你只对这个容器有所有权,但创建容器的VPS是 PikaPod 所有的,因此并不能像平时自己购买的VPS一样使用SSH连接。因此,当你需要上传主题文件或自定义某些配置时则需要使用到 SFTP。

Ghost 建站
开启后会显示访问容器的所需的:地址、用户名、端口、密码。

你可以使用 FileZilla 等 FTP工具进行连接,并修改、上传文件。

FileZilla - The free FTP solution

FileZilla - The free FTP solution for both client and server. Filezilla is open source software distributed free of charge.

FileZillaThe free FTP solution.

Ghost 建站

5. 点击 OPEN POD 进入容器即可进入你的博客首页。

Ghost 建站
初始页面预览,登陆后台之后可以更换其他模版。

如果想要进入管理员后台的话只需要在域名的加上  /Ghost 即可进入后台,例如:https://你的域名/ghost

Ghost 建站
首次登陆后台需要注册管理员信息,请牢记你的注册邮箱以及密码。

更多关于优化Ghost的教程会在下一篇推出。


部署 - 自有服务器

准备步骤

  • 服务器一台,AMD 和 ARM 架构都可以。(推荐使用全新的系统环境操作,否则后续可能出现一些你不知道如何修复的迷之报错)
  • 域名一个
  • SSH工具,例如 Xshell、FinalShell 等

开始部署(以 Ubuntu 安装举例)

💡

无需担心,无论是使用命令行还是使用Docker安装,都只需要复制粘别即可完成安装!

Ghost Blog 是一款开源的 动态博客 ,它不可以像静态博客一样使用 Vercel/Railway/Netfily 这类云平台托管,因此我们需要准备一台服务器来运行 Ghost。

Ghost 建站
官方提供的安装途径

官方文档中推荐使用 运行内存 ≥ 1G,搭载了 Ubuntu  16.04 / 18.04 / 20.04 LTS 系统的服务器上。

除了基于 Node.js 运行(本文内容),Ghost 官方还提供 基于 Docker  运行的 Ghost Blog。

需要注意的是,今后你可能还会需要对博客进行 自定义主题、自定义 RSS、为文章添加目录等优化操作
  • 如果你对 Docker以及Linux 相关命令已经了解,那么我推荐你使用 Docker 安装(毕竟两行命令就搞定了)
  • 反之,请按照下文方法安装。虽然 Docker 一键搭建确实很方便,但是如果你对 Docker 相关命令并不太了解,当你要进行上述提到的操作时可能会无从下手。此方法的好处是,可以直接通过例如 FinalShell 等软件直接添加\删除文件、使用现代化编辑器例如:VScode、Sublime 进行编辑,而不是先进入容器再使用 vim 等命令进行编辑、添加文件的操作。

服务器设置

指南的这一部分将确保满足安装Ghost-CLI的所有先决条件。

1. 更新软件包

确保软件包列表和已安装的软件包是最新的。

# 通过终端/软件连接SSH
ssh [email protected]你的服务器ip

# 更新系统软件包
sudo apt update && apt upgrade -y
按照任何提示输入您在上一步中刚刚创建的密码。2. 创建新用户

打开您的终端/SSH工具,并以root用户身份登录服务器:

⚠️

注意:用户名使用ghost会导致与Ghost-CLI冲突,你可以使用除ghost 以外的任何名称

# 通过终端连接SSH
ssh [email protected]你的服务器ip

# 创建一个新用户并按照提示操作创建密码,用户名需自行替换(不得使用 ghost 作为用户名)
adduser 用户名

例子:我想使用yummy作为用户名,则输入 adduser yummy,随后就会看见下面的代码。

Adding user `yummy' ...
Adding new group `yummy' (1000) ...
Adding new user `yummy' (1000) with group `yummy' ...
Creating home directory `/home/yummy' ...
Copying files from `/etc/skel' ...

# 看到这行的时候输入你希望设置的密码。(为了防偷窥,输入的密码是隐藏不可见的,输入完毕后回车即可)
New password: 

# 重新输入上一步的密码
Retype new password: 

# 看见这步则提示两次输入的密码相同,创建密码成功
passwd: password updated successfully
Changing the user information for yummy

# 这里可以无脑回车,你也可以自定义
Enter the new value, or press ENTER for the default
        Full Name []: 
        Room Number []: 
        Work Phone []: 
        Home Phone []: 
        Other []: 

# 确认信息输入正确后输入 y 并按下回车
Is the information correct? [Y/n] 

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

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

# 切换到刚刚创建的新用户
su - 用户名
3. 安装 NGINX

Ghost 需要使用到 NGINX 服务,SSL配置需要搭载 NGINX 1.9.5 或更高版本。

# 安装 NGINX
sudo apt-get install nginx

如果系统中ufw 处于开启状态,则需要防火墙允许Nginx的 HTTP 和 HTTPS 连接。

# 打开防火墙
sudo ufw allow 'Nginx Full'

# 开启成功将得到以下回应
Rules updated
Rules updated (v6)
4. 安装 MySQL

接下来,您需要安装 MySQL 作为数据库。

# 安装 MySQL
sudo apt-get install mysql-server

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

# 重置 MySQL root 密码
sudo mysql

# ‘mysql> ’ 字段不用复制
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
mysql> quit;
5. 安装 Node.js
Ghost 建站
注意 Ghost 仅支持Node.js 14.x、16.x 两个大版本(推荐安装Node 16.x)
# 安装 curl 工具
sudo apt install curl

# 从 NodeSource 添加 Node.js 16 下载源
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash

# 安装 Node.js
sudo apt-get install -y nodejs

服务器设置已完成,下面开始安装 Ghost-CLI


安装 Ghost-CLI

Ghost-CLI是一个命令行工具,可帮助您快速轻松地安装和配置Ghost以供使用,可以使用npmyarn安装。

# 使用 npm 安装 Ghost-CLI
sudo npm install [email protected] -g

# 安装完成后可能会看到以下提示,这是由于 npm 存在新版本可升级的提示,不是软件报错!这里可以自行选择是否需要升级。
npm notice New minor version of npm available! 8.15.0 -> 8.19.2
npm notice Changelog: https://github.com/npm/cli/releases/tag/v8.19.2
npm notice Run npm install -g [email protected] to update!

# 升级 npm
npm install -g [email protected]
安装后,您可以随时运行ghost help以查看可用命令列表。

安装 Ghost

当完成服务器设置以及安装 Ghost-CLI,我们就可以开始安装 Ghost 本体了

1. 创建一个目录,并给予该文件夹权限
# 创建目录: 更改“站点名”为你喜欢的任何名称
sudo mkdir -p /var/www/站点名

# 设置该目录的所有者: 将用户名替换为“服务器设置”步骤中创建的用户名
# 注意区分用户名和站点名!
sudo chown 用户名:用户名 /var/www/站点名

# 设置文件夹权限
sudo chmod 775 /var/www/站点名

# 前往文件夹
cd /var/www/站点名
2. 运行安装进程

现在我们用最后一个命令行安装 Ghost。

# 开始安装 Ghost 本体
ghost install

# 检查系统环境
✔ Checking system Node.js version - found v16.17.0
✔ Checking logged in user
✔ Checking current folder permissions
✔ Checking system compatibility
✔ Checking for a MySQL installation
✔ Checking memory availability
✔ Checking free space
✔ Checking for latest Ghost version
✔ Setting up install directory
✔ Finishing install process

如果这一步,系统检测到任何一个未设置正确,可能是由于你的系统环境原先被修改过,这种情况需要您自行 Goole 寻求解答。

推荐使用全新安装的纯净系统进行安装。
安装配置

在安装过程中,CLI会询问一些关于站点配置的问题。

💡

安装过程中,每个配置中的()显示的内容均为默认配置,如无需修改可直接回车。否则,请自行输入后再按下回车!

1. 博客地址
# 输入网站要绑定域名的,不可使用IP地址作为域名,会报错!!!
? Enter your blog URL: http://xxx.com 或 https://xxxx.com

给纯小白的贴士:这里不一定非要 .com 网站
如果您使用 HTTPS,Ghost-CLI 将提供为您设置 SSL。2.MySQL  主机名

这决定了可以从何处访问MySQL数据库。

  • 当 MySQL 安装在与 Ghost 同一台服务器上时,请使用 localhost(按Enter键使用默认值)。
  • 如果MySQL安装在其他服务器上,请手动输入对应主机名。
# 输入 MySQL 数据库服务器地址、用户名、密码、数据库名称
? Enter your MySQL hostname: localhost

? 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
3.MySQL 用户名/ 密码
  • 如果你已经有一个 MySQL 数据库,请输入用户名。
  • 否则,请输入 root ,然后输入 root 用户的密码。
? Enter your MySQL username: root
? Enter your MySQL password: [hidden]
4.Ghost 的数据库名称
  • 如果您还没有创建过数据库,可以直接使用默认值: db_ghost ,随后系统会开始自动设置
  • 如果您在上一步中使用的是非 root 的 MySQL用户名/密码,你需要确保该数据库已经存在并且具有正确的权限。
# 输入数据库名称,这里系统会随机生成一个,直接回车即可。
? Enter your Ghost database name: db_ghost

✔ Configuring Ghost
✔ Setting up instance
+ sudo useradd --system --user-group ghost

# 输入用户密码
? Sudo Password [input is hidden] 

+ sudo chown -R ghost:ghost /var/www/yummy/content
✔ Setting up "ghost" system user
5.设置 Ghost MySQL 用户(推荐)

如先前 MySQL 使用的是 root ,此处可以让 Ghost-CLI 自动创建一个属于 Ghost 数据库的用户

# 输入 Y 确定创建
? Do you wish to set up "ghost" mysql user? (Y/n) 

✔ Setting up "ghost" mysql user
6.自动设置 NGINX? (推荐)

自动设置NGINX,使您的站点能够被外部访问。可以自己手动设置NGINX,但为什么要为难自己?

如果本机先前已有其它网站或需要使用自定义的网站环境,需要跳过自动配置 Nginx 与 SSL 证书
# 输入 Y 完成自动配置
? Do you wish to set up Nginx? (Y/n)

+ sudo mv /tmp/1230-one/1230.one.conf /etc/nginx/sites-available/1230.one.conf
+ sudo ln -sf /etc/nginx/sites-available/1230.one.conf /etc/nginx/sites-enabled/1230.one.conf
+ sudo nginx -s reload
✔ Setting up Nginx
7.自动设置 SSL(推荐)

如果您在第一步输入了带 https 的地址作为博客URL,并且正确配置了记录(在域名购买商处配置 A 记录)

# SSL证书设置需要一个电子邮件地址,以便在证书有任何问题时(包括在续订期间)随时通知您。
? Enter your email (For SSL Certificate)
Ghost-CLI可以使用 Let's Encrypt 自动为您设置SSL。或者,您可以稍后通过随时运行 "ghost instal ssl" 来执行此操作。8.设置 systemd(推荐)

systemd是推荐的进程管理器工具,以保持Ghost平稳运行。我们建议选择 yes,但也可以设置自己的流程管理。

# 输入 Y 设置 systemd
? Do you wish to set up Systemd? (Y/n)

+ sudo mv /tmp/yummy/ghost_yummy.service /lib/systemd/system/yummy.service
+ sudo systemctl daemon-reload
✔ Setting up Systemd
+ sudo systemctl is-active ghost_yummy

9.启动 Ghost

# 输入 Y 启动 Ghost
? Do you want to start Ghost?  (Y/n)
+ sudo systemctl start ghost_yummmy-best
+ sudo systemctl is-enabled ghost_yummmy-best
+ sudo systemctl enable ghost_yummmy-best --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: https://yummmy.best/ghost/
站点配置

打开浏览器,输入你的博客域名,即可看到博客首页‌

Ghost 建站

如果想要进入管理员后台的话只需要在域名的加上  /Ghost 即可进入后台,例如:https://你的域名/ghost

Ghost 建站

首次登陆后台需要注册管理员信息,请牢记你的注册邮箱以及密码。

更多关于优化Ghost的教程会在下一篇推出。