在你的 VPS 服务器搭建 Ghost 博客系统

Ghost 采用 Node.js 编写,默认使用 SQLite3 数据库,非常轻量,因为是文件型数据库,所以无需安装。Ghost 允许多用户编写博文,使用 Markdown 来编写博文

下载 Ghost

Ghost 中文官网

Ghost 英文官网

Ghost 中文集成版(推介)

最新版本:Ghost v0.7.4 full (zh)

版本特色:中文汉化、支持七牛、又拍云、阿里云 OSS 存储;增加 Roon 主题;集成 node_modules ,无需忍受 npm install --production 的麻烦。

Ghost 中文标准版

最新版本:Ghost v0.7.4 (zh)

版本特色:中文汉化、支持七牛、又拍云、阿里云 OSS 存储;增加 Roon 主题

Ghost 英文原版

最新版本:Ghost v0.7.4

安装前准备

VPS 服务器和域名

VPS 个人服务器当然是必不可少的,解析域名的的时候推介解析为 www

Node.js

Ghost 对 Node.js 版本号要求比较严格,Ghost 官方推荐使用 Node 0.10.x 版本,同时支持 Node 0.12.xNode 4.2.x 版本。

这边推介使用稳定版 Node 4.2.x

安装 Node 推介使用 nvm 安装。

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
nvm install 4.2
nvm alias defaults 4.2

需要 Nginx 服务

Ghost 默认监听的端口为 2368,而且只监听本地的 IP 地址进行访问,所以需要 Nginx 这个服务来转发流量

Ubuntu 下安装直接执行命令

apt-get install nginx

Ghost+Web 服务器转发原理介绍

官方文档建议使用 Nginx 作为 Ghost 的前端来转发 80 端口请求,那么 Ghost 的工作总流程就可以描述为:

Nginx 监听 80 端口,Ghost 一直监听本地 127.0.0.1:2368 端口,你从外网访问 www.xxx.com 时,Nginx 从 80 端口接收请求,将之转发到本地 127.0.0.1:2368 端口,然后 Ghost 就收到访问请求了。

可是为什么不直接让 Ghost 使用 80 端口呢却要依赖 Web 服务器转发呢?这是因为 Ghost 需要运行在 root 权限上,为了避免风险,就用 Nginx 转发一下。另外,Nginx 毕竟是 Web 服务器,配置灵活、并发高,用来做 Ghost 的前端是非常适合的,如果你服务器上还有其他网站那就更要用 Nginx 了,不然你的 80 端口给了 Ghost 就没法负载其他网站了。

解压文件

unzip -uo [fileName].zip -d [folderName]

开始配置使用

安装依赖

如果你下载的不是 Ghost 中文集成版,那么你就需要在你的项目目录下执行

npm install --production

当然,这需要翻墙,Ghost 所依赖的默认数据库 sqlite 包需要从国外服务器上(亚马逊的云存储服务)下载原生插件,即使是翻墙了也未必能下载下来,因为 sqlite 的原生插件没有通过 npm 分发。

配置 config.js

解压缩之后会有一个 config.example.js 默认配置文件,你需要把它复制重命名成 config.js

cp config.example.js config.js

配置 URL

...
config = {
  production: {
    url: '//www.yourdomian',
    ...
  }
  ...
}
...

注意这边必须写上 // 或者 //,这里写的 URL 就是以后注册账号和登录后台时所用的 URL,必须完全一样,如果注册时用的 URL 和这里的不一样,那么就会出现错误提示说无权限访问!

配置 Nginx 服务进行转发

打开 /etc/nginx/nginx.conf,在 http 语句块内追加上:

server {
  listen 80;
  server_name www.yourdomian;

  location / {
      proxy_set_header   X-Real-IP $remote_addr;
      proxy_set_header   Host  $http_host;
      proxy_pass http://127.0.0.1:2368;
      }
}

重启 Nginx

/etc/init.d/nginx restart

配置 Apache 服务进行转发

打开 /etc/httpd/conf/httpd.conf

# NameVirtualHost *:80 #这一行取消注释

再在文件末尾加上如下语句,配置请求转发

<VirtualHost *:80>
    ServerName linuxidc.com
    ProxyRequests Off
    ProxyPreserveHost On
<Proxy *>
    AddDefaultCharset Off
    Order deny,allow
    Allow from all
</Proxy>
    ProxyPass / http://127.0.0.1:2368/
    ProxyPassReverse / http://127.0.0.1:2368/
</VirtualHost>

重启 httpd 服务

service httpd restart

启动 Ghost 服务

npm start --production

现在启动 Ghost 并访问域名已经能进入博客页面了,但下面还需要实现 Ghost 后台运行,不然你退了终端的话 Ghost 就停止了。

使用 Forever 让 Ghost 后台运行

安装 forever 包

npm install forever -g

启动 Ghost

NODE_ENV=production forever start index.js

关闭 Ghost

forever stop index.js

重启动 Ghost

NODE_ENV=production forever restart index.js

查看运行状态用这条命令

forever list

访问

前台:http://www.yourdomian

后台:http://www.yourdomian/ghost

拓展配置

Ghost 邮件系统设置详解

Ghost 邮件系统设置详解

为博客增加 “标签云”

为博客增加 “标签云”

亲!!! 听说给作者打赏一杯咖啡钱,会给自己带来好运哦!