402v /posts/ghostbo-ke-da-jian-xi-lie-zhui-sui-mao-shen-zhi-lu

Ghost博客搭建 - 追随猫神之路

之前的博客一直用Octopress搭建,Rails开发,托管到Github Pages的纯静态网站,很Geek,很喜欢。单纯因为爱上了@onevcat大神的博客主题,了解到还有Ghost这么个东西。所以想着是在octopress上搞一下还是直接迁移到Ghost,四处看了看大家的评论,想想静态网页最终还是搞不出太多东西,所以一咬牙在Digital Ocean上花了5美刀买了个已经搭建好Ghost的服务器。

这个系列博客的整体介绍:我的Ghost博客搭建在DigitalOcean服务器上(name.com买的域名,DNS托管在DNSPod),从Octopress迁移过来,使用的主题是来自@onevcat大神的vno。鉴于天朝的网络环境,强烈建议翻墙搭建,为了保证叙述的连续性,后面不会特殊说明这一点。Ghost博客的搭建过程真的是非常简单,这一系列文章的导航:

###首先了解一下Ghost Blog搭建的两种方式 Ghost提供了创建博客的两种方式:

  • 注册一个Ghost帐号,直接创建一个托管到Ghost的博客,默认创建一个地址为:custom-blog-url.ghost.io的站点。简单方便,缺点也很明显,数据都存在ghost的服务器上,个性化程度不高,而且每个月5刀的托管费用也是价格不菲。
  • 相比之下程序员会更喜欢第二种方式,Ghost提供Node.js的源码,可以托管到任何服务器上,并且提供了一系列配置、升级的服务支持、开发者API,我们的博客搭建也从这里开始。

服务器跟随猫神的足迹选择的DigitalOcean的VPS服务,DigitalOcean是一个新兴的VPS(虚拟主机)服务商,同时也提供DNS解析服务,价格便宜、SSD、简便易用为其积累了良好的口碑和人气,感兴趣可以看看Why I use Digital Ocean Hosting这篇文章。因为是搭建博客,所以更看重轻量、简洁的风格,AWS神马的留给大流量的站点吧,使用DigitalOcean比较方便的一点是直接提供了搭建好Ghost环境的镜像,VPS起来之后什么都不用做直接就可以访问你的Ghost博客了

###开始第一步、DigitalOcean创建 DigitalOcean把每个VPS称为Droplet,首次使用注册了用户之后进入首页点击右上角的Create Droplet

create_droplet

就进入了VPS创建页面,起个名字,博客托管的话每月5刀应该就够了,和Ghost的费用一样,但是自己的服务器拿来可以做好多事情,也可以同时托管多个博客站点。 选择服务器区域的时候强迫症又犯了,虽然大体知道每个国家服务器的访问速度,还是先建了美国、日本、新加坡三个服务器试了一下,结果是SGP(200ms) > JP(300ms) > US(400ms),中国的用户建议选择在SGP,尽管都不怎么快。

前面已经说了DigitalOcean已经准备好了带有Ghost的镜像,这里切换到Application标签,直接选择右下角的Ghost镜像。 Droplet创建时允许指定一个SSH Key,这样登录服务器的时候不许要输入密码直接就可以访问。因为后续自定义主题什么的肯定要远程登录服务器,所以这里还是设置一个,后续ssh上去的时候比较方便。 SSH Key的创建方式列在这里(反正一直都记不住这些Linux命令,每次新建的时候都是Google),打开终端应用(Terminal),进入~/.ssh目录,运行这条命令:

ssh-keygen -t rsa

会生成两个文件:id_rsaid_rsa.pub,把.pub的文件上传就好。

最后点击Create Droplet完成。回到首页之后可以找到新创建的Droplet,点击名字进去后可以配置、销毁这个VPS,最重要的是Droplet的IP地址,配置域名DNS解析的时候会用到它。

