前言
2019 年春时,InfinitySpace 还在使用 Ghost 作为博客系统,那时我写了《从零开始,创建一个Ghost博客》聊做安装记录,不过也是以Ghost官方文档作为参考。近几天一时兴起,想着把我参考的这篇 Ghost 官方文档做中文化,因此便有了这篇文章。
这篇文章翻译自Ghost的官方文档:How to install Ghost on Ubuntu。
我在翻译时也将我安装时的一些与官方文档不同的操作做了注解,方便各位读者参考。但由于我并非计算机科班出身,因此一些相对专业的内容我可能翻译的并不到位,还请谅解。若有谬误,还请斧正。
正文:如何在 Ubuntu 上安装 Ghost
这是一份在 Ubuntu 16.04或18.04服务器上安装、配置和运行 Ghost 的完整指南,可以用于生产环境。
综述
这是一份关于在我们推荐的 Ubuntu 16.04 或 18.04 系统上自建 Ghost 的官方指南。 如果能够自己安装、维护并更新自己正在使用的软件使您感到舒适,那么这篇指南将非常适合您。
在这篇指南中,您将在使用着 MySQL 的生产环境中完全安装,配置并运行 Ghost 。
- 此种安装方法不适合本地使用或构建核心。
先决条件
Ghost 官方推荐以以下配置来进行安装:
- Ubuntu 16.04 或 18.04 。
- Nginx (为配置SSL,版本不得低于1.9.5)。
- 受支持版本的 Node.js。
- Mysql 5.5、5.6或5.7(不低于8.0)
- Systemd 。
- 至少具有1GB内存的服务器。
- 一个已经注册的域名。
在开始之前,您应该在您的DNS解析中设置一个 A 记录,指向您服务器的 IP 地址,并确保其可以正确解析。 这必须在安装前完成,以便在安装期间正确配置 SSL。
安装
指南的这一部分将确保可以满足安装 Ghost-CLI 的所有先决条件。
创建一个新用户
打开您的终端,以 root 用户的身份登录到您的新服务器:
# 通过SSH登录
ssh root@your_server_ip
# 创建一个新用户并按照提示操作
adduser <user>
使用用户名ghost会与 Ghost-CLI 产生冲突,因此您必须使用其他用户名。
# 添加用户到超级用户组以解锁管理员权限
usermod -aG sudo <user>
# 登录新创建的用户
su - <user>
更新软件包
确保软件包列表和安装的软件包是最新的。
# 更新软件包列表
sudo apt-get update
# 更新已安装软件包
sudo apt-get upgrade
按照提示输入您刚刚在上一步中创建的密码。
安装 Nginx
Ghost 使用 Nginx 服务器,且SSL 配置需要 Nginx 1.9.5或更高版本。
# 安装 NGINX
Sudo apt-get install nginx
如果已经使用UFW,则需要放行HTTP和HTTPS连接。
sudo ufw allow 'Nginx Full'
安装 MySQL
接下来,您需要安装 MySQL 作为生产数据库。
# 安装 MySQL
sudo apt-get install mysql-server
Ubuntu 18.04上的MySQL
如果您运行的是 Ubuntu 18.04,需要设定密码来确保 MySQL 与 Ghost-CLI 兼容。 这需要一些额外的步骤!
# 要设置密码,请运行
sudo mysql
# 现在用这个密码更新您的用户
# 用您的密码替换‘password’ ,但请保留引号!
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
# 然后退出 MySQL
quit
# 再次登录到您的 Ubuntu 用户
su - <user>
安装 Node.js
您需要以下面描述的方式在系统范围内安装一个支持的 Node 版本。 如果您有不同的设置,可能会遇到问题。
# 添加Node 8的NodeSource APT存储库
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash
# 安装Node.js
sudo apt-get install -y nodejs
- 译者注:由于广为人知的不可抗力,node.js官方源并不能在国内以良好的速度链接,这里译者推荐使用淘宝 NPM 镜像来替代官方源。
# 设置npm源为淘宝npm镜像
npm config set registry https://registry.npm.taobao.org/
安装 Ghost-CLI
Ghost-CLI 是一个命令行工具,可以帮助您快速、方便地安装和配置 Ghost。这个npm包可以用npm或yarn安装。
sudo npm install ghost-cli@latest -g
在安装完成之后,您可以运行 ghost help 来查看可用命令的列表。
安装 Ghost
当您的服务器正确设置并安装了ghost-cli,您就可以安装 Ghost 了。以下步骤是针对设置的建议。如果您希望更加精细的的控制, CLI具有标记和选项,允许您分解步骤并精确定制它们所做的工作。
注意: 在 /root 或 home/<user> 目录中安装 Ghost 会导致设置失败。请使用正确配置权限后的目录。
创建目录
为安装创建一个目录,然后设置所有者和权限。
创建目录:
# 在示例中我们将把目录命名为“Ghost” ,不过您可以使用任何您想使用的名字。
sudo mkdir -p /var/www/ghost
# 用将拥有此目录的用户的名称替换 <user>
sudo chown <user>:<user> /var/www/ghost
# 正确的设置权限
sudo chmod 775 /var/www/ghost
# 导航到文件夹
cd /var/www/ghost
运行安装进程
现在您已经万事俱备,是时候该用一个命令安装 Ghost 了
ghost install
- 译者注:Ghost支持以SQLite3作为数据库安装,SQLite3相对于MySQL更加轻量,对于博客而言,SQLite3具有性能更好,维护难度更低,读取速度更快的优势。您可以使用以下命令安装以使用SQLite作为数据库。
# 在此目录下进行Ghost安装(使用SQLite3作为数据库)
ghost install --db=sqlite3
安装问题
在安装过程中,CLI 将询问您一些问题以配置您的站点。
博客网址(Blog URL)
输入您博客的确切 URL,并包括HTTP或HTTPS的协议。例如,https://example.com。 如果您使用 HTTPS,Ghost-CLI 将提供为您设置 SSL的可选问题。 使用 IP 地址会导致错误。
MySQL主机名(MySQL hostname)
这决定了从哪里可以访问 MySQL 数据库。 当 MySQL 与Ghost安装在同一台服务器上时,填入用 localhost (按 Enter 键可以使用默认值,即localhost )。 如果 MySQL 安装在另一台服务器上,请手动输入名称。
Mysql 用户名 / 密码(MySQL username / password)
如果您已经有一个现有的MySQL数据库,请输入用户名。 否则,请输入root。 然后输入您的账户的密码。
Ghost 数据库名称(Ghost database name)
输入数据库的名称。它将自动为您设置,除非您使用的是非root的MySQL用户名/密码。在这种情况下,数据库必须已经存在并拥有正确的权限。
设置一个 MySQL Ghost账户?(Set up a ghost MySQL user?)推荐
如果您提供了您的root MySQL 账户,Ghost-CLI 可以创建一个自定义 MySQL 账户,该账户只能访问 / 编辑您的新 Ghost 数据库,而不能访问 / 编辑其他任何内容。
设置 Nginx?(Set up NGINX?)推荐
自动设置Nginx,让外界可以访问您的站点。 当然,手动设置Nginx是可以的,但为什么要为生活平添负担呢?
设置 SSL?(Set up SSL?)推荐
如果您使用的是 https,并且已经将您的域名指向了正确的地址,Ghost-CLI 可以使用 Let’s Encrypt 自动为您设置 SSL。 或者,您可以稍后通过在任何时候运行
ghost setup ssl
来设置SSL。
输入您的电子邮件(Enter your email)
SSL认证设置需要一个电子邮件地址,以便您能够在包括更新期间的任何时候被告知您的证书是否存在某些问题。
设置 systemd?(Set up systemd?)推荐
Systemd 是广受推荐的进程管理器工具,用于保证 Ghost 稳定运行。我们建议您选择 yes,不过,您也可以设置自己的进程管理器。
启动 Ghost?(Start Ghost?)
选择yes以运行Ghost,并使您的网站开始运行。
未来的维护
一旦 Ghost 被正确设置,定期且适当的维护和更新是十分重要的,幸运的是,使用 Ghost-CLI 可以相对容易的做到这一点。
运行
ghost help
查看可用命令的列表,或浏览完整的 Ghost-CLI 文档。
在安装失败时该做些什么?
如果安装时出现严重错误,请使用
ghost uninstall
来删除它,然后再试一次。这比删除文件夹好得多,因为这确保不会留下任何残余组件。
如果安装被中断或与服务器的连接丢失,请使用
ghost setup
重新启动配置程序。
对于故障排除和报错,请使用站点搜索和 FAQ 部分来查找有关常见错误提示的信息。
接下来呢?
整装待发! 现在您可以开始自定义您的网站了。这取决于你下一步想要拥有的体验,选择页面,进而查看我们的一系列教程或 Ghost API 文档。