Ghost是一个轻量级(~7.5MB)的开源博客平台,非常易于使用。Ghost是完全可定制的。互联网上有很多可供Ghost使用的免费或付费的主题。
在本教程中,我们将完成在Ubuntu 14.04系统上安装和运行Ghost的步骤。我们还将安装Nginx代理端口并安装forever
一个节点包,以保持Ghost在后台运行。您需要准备一个云服务器CVM。还没有云服务器的同学可以到腾讯云官网点击产品中的云服务器,进行购买。您也可以到这里免费领取一台腾讯云服务器。还需要准备一个域名。腾讯云现在有域名金秋盛惠,最低仅需1元起。也可以在购买云服务器时进行加购减免,比正常价格要便宜50%哦。
搭建博客环境
安装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。
安装Node.js后,运行以下命令检查安装的版本:
代码语言:javascript复制node -v
输出应该类似于:
代码语言:javascript复制v0.10.38
检查是否npm
已安装:
npm -v
它应该输出已安装的npm版本(如果已安装):
代码语言:javascript复制1.4.28
如果它输出了未安装npm的错误,请使用以下命令安装它:
代码语言:javascript复制sudo apt-get install npm
npm
运行以下命令更新到2.5.0版:
sudo npm install npm@2.5.0 -g
检查npm
已安装的版本:
npm -v
输出应该是:
代码语言:javascript复制2.5.0
安装Ghost
接下来我们需要安装Ghost。Ghost.org建议 在var/www/ghost
里安装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依赖项和节点模块(仅限生产依赖项):
代码语言:javascript复制sudo npm install --production
完成后会安装Ghost。我们需要在启动之前设置Ghost。
设置Ghost
Ghost的配置文件应该位于/var/www/ghost/config.js
。但是,Ghost没有安装此类文件。相反,安装包括config.example.js
。
将示例配置文件复制到正确的位置。请务必复制而不是移动,以便您拥有原始配置文件的副本,以备需要还原更改时使用。
代码语言:javascript复制sudo cp config.example.js config.js
您在本production
节中的URL和邮件设置是需要修改的信息的关键区域。该URL是必要的。否则,链接将带您进入默认http://my-ghost-blog.com
页面。Ghost可以在没有邮件设置的情况下运行,但建议您添加它们。在撰写本文时,Ghost仅在用户忘记其帐户密码时才要求邮件正常运行,因此不配置邮件会造成太大危害。
打开文件进行编辑:
代码语言:javascript复制sudo nano config.js
您必须更改url
域的值(或者您可以使用服务器的IP地址,以防您现在不想使用域)。该值必须采用URL的形式。例如http://example.com/。如果此值格式不正确,Ghost将无法启动。
同时host
将该server
部分的值更改为0.0.0.0
。
以下显示需要以红色更改的值:
代码语言:javascript复制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
保存文件并退出纳米文本编辑器。
仍在/var/www/ghost
目录中时,使用以下命令启动Ghost:
sudo npm start --production
输出应该类似于:
代码语言:javascript复制> 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详细解释了每个配置选项。
安装Nginx
下一步是安装Nginx。基本上,它将允许端口80上的连接连接到运行Ghost的端口。简单来说,您可以在不添加的情况下访问Ghost博客:2368
。
使用以下命令安装它:
代码语言:javascript复制sudo apt-get install nginx
接下来,我们必须通过将目录更改为/etc/nginx
以及删除Nginx /etc/nginx/sites-enabled
默认文件来配置:
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
将以下代码粘贴到文件中,如果您不想立即添加域,请将your_domain.tld
更改为您的域名或服务器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:
代码语言:javascript复制sudo service nginx restart
接下来我们将创建一个新用户。该用户只被授予在/var/www/ghost
目录中执行操作的权限。这是一项安全措施。如果Ghost遭到入侵,您的系统将是安全的。这可以通过运行此命令来完成:
sudo adduser --shell /bin/bash --gecos 'Ghost application' ghost
我们将授予特权:
代码语言:javascript复制sudo chown -R ghost:ghost /var/www/ghost/
您现在可以以ghost
用户身份登录:
su - ghost
现在我们需要启动Ghost:
代码语言:javascript复制cd /var/www/ghost
npm start --production
您应该能够在端口80上以 http://your_IP 或 http://your_domain 访问您的博客。
保持Ghost运行
下一步是让Ghost在后台运行。forever
是一个节点模块,可用于在后台启动Ghost并监视以确保它保持运行状态。如果Ghost崩溃,永远会自动启动另一个Ghost实例。
forever
使用Ghost目录中的以下命令进行安装,即/var/www/ghost
。但在从ghost
用户运行命令日志并登录到非root用户之前:
exit
sudo npm install -g forever
以ghost
用户身份启动Ghost 。它也必须从Ghost目录运行:
su - ghost
cd /var/www/ghost
forever start index.js
输出应该类似于:
代码语言:javascript复制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
默认情况下,它在开发环境中加载。可以通过运行以下命令来更改此设置:
代码语言:javascript复制NODE_ENV=production forever start index.js
可以通过从Ghost目录运行它来停止forever
:
forever stop index.js
可能的错误
对于以下错误消息:
代码语言:javascript复制Error: SQLITE_READONLY: attempt to write a readonly database
以root
用户身份启动forever
(键入exit
以注销当前用户):
sudo forever start index.js
如果最后一个命令说它找不到'forever',请使用命令的完整路径:
代码语言:javascript复制sudo /usr/local/bin/forever start index.js
如果您看到以下错误:
代码语言:javascript复制error: Cannot start forever
error: script /home/ghost/index.js does not exist.
说明你不在/var/www/ghost
目录中。切换到此目录并再次执行该命令。
搭建完成
恭喜!您已经安装了Ghost并学习了如何使用Nginx代理端口。您还学习了如何使用forever
节点包保持任务运行。你可以用Ghost做更多的事情,比如使用密码保护博客等等。若您想在实验室环境抢先体验搭建自己的网站,博客或者各类应用,我推荐您到腾讯云实验室页面进行选择,不仅有步骤指导,还可以免费上机,帮助您快速掌握开发知识!