###第二步、指定博客域名 在这里可以试一下直接访问这个IP地址,Ghost博客已经搭建成功了,费这个劲搭建的博客我们肯定不能跟人家说“这是我的Blog,请记下这个IP”吧,所以我们需要一个给这串反人类的数字起个名字,比如我的博客域名:402v.com,所以接下来要做两件事:到域名注册商的网站买一个心仪的域名,也许你已经有了一个,那么第二件事就是找一个DNS域名解析服务商把域名挂在刚刚创建的Droplet的IP上 像上面这样的域名注册商有很多,name.com是加个比较合理的一个,从name.com买的域名点进去会进入到一个管理界面: 这些网站同样大多也提供DNS解析服务,配置的过程也都基本一致。以DNSPod为例(因为要同时管理Godaddy和name两个地方买的域名):

  1. 在DNSPod上注册账号之后首页会有添加域名的入口: 把在name.com买的域名添加上去;

  2. 找到DNSPod的Nameservers。每个DNS解析服务商都有自己的DNS服务器,必须把他们的服务器配置到域名对应的Nameservers上。进入DNSPod上的域名页面后可以看到两条不能删除的DNS记录: f1g1ns1.dnspod.net.f1g1ns2.dnspod.net.这两个值就是DNSPod的NameServers,先记下来(其他的服务商网站也都会在比较明显的地方告诉你他们的NameServers);

  3. 修改Nameservers。回到name.com的管理页面,点击NameServers,删掉默认值,把DNSPod的两个server填上,保存,这里生效可能有延迟,会很快,可以在Terminal中用whois命令查询,看NameServers是否修改成功;

     whois you-blog-url.com
    
  4. 返回DNSPod点击域名进入DNS Record的管理页面,添加DNS记录。最重要的是添加两条A记录: 其中@指的是当前域名,记录值里面填入Droplet的IP地址。一般的网站都会支持www子域,所以可以再添加一条CNAME记录: 添加完成之后你的域名就和IP绑定了,但是要等待DNS解析系统更新,这个过程从几分钟到几小时不等。*这个地方必须要吐槽一下大百度的Wifi网络,做了DNS缓存或者其他的东西,等了N久也不见IP换过来,连了日本代理一试,原来早就生效了,orz...

  5. 期间可以在Terminal里面输入:

     ping your-blog-url.com
    

命令查询是否生效,一旦显示出你的Droplet IP了就说明DNS生效,输入命令的时候如果问你是否记住该域名(host),输入yes即可。 6. 其实之前在name.com的域名管理界面Nameservers下面也会看到DNS Records选项,如果我们没有修改默认的Nameservers,那么就是在这个地方设置像DNSPod那样的域名记录了。 7. DigitalOcean上也有Host配置的帮助文档,用的是DigitalOcean自己的DNS解析服务。 8. 最后一步是修改Nginx服务器的配置文件: * 首先要登录到Droplet的服务器上,本地进入Terminal,输入:

        ssh root@[droplet ip]
* 如果之前设置了ssh key,那么会直接登录到服务器上;如果没有设置,那么创建Droplet的时候会往DigitalOcean账号邮箱中发一封带有root用户密码的邮件,如果再没有就去Droplet管理界面的`Access`下重置root用户密码,再重新ssh登录一次;
* 用[Vim](http://pizn.github.io/2012/03/03/vim-commonly-used-command.html)或者nano编辑ghost在nginx上的配置文件:

        vim /etc/nginx/sites-available/ghost.conf
* 打开之后会看到如下内容,将其中的:

        server {
        listen 80;
        server_name example.com;
            
        location / {
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   Host      $http_host;
            proxy_pass         http://127.0.0.1:2368;
        }
        }
替换`server_name`部分的`example.com`为博客域名,如:`my-blog-url.com`,保存退出。
* 重启nginx,如果提示权限错误,在命令前加`sudo`

        service nginx restart

至此,搭建在DigitalOcean虚拟服务器上的Ghost博客站就完成了。访问your-blog-url.com试一下,Ghost默认的清爽主题也很养眼。但是这显然不是我们要的全部,配置个性化的Ghost博客请查看下一篇。

#Where to go

评论 · 0

还没有评论。