基于 Ghost 搭建个人博客-部署上线(已过时)

由于 Ghost 已更新到V4.x, 线上配置和运行部分已过时

前文介绍了如何在本机上搭建一个 Ghost 博客来进行体验,本文介绍如何在线上环境,即 VPS 上配置 Ghost,使其真正成为别人可以访问和浏览的个人网站。

本文的内容分为:

  1. 域名注册
  2. DNS 解析设置
  3. VPS 购买
  4. 线上配置和运行 Ghost

域名注册

想要拥有一个个人网站,或者说个人博客,注册一个域名是十分重要的。当然,你可以不用域名,让大家直接用 IP 地址来访问,但这样很明显用户体验不够友好,所以首先介绍一下如何注册一个有个性的域名。

域名的来源多种多样,有免费的,有花钱的,据说 GitHub 可以提供一年免费的 me 域名,我没有尝试过。也有不少人将个人网站以 GitHub Page 的形式建在 GitHub 上,这种解决方案不是本文的讨论范围。

域名一般来讲都是花钱的,除去主流的常见顶级域名(比如本站用的 .com),现在还有 .info、.io、.tips、.xyz、.today 等等各种不常见的域名。一般注册域名需要找域名注册商,国内和国外均有。国外比较有名的老牌注册商有 GoDaddyNamecheap 等等。

本站域名是在 GoDaddy 进行注册的,注册 GoDaddy 域名需要在它的官方网站注册一个账户,另外需要一张可以国际支付的信用卡,没有信用卡的话,可以选择淘宝 GoDaddy 代购服务。

首先是在 GoDaddy 官方网站对自己想注册的域名进行搜索,看看是否已经被人注册过,如果没有的话,那么恭喜你,你可以顺利地成为这个域名的主人了。之后就是按照流程进行支付,如果选择代购的话,代购者会在支付过后将域名过户(Push)给你。

域名注册完毕后,在个人账户下可以看到自己拥有的域名并对其进行管理。





点击 manage 后,比较重要的就是对 Nameservers 的设置,GoDaddy 有提供 DNS 解析的服务,但 GoDaddy 的 Nameservers 在国内不是很稳定,所以一般会将其改成国内的 DNSPod 提供的名字解析服务器,本站的设置为




至于这两个 Nameservers 的地址是如何来的,下节会说明。

DNS 解析设置

在国内的话,一般是推荐使用 DNSPod 的解析服务,这个服务是免费的。在官方网站注册一个账号(或用 QQ 号登陆)后,即可以添加想解析的域名。

添加域名后,DNSPod 会自动生成两个默认的 NS 记录,指定了域名解析服务器。然后将上文域名注册商那里的 NS 记录,改成 DNSPod 提供两个服务器即可。




之后,就是在 DNSPod 上添加 A 记录,将域名解析到自己购买的 VPS 的 IP 地址上。域名注册商那边的 NS 更改,以及 DNSPod 这边的解析记录添加和更改,都需要等待一定的时间才能生效,本人的等待时间在半个小时左右。

VPS 购买

VPS 是指(Virtual Private Server),购买的是服务器上开出的一个虚拟机,租用独立的服务器价格较高,对于个人网站这种应用,购买一个 VPS 就已经足够了。
比较有名的 VPS 提供商有 Amazon EC2LinodeDigitalOcean 等等,目前,DigitalOcean 首月使用是免费的,但需要一张可以国际支付的信用卡。因为本人目前没有信用卡,所以目前使用淘宝购买的日本 VPS,根据目前的体验,速度和稳定性都很好,只是不像 Linode 和 DigitalOcean 那样可以自己管理。

国内也有 BAT 等公司提供云主机服务,但国内上线网站需要进行备案,十分麻烦,除非有特别需要,否则不推荐使用国内的主机。

总之,购买 VPS 可以通过信用卡自己注册和购买,也可以淘宝代购。

线上配置和运行 Ghost

购买 VPS 后,会得到一个可用的服务器和 IP 地址,将域名和 IP 地址做好解析之后,一切准备工作就完成了。接下来我们可以在 VPS 上上线自己的网站了。

如果使用 Windows 系统的话,可以使用 SecureCRT 远程登陆 VPS,Linux 系统的话,直接使用 ssh 命令即可,如果登陆不了,要确认一下 VPS 开放的是否是 22 端口,以及是否开启了 ssh 服务。

基本的安装流程同上一篇的本地搭建是一样的。首先是给 VPS 安装基本的编译环境,以及 Vim 等工具,然后安装 Node.js 和 npm,最后安装 Ghost,需要注意的是,由于 VPS 本身在墙外,所以三个版本用哪个都无所谓了,根据个人喜好即可。安装完毕后,可以用npm start启动开发模式或者用npm start --production启动生产模式,能看到正常启动即可。但这时是无法通过域名或 IP 进行访问的,因为在配置文件 config.js 中,只监听了本机。可以暂时停止 Ghost,继续往下配置。

让 Ghost 一直运行

作为网站,很明显它应该始终处于运行状态,也就是我们应该做些配置,让 Ghost 进程可以一直在后台保持运行。方法有很多种。官方文档中提供了 Forever、PM2、Supervisor、初始化脚本等方法,文档中推荐的是初始化脚本法。本文介绍的是 PM2 法。
首先 cd 到 Ghost 的安装目录

cd /var/www/ghost

然后,安装 PM2,并设置环境变量为生产模式,以 index.js 为入口启动,进程命名为 Ghost

sudo npm install pm2 -g
NODE_ENV=production pm2 start index.js --name "Ghost"

做完之后,PM2 将会守护 Ghost 博客的在线运行状态。可以通过pm2 l(是字母l)查看当前进程状态,可以通过pm2 restart Ghost重启博客程序(比如做了修改主题的工作后,可以用这个命令重启看效果)。

最后,让 PM2 开机自动运行 Ghost 博客

pm2 startup Ubuntu
pm2 save

配置 Nginx 反向代理

在线上环境,一般会在 Ghost 前端配置一个 Nginx 做反向代理。首先是安装和启动 Nginx:

sudo apt-get install nginx
sudo service nginx start

然后,在/etc/nginx/conf.d/下创建一个配置文件ghost.conf.


vim /etc/nginx/conf.d/ghost.conf
server {
    listen 0.0.0.0:80;
    server_name xxx.com;
    access_log /var/log/nginx/xxx.com.log;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header HOST $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://127.0.0.1:2368;
        proxy_redirect off;
    }
}

其中,server_name 改成你自己的域名,之后将配置文件软链接到site-enabled下,并重启 Nginx

ln -s /etc/nginx/conf.d/ghost.conf /etc/nginx/sites-enabled/ghost.conf
/etc/init.d/nginx restart

此时,Nginx 会监听所有 80 端口的请求,并将其 pass 给 2368 端口的 Ghost 服务程序,此时,打开浏览器,输入自己的域名,应该可以看到博客的欢迎界面了。


comments powered by Disqus