/ Ghost

Ghost on Heroku,以及七牛

博客作为日志记录工具,其本身程序稳定性、访问速度和数据可靠性都是极为重要的。而不同于 WordPress,理念更为先进的 Ghost 这种程序、文件存储、数据存储分离的模式则让这三种需求兼顾变得更加容易。虽然 WordPress 也可以通过修改源码获得部分支持,但最好的语言终究还是慢。

不考虑域名因素,如果让免费 Ghost 运行环境既能保证存储可靠又能保障一定的访问速度?我们便有了 Heroku 这一先进的 PaaS 平台作为支撑,但问题来了,Heroku 的存储是完全固化的。也就是说,既无法直接上传文件(图片等)供博客调用,也无法使用 sqlite 作为文章数据的存储,这就是我为何进行了 Ghost, Heroku 以及七牛作为文件存储的适配的原因。

通过搜索得知 ghost-on-heroku 这个 Repo 仍然有人在维护(但维护很慢),简单浏览了一下实现十分简单,因此我也效仿其创建了一个 Repo 名为 ghost-qiniu-heroku 通过简单的适配达到目的。

如何使用?

Heroku 部署步骤:

创建一个 Heroku APP;

添加 add-on Heroku PostgreSQL(必选) 和 Mailgun(可选);

请在 Setting - Config Variables 中预先填好如下环境变量:

  # HEROKU_URL        Heroku 分配域名或者你绑定给此 APP 的域名
  # QINIU_ACCESS_KEY  七牛 Access Key
  # QINIU_SECRET_KEY  七牛 Secret Key
  # QINIU_BUCKET_NAME 七牛示例名称
  # QINIU_DOMAIN      你的七牛访问域名,支持 HTTPS

最后,

方案一:Fork ghost-qiniu-heroku, 在 Deploy 中选择 Connect to GitHub,最下方选择 Deploy Branch

方案二:点击 Deploy

确认后,等待部署完成

你做了啥?

Ghost 自 v0.6.0 起支援 Storage API,这使得使用自定义的存储模块变得十分简单,不需要再对 Ghost 源代码进行修改而衍生出自行维护的版本。我使用的是 qn-store 提供的现有方法

常见问题

  1. Ghost-zh 维护了一份自己的版本,提供了包括七牛、阿里云 OSS 等多家存储服务的方法,为何还要另起炉灶?

两个原因,其一是 Heroku 本身不支持那么多个包引入,运行会出错;其二是 Ghost-zh 直接修改源码的方式个人不喜,本身 Ghost 作为主要依赖已经足够;其三是 Ghost-zh 所谓的汉化一点也不好看。

  1. 如何解决 Heroku 应用 Free dyno plan 一天只能使用 18h 的问题?

如果你以前注册的 APP,请切换到 Traditional dyno 再使用。没有的话请升级资费或者使用其他家的 VPS / PaaS 服务。

Ghost on Heroku,以及七牛
Share this

Subscribe to 伝説の町