零 · 前言

这篇文章是我在2019年春时写的,彼时InfinitySpace刚刚告别了厚重的WordPress,转为使用Ghost作为博客系统。Ghost最吸引我的大概就是JavaScript和SQLite了,轻量,易于二次开发(于我而言),而且易于维护。但经过一段时间的使用后弊端便逐渐显现:功能上还是有些许不完整的地方,而且时有一些令强迫症不爽的小Bug...但这都不是我放弃Ghost的原因。
令我真正放弃Ghost的原因是阿里云...因为某次的健忘导致了服务器被释放,此后因为种种原因,博客长期处于搁置状态,直到2020年春节后才空出闲暇重建,这时我已经没有多余的精力去继续鼓捣代码,于是选择了同样轻量但功能更为完善,拓展性更高的Typecho。

一 · 服务器

工欲善其事,必先利其器。

我在此博客使用的的服务器是在阿里云通过云翼计划购置的轻量应用服务器,每月费用9.5¥,配置大概是单核心E5-2682V4+2GB RAM+40GB SSD,可选择安装Ubuntu 16.04 LTS(个人建议使用来自萌咖的脚本重装到18.04.2 LTS),带宽5Mbps,1000G流量/月。

  • 2019.4.2更新:现在可以选择直接安装Ubuntu18.04.2 LTS了。
  • 云翼计划的门槛为24岁下自动获得学生身份,或绑定学生证通过学生验证。

二 · 域名

好风凭借力,送我上青云。

我的域名同服务器一样也是在阿里云(万网)注册的.cn域名,一个.cn+同域名的.top,首年29元,不过貌似活动已经结束了。

  • 阿里云的新用户可以以首年1元的价格注册一个.top/.work/.store域名。

三 · 开工

万事俱备,只欠东风。

1.账户设置

创建一个新用户(如果服务器以root为默认账户):

打开终端并以root用户登录服务器:

# 通过SSH登录
ssh root@your_server_ip

# 创建一个新用户并按照提示操作
adduser <user>
  • 使用用户名ghost会与Ghost-CLI冲突,故不能使用。
# 将用户添加到超级用户组以使能sudo
usermod -aG sudo <user>

# 登录新创建的账户
su - <user>

2.安装Nginx/Node.js/Ghost-CLI

在SSH下执行

# 安装Nginx
sudo apt-get install nginx

# 添加Node 8的NodeSource APT存储库
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash

# 更新包列表
sudo apt-get update

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

#设置npm源为淘宝源
npm config set registry https://registry.npm.taobao.org/

# 安装Ghost-CLI
sudo npm install ghost-cli@latest -g

3.建立相应的安装目录并安装Ghost

创建目录:

# 创建一个名为"ghost"的文件夹来存放Ghost博客
sudo mkdir -p /var/www/ghost

# 设置用户权限
sudo chown <user>:<user> /var/www/ghost

# 设置文件夹权限
sudo chmod 775 /var/www/ghost

# 导航到文件夹
cd /var/www/ghost

安装Ghost:

# 在此目录下进行Ghost安装(使用SQLite3作为数据库)
ghost install --db=sqlite3

这时就可以看见Ghost的安装进程了,在安装完成后,设置过程中询问域名的位置填入注册的域名;确认自动设置Nginx,略过SSL证书的安装并安装systemd,整个安装过程大概需要几分钟,安装完毕后确认启动Ghost,这时访问刚刚填入的域名便可以看见已经安装完毕的默认状态的Ghost了。

4.安装CertBot以启用SSL

我之所以跳过Ghost内置的SSL证书申请而单独使用CertBot,是因为CertBot支持Let's encrypt证书的自动续签。

安装CertBot:

# 安装PPA
sudo apt-get install software-properties-common

# 添加软件仓库
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot

# 更新包列表
sudo apt-get update

# 安装CertBot及其Nginx插件
sudo apt-get install certbot python-certbot-nginx 

注册域名证书并自动配置Nginx:

# 注册域名证书并自动配置Nginx
sudo certbot --nginx

注册过程中需要选择域名并询问邮箱,填入即可。

设置自动续签:

# 设置自动续签
sudo certbot renew --dry-run

至此SSL配置完毕。

5.大功告成

现在,绝大部分的工作已经完成了,只需要访问博客的后台(你的域名/ghost)来注册管理员账号即可。

恭喜,一个全新的Ghost博客大功告成了。

四 · 后记

这篇文章主要的参考来源于Ghost官方文档,并结合我在搭建过程中的一些经验而写成的。
博客的目的是为了更好地记录,而记录的目的是为了更好的思考。