在 OpenShift 上免费搭建 Ghost 博客的过程

Ghost 简介

Ghost 是一个基于 Node.js 的开源博客平台,由前 WordPress UI 部门主管 John O’Nolan 和 WordPress 开发人员 Hannah Wolfe 创立,目的是为了给用户提供一种更加纯粹的内容写作发布平台。

Ghost 简单轻量部署快,后台使用具备预览功能的 Markdown 编辑器进行写作,这些就是我选择它的原因。(下面提及的 Bug 还没修复,所以现在改用 Hexo 了 —— Ghost 博客一览请点击

搭建过程

主要参考了《使用 Nitrous.IO+OpenShift 免费搭建 Ghost 博客》这篇文章,下面就将搭建的过程简单的记录一下,说说遇到的坑以及解决方法。

  1. 注册 OpenShift使用其提供的免费服务搭建 Ghost Blog。

  2. 注册 nitrous.io,该服务提供了一个在线的 Linux 开发环境,稍后需要使用这个环境安装 Ghost 和配置。注册后创建 Node.js IDE 时需要通过手机短信进行验证,经测试中国移动的号码无法使用免费的方案,遂借用 Heywire 这个手机应用(获得虚拟的美国号码,免费接收短信)完成了验证。

  3. 使用 nitrous.io 的 Node.js IDE 环境搭建 Ghost Blog:

  • 安装 rhc 工具(OpenShift 的客户端工具):sudo gem install rhc
  • 初始化 rhc 工具:rhc setup(按照提示输入用户名密码)
  • 安装 Ghost Blog:rhc app create ghost nodejs-0.10 mysql-5.1 --env NODE_ENV=production --from-code https://github.com/openshift-quickstart/openshift-ghost-quickstart.git(该语句中的 ghost 以及下文 rhc 命令中的 ghost 同为 OpenShift 中的应用名,可自行更改为其它内容)
  1. 这时已经可以通过http://ghost-用户名.rhcloud.com连接访问 Ghost Blog 了,但是由于众所周知的原因 OpenShift 很可能被墙了,这时候就得通过自定义域名来绕过围墙:
  • 在 OpenShift 中自定义域名:rhc alias add ghost [你自己的域名]
  • 在 DNS 服务商处,将对应域名的 CNAME 记录指向 ghost-用户名.rhcloud.com
  • 在 nitrous 中打开 ghost/config.js 文件,将 'http://'+process.env.OPENSHIFT_APP_DNS 替换为 'http://[你的域名]'
  1. 使用 CDN 加速访问(非必须):
  • 不知为何无法使用 Incapsula 服务,获取不到我的 IP,所以选择了 Cloudflare
  • 经测试国内访问Cloudflare速度也不够快,考虑备案然后使用国内的 CDN 服务。
  1. 也是因为众所周知的原因,需要替换 Google Font 使用 360 CDN 提供的字体库,打开 ghost/content/themes/[主题]/default.hbs 文件,搜索fonts.googleapis.com全部替换为fonts.useso.com

  2. 参考《解决 Ghost 中 gravatar 被墙不能显示的问题》,数据库相关信息可在 OpenShift 中找到:

     mysql -u [数据库用户名] -p -D [数据库名称]
     Enter password:[数据库密码]
     select image from users where email = "your email address";
     update users set image = "//去掉www的Gravatar地址" where email = "your email address";
    
  3. 主题安装:

     cd ~/ghost/content/themes/
     git clone [git地址]
    

可能需要为 git 设置默认的用户名以及邮箱,下载完主题后需删除目录下的 .git 目录以及 .gitignore,以免稍后无法应用更新。

  1. 添加多说(试用多说过程中弹出了广告)Disqus评论区以及 Swiftype 站内搜索的代码可以放置在后台Setting -> Code Injection中,不必修改主题。以下是我修改过的多说脚本(请将 short_name 改为自己的):
<!-- 多说公共JS代码 start (一个网页只需插入一次) -->
<script type="text/javascript">
    var s = document.createElement("section");
    s.className = "post-comments";
    s.innerHTML = '<div class="ds-thread" data-thread-key="' + location.pathname.replace(/\//g,"") + '" data-title="'+ document.title +'" data-url="' + location.href.replace(/^https/, "http") + '"></div>';
    document.querySelector(".post-container").parentNode.appendChild(s);
    var duoshuoQuery = {short_name:"xxxxxxxxx"};
    (function() {
        var ds = document.createElement('script');
        ds.type = 'text/javascript';ds.async = true;
        ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js';
        ds.charset = 'UTF-8';
        (document.getElementsByTagName('head')[0]
         || document.getElementsByTagName('body')[0]).appendChild(ds);
    })();
</script>
<!-- 多说公共JS代码 end -->
  1. 更新应用,在 nirtous 中做的所有更改均需通过 git 同步到 OpenShift 中,使用以下命令即可:
    cd ~/ghost
    git add .
    git commit -m "[随便输入什么内容]"
    git push
等待更新成功提示出现:`remote: Deployment completed with status: success`
  1. 开始写作,通过网址http://[你的域名]/ghost初始化博客,设置管理员账号密码,然后进入后台写作以及配置

未解之谜

  • 尝试配置七牛云存储后无法启动 Ghost -_-
  • 尝试在 cloudflare 中使用 page rule 功能使 demojameson.com 跳转到 www.demojameson.com 失败,转而使用 wwwizer 实现该功能,两个域名均需在 cloudflare 中添加 CNAME 记录,在 OpenShift 中添加 Alias
  • 有序列表中插入代码块会扰乱顺序,使用8 个空格的缩进又不能指定代码高亮,心好累……原来是个已知 Bug
    {% asset_img ghost-markdown-bug.png %}

参考资料

  1. 使用 Nitrous.IO+OpenShift 免费搭建 Ghost 博客
  2. 简单实现 Ghost 独立博客的 QQ 空间、新浪微博和人人网分享按钮
  3. 解决 Ghost 中 gravatar 被墙不能显示的问题
  4. 绑定 GoDaddy 域名到 OpenShift 应用
  5. 用 Prism 给 Ghost 添加代码高亮
  6. Ghost 博客平台:安装多说, Disqus
  7. 使用 Swiftype 完成 Ghost 搜索功能
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,230评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,261评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,089评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,542评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,542评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,544评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,922评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,578评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,816评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,576评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,658评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,359评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,920评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,859评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,381评论 2 342

推荐阅读更多精彩内容