我的 vps 情况:
操作系统 – CentOS 7 64 位
web 服务器软件 – Apache
Ghost1 基于 Node.js,它本身自带 web 服务器,不需要 Apache。
安装 Ghost
主要参照 Ghost 官方帮助2。
下载 Ghost
$ curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip
解压 Ghost
$ unzip -uo ghost.zip -d ghost
安装 Ghost
$ cd ghost
$ npm install --production
启动 Ghost
$ npm start --production
现在,你可以在 vps 上通过 127.0.0.1:2368 路径访问到 Ghost 博客了。
配置 Apache 与 Ghost
当然,你的目的可不是在 vps 上访问 Ghost,而是通过域名访问 Ghost。
ghost 目录下有一个 config.example.js 文件,用于配置相关信息3,比如域名,端口等。
执行以下操作前,请先确保你在 DNS 服务器上把域名绑定到 vps 的 ip 地址。
复制一个 config.js
$ cd ghost
$ cp config.example.js config.js
修改 config.js
将 config.js 里 production 部分里的 url: 'http://my-ghost-blog.com' 改为 url: 'http://111cn.net',这是我要使用的域名。
重启 Ghost
按 CTRL - C 关闭 Ghost,再执行 npm start --production 启动它。
这时你能看到如下信息:
Migrations: Up to date at version 003
Ghost is running...
Your blog is now available on http://111cn.net
Ctrl+C to shut down
但这信息并不意味着我们能访问到 Ghost 了。因为 111cn.net 域名访问的是 80 端口,在这个端口上监听的是 Apache 而不是 Node.js – 它是在 2368 端口监听着。
所以我们还需要配置 Apache。
打开 /etc/httpd/conf.d/vhost.conf 文件(CentOS 系统的情况),添加如下内容:
<VirtualHost *:80>
ServerName www.111cn.net
ServerAlias 111cn.net
ProxyPreserveHost on
ProxyPass / http://localhost:2368/
ProxyPassReverse / http://localhost:2368/
</VirtualHost>
重启 apache:
$ sudo service httpd restart
这样,Apache 充当代理,会把它监听到的流量转发给 Node.js 监听的端口,这时访问 http://111cn.net,我们就能打开 Ghost 博客了