如何在Ubuntu14.04上使用Ghost和Nginx创建博客
介绍
Ghost 是一个轻量级(~7.5MB)的开源博客平台,非常易于使用。 Ghost 是完全可定制的。 互联网上有大量可用于 Ghost 的主题,有免费的也有付费的。
在本教程中,我们将完成在您的 Ubuntu 14.04 系统上安装和运行 Ghost 的步骤。 我们还将安装 Nginx 到代理端口并安装节点包 forever
,以保持 Ghost 在后台运行。
先决条件
运行 Ghost 的服务器没有最小大小要求。 在决定创建什么大小的 Droplet 时,请考虑您的博客将获得多少访问者以及您计划分享多少内容。 本教程在运行 Ubuntu 14.04 的最小尺寸 DigitalOcean Droplet 上进行了测试。
在开始之前,您需要以下内容:
- Ubuntu 14.04 液滴
- 注册的域名指向您的 Droplet 的 IP 地址
- 具有 sudo 权限的非 root 用户
本教程将帮助您设置您的域名指向您的Droplet。
本教程中的所有命令都应以非 root 用户身份运行。 如果该命令需要 root 访问权限,它将在前面加上 sudo
。 Ubuntu 14.04 的初始服务器设置 解释了如何添加用户并授予他们 sudo 访问权限。
第 1 步 — 安装 Node.js 和 Npm
您需要更新本地包索引并安装 zip
和 wget
包。 我们将在本教程后面使用它们。
sudo apt-get update sudo apt-get install zip wget
Ghost 需要 Node.js v0.10.x(最新稳定版)。 Node 的不稳定版本,如 v0.12.x, 不 支持。 Ghost.org 推荐 Node.js v0.10.36 和 npm v2.5.0。
使用 本教程 中的 PPA 方法安装 Node.js。
安装 Node.js 后,运行以下命令检查安装的版本:
node -v
输出应该与此类似:
v0.10.38
检查是否安装了npm
:
npm -v
如果已安装,它应该输出已安装的 npm 版本:
1.4.28
如果它输出 npm 未安装的错误,请使用以下命令安装它:
sudo apt-get install npm
通过运行以下命令将 npm
更新到版本 2.5.0:
sudo npm install npm@2.5.0 -g
检查安装的npm
版本:
npm -v
输出应该是:
2.5.0
第 2 步 — 安装 Ghost
接下来我们需要安装Ghost。 Ghost.org 建议将 Ghost 安装在 var/www/ghost
中,所以我们将安装它。
首先,我们将创建一个目录 /var/www/
,然后从 Ghost 的 GitHub 存储库下载最新版本的 Ghost:
sudo mkdir -p /var/www/ cd /var/www/ sudo wget https://ghost.org/zip/ghost-latest.zip
现在我们已经获得了最新版本的 Ghost,我们必须解压它。 我们还将目录更改为 /var/www/ghost/
:
sudo unzip -d ghost ghost-latest.zip cd ghost/
现在我们可以安装 Ghost 依赖项和节点模块(仅限生产依赖项):
sudo npm install --production
完成后将安装 Ghost。 我们需要先设置 Ghost,然后才能启动它。
第 3 步 — 设置 Ghost
Ghost 的配置文件应该位于 /var/www/ghost/config.js
。 但是,Ghost 没有安装这样的文件。 相反,安装包括 config.example.js
。
将示例配置文件复制到正确的位置。 请务必复制而不是移动,以便您拥有原始配置文件的副本,以防您需要恢复更改。
sudo cp config.example.js config.js
production
部分中的 URL 和邮件设置是需要修改的关键信息区域。 URL 是必需的。 否则,这些链接会将您带到默认的 http://my-ghost-blog.com
页面。 Ghost 可以在没有邮件设置的情况下运行,但建议您添加它们。 在撰写本文时,Ghost 只需要邮件功能,以防用户忘记帐户密码,因此不配置邮件并没有太大的危害。
打开文件进行编辑:
sudo nano config.js
您必须将 url
的值更改为您的域(或者您可以使用服务器的 IP 地址,以防您现在不想使用域)。 此值必须采用 URL 的形式。 例如,http://example.com/ 或 http://45.55.76.126/。 如果该值的格式不正确,Ghost 将不会启动。
还将 server
部分中的 host
的值更改为 0.0.0.0
。
以下以红色显示需要更改的值:
/var/www/ghost/config.js
var path = require('path'), config; config = { // ### Production // When running Ghost in the wild, use the production environment // Configure your URL and mail settings here production: { url: 'http://my-ghost-blog.com', mail: { // Your mail settings }, database: { client: 'sqlite3', connection: { filename: path.join(__dirname, '/content/data/ghost.db') }, debug: false }, server: { // Host to be passed to node's `net.Server#listen()` host: '127.0.0.1', // Port to be passed to node's `net.Server#listen()`, for iisnode s$ port: '2368' } }, (...)
按 CTRL+X
然后按 Y
最后按 ENTER
保存文件并退出 nano 文本编辑器。
仍在 /var/www/ghost
目录中时,使用以下命令启动 Ghost:
sudo npm start --production
输出应该与此类似:
> ghost@0.6.4 start /var/www/ghost > node index Migrations: Database initialisation required for version 003 Migrations: Creating tables... Migrations: Creating table: posts [...]
如果一切顺利,您应该可以使用端口 2368 访问您的博客:http://your_domain._name:2368
(或 http://your_servers_ip:2368
)。
在终端中按 CTRL+C
关闭 Ghost 实例。
注意: Ghost可以进一步定制。 Ghost.org 详细解释了每个配置选项。
第 4 步 — 安装 Nginx
下一步是安装 Nginx。 基本上,它将允许端口 80 上的连接连接到运行 Ghost 的端口。 简单来说,您无需添加 :2368
即可访问您的 Ghost 博客。
使用以下命令安装它:
sudo apt-get install nginx
接下来,我们必须通过将目录更改为 /etc/nginx
并删除 /etc/nginx/sites-enabled
中的默认文件来配置 Nginx:
cd /etc/nginx/ sudo rm sites-enabled/default
我们将在 /etc/nginx/sites-available/
中创建一个名为 ghost
的新文件,并使用 nano
打开它进行编辑:
sudo touch /etc/nginx/sites-available/ghost sudo nano /etc/nginx/sites-available/ghost
将以下代码粘贴到文件中并将红色中的突出显示的代码更改为您的域名,或者如果您现在不想添加域,请更改您的服务器IP地址:
server { listen 80; server_name your_domain.tld; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:2368; } }
我们现在将在 sites-enabled
中符号链接我们的配置:
sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghost
我们将重启 Nginx:
sudo service nginx restart
接下来我们将创建一个新用户。 该用户将仅被授予在目录 /var/www/ghost
中执行操作的权限。 这是一种安全措施。 如果 Ghost 受到威胁,您的系统将是安全的。 这可以通过运行以下命令来完成:
sudo adduser --shell /bin/bash --gecos 'Ghost application' ghost
我们将授予特权:
sudo chown -R ghost:ghost /var/www/ghost/
您现在可以作为 ghost
用户登录:
su - ghost
现在我们需要启动 Ghost:
cd /var/www/ghost npm start --production
您应该能够在端口 80 上以 http:// 访问您的博客 / 或 http:// /。
第 5 步 — 使用 forever
让 Ghost 继续运行
下一步是让 Ghost 在后台运行。 forever
是一个节点模块,可用于在后台启动 Ghost 并监控以确保其保持正常运行。 如果 Ghost 崩溃,forever 将自动启动另一个 Ghost 实例。
在您的 Ghost 目录中使用以下命令安装 forever
,即 /var/www/ghost
。 但在运行命令之前退出 ghost
用户并登录到您的非 root 用户:
exit sudo npm install -g forever
以 ghost
用户身份启动 Ghost。 它还必须从 Ghost 目录运行:
su - ghost cd /var/www/ghost forever start index.js
输出应该与此类似:
warn: --minUptime not set. Defaulting to: 1000ms warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms info: Forever processing file: index.js
默认情况下,它会在开发环境中加载。 这可以通过运行以下命令来更改:
NODE_ENV=production forever start index.js
forever
可以通过从 Ghost 目录运行来停止:
forever stop index.js
可能的错误
对于以下错误消息:
Error: SQLITE_READONLY: attempt to write a readonly database
以 root
用户身份启动 forever
(键入 exit
以注销当前用户):
sudo forever start index.js
如果最后一条命令说它找不到“永远”,请使用该命令的完整路径:
sudo /usr/local/bin/forever start index.js
如果您看到以下错误:
error: Cannot start forever error: script /home/ghost/index.js does not exist.
您不在 /var/www/ghost
目录中。 切换到该目录并再次执行命令。
结论
恭喜! 您已经安装了 Ghost 并学习了如何使用 Nginx 代理端口。 您还学习了如何使用 forever
节点包保持任务运行。
您可以使用 Ghost 做更多事情。 例如,受密码保护的博客是最新功能之一。
查看关于 Ghost 的其他 DigitalOcean 教程:
另请访问以下内容以了解更多信息:
- Ghost.org - Ghost 网站
- Ghost 文档 — Ghost 官方文档
- Ghost Slack 页面 — Ghost 的 Slack 页面,用于从 Ghost 社区的真实人员那里获得帮助