在 Ubuntu 22.04 上部署 GHOST 开源博客

简介
GHOST 是一个基于 Node.js 的开源博客平台,专注于简洁的写作体验和高效的发布流程。本教程将指导你如何在 Ubuntu 22.04 系统上部署 GHOST 博客。
前提条件
- 一台运行 Ubuntu 22.04 的服务器
- 一个具有 sudo 权限的用户
- 已安装
curl
和git
步骤 1: 更新系统软件包
1、使用sudo提升为root权限执行更新系统软件包的命令
sudo apt update && sudo apt upgrade -y
2、执行命令后,系统更新时若部分软件与当前系统不兼容,会弹出一些对话框,如下我们选择默认选项,即第二个keep the local version currently installed (保留当前安装的本地版本)并回车继续安装即可。

3、系统继续更新,过一会会出现一个 Daemons using outdated libraries 弹窗,他的意思是我们更新系统及安装包后,是否需要重启这些服务?继续往下看,我们会看到系统默认勾选了一些服务,并且下面有[OK][CANCEL]的选项,我们使用上下左右键及TAB选择[OK],重启这些服务,不要勾选多余服务。

4、若执行以上操作后继续提示是否重启服务的弹框,我们此时全部勾选,然后点击[OK],确认重启这些服务,最后等待全部服务重启成功后,会结束更新。此时我们可以选择关闭Ubuntu的远程链接,重启服务器再远程链接查看服务器是否正常启动。
步骤 2: 添加新用户并授权
1、先暂时切换到root用户,运行 adduser 命令添加新普通权限的 Linux 用户,按照提示输入新用户的密码,再次确认密码。然后依据提示点Enter以此跳过全名、电话、地址等无关信息
# 暂时切换到root用户
sudo -i
# 新增普通用户,用户名需自行设定(除ghost,此处我们使用feuser),格式:adduser 用户名
adduser feuser
# 按照提示输入新用户的密码,再次确认密码,依据提示点Enter以此跳过全名、电话、地址等无关信息
2、为新增用户添加 sudo 权限,并将当前身份切换为该用户。
# 赋予用户sudo权限(此处我们使用feuser),格式:usermod -aG sudo 用户名
usermod -aG sudo feuser
# 切换到普通用户,格式:su - 用户名
su - feuser
# 根据提示输入密码后回车
步骤 3: 从 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;
步骤 4: 安装 Node.js与Yarn
需注意,当前服务器系统Ubuntu22.04版本所需Node.js版本为Node.js 18.x、20.x 两个大版本中。
# 通过 NodeSource 安装指定版本的 Node.js
curl -sL https://deb.nodesource.com/setup_18.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/
调整npm或yarn的镜像时可能会遇到镜像地址无效或镜像地址证书失效的情况,此时百度寻找一个新的国内镜像地址即可,用默认镜像地址下载可能在后续安装ghost时超时。
验证安装:
node -v
npm -v
步骤 5: 新建ghost文件夹并赋权
建立文件夹,配置好文件夹权限,下文以 /var/www/ghost
作为 Ghost 数据目录。
# 新建 Ghost 数据目录文件夹
mkdir -p /var/www/ghost
# 设置文件夹权限,用户名为feuser
chown 用户名:用户名 -R /var/www/ghost
chmod 0775 -R /var/www/ghost
# 前往文件夹
cd /var/www/ghost
步骤 6: 安装 GHOST-CLI
GHOST-CLI 是一个命令行工具,用于简化 GHOST 的安装和管理。
# 配置了 cnpm 加速源
sudo cnpm install ghost-cli@latest -g
步骤 7: 安装 GHOST
# 安装 Ghost
ghost install
进入安装流程,在安装过程中,CLI 会提示你输入一些信息,如数据库配置、博客 URL 等。根据提示填写相关信息。
# 进入 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://你的域名或者是公网IP
# 输入 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 证书、系统服务。
步骤 8: 配置 Nginx
若你使用了公网IP设置了GHOST的URL地址,则需要以下操作:
编辑 Nginx 的配置文件,通常位于 /etc/nginx/sites-available/
目录下。创建一个新的配置文件,例如 ghost.conf
:
sudo nano /etc/nginx/sites-available/ghost.conf
在文件中添加以下内容:
server {
listen 80;
server_name 你的IP地址;
location / {
proxy_pass http://127.0.0.1:2368; # Ghost 默认运行在 2368 端口
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
然后启用这个配置文件:
sudo ln -s /etc/nginx/sites-available/ghost.conf /etc/nginx/sites-enabled/
重新加载 Nginx 以应用更改:
sudo systemctl restart nginx
步骤 9: 启动 GHOST
使用 GHOST-CLI 启动 GHOST:
ghost start
现在,你可以通过浏览器访问 http://your_domain.com
来查看你的 GHOST 博客。
步骤 10: 修改GHOST的邮箱服务,允许使用邮箱注册
1、首选确认作为GHOST发件人的邮箱已经启用第三方客户端发送服务,以阿里云邮箱为例

2、若邮箱启用了三方客户端安全密码,则需要新增密码,不能使用之前的邮箱密码

3、现在来修改Ubuntu中的GHOST邮箱设置
# 前往文件夹
cd /var/www/ghost
# 使用nano编辑文件
nano config.production.json
打开文件后,找到mail设置的位置,删除默认邮箱设置,修改为新邮箱设置,修改完成后,按Ctrl + O
保存文件,然后按Enter
确认文件名。按Ctrl + X
退出nano编辑器。
# 默认邮箱设置:
"mail": {
"transport": "Direct"
},
# 新邮箱设置:
"mail": {
"from": "fe@china-fe.com",
"transport": "SMTP",
"options": {
"host": "smtp.qiye.aliyun.com",
"port": 465,
"service": "qiye.aliyun",
"secure": true,
"auth": {
"user": "fe@china-fe.com",
"pass": "第三方密码"
}
}
},
现在重启GHOST服务
# 重启 GHOST
ghost restart
步骤 11: 管理 GHOST
你可以使用以下命令来管理 GHOST:
- 启动 GHOST:
ghost start
- 停止 GHOST:
ghost stop
- 重启 GHOST:
ghost restart
- 查看 GHOST 状态:
ghost status
结论
恭喜!你已经成功在 Ubuntu 22.04 上部署了 GHOST 开源博客。现在你可以开始撰写文章并发布内容了。如果你有任何问题,可以参考 GHOST 的官方文档或社区支持。