Ghost 是基于 Node.js 的开源博客平台,支持您编写和发布自己的博客,为您提供了让此过程变得简单而又有趣的工具。它的设计简单而又优雅,您可以花费更少的时间建立博客,用更多时间来撰写博客。Ghost 特点就是轻 快 高效,并原生支持 Markdown 语法。无论是从架构、设计、易用性,界面简洁,专注写作,支持在线预览,在线写作,无论您是在哪里,都可以去写博客,尽情的享受写作带来的快感。
Ghost 同时支持 MySQL、MariaDB、SQLite 和 PostgreSQL。用户可以在支持 Node.js 的服务器上使用自己的博客。因为这些特点使得 Ghost 很容易部署到现在主流的 Bluemix,OpenShift, Heroku 等 PaaS 云平台,尽管这些流行的 PaaS 平台有许多相似之处,但是,在将 OpenShift 应用程序移植到 IBM Bluemix 时还需要解决不同平台上存在的差异问题。
IBM® Bluemix™— 2014 年初在 IBM Cloud 环境中推出的一项关键技术 — 是一个单一解决方案环境,包含用于跨多种领域快速开发和部署应用程序的即时资源。您可以使用这个基于开放标准的平台构建、运行和管理 Web、移动、大数据和智能设备应用程序。Bluemix 支持许多流行的编程语言和框架。Java™ 技术、移动后端开发支持、应用程序监视、开源技术等等,都可以通过云中的服务模型来提供。
Bluemix 的应用程式执行平台,主要是架构在 Cloud Foundry、Docker 和 OpenStack 这三种技术之上,提供多种类型的云端服务,让开发者能够取用,加速应用程式的设计。当中,也延伸出 DevOps 工具、整合功能与 API 管理机制, 它同样有其他 Cloud Foundry 解决方案上可用的 Cloud Foundry 构建包和服务,又添加了自己的一些东西。我们会将这一切细分为样板(boilerplate),其他地方又叫快速启动包或应用程序商店;运行时环境,其他地方又叫构建包;以及服务。Bluemix 包括众多服务,面向 Watson、移动、开发运营、Web 及应用程序、整合、数据管理、大数据、安全、业务分析和物联网。(下图所示)
OpenShift 是 Red Hat 公司推出的 PaaS(Platform as a Service,平台即服务)。自由和开放源码的云计算平台使开发人员能够创建、测试和运行他们的应用程序,并且可以把它们部署到云中。OpenShift 让用户可以创建、部署、管理云端应用,其云环境具体提供了磁盘空间、CPU 计算资源、内存资源、网络连接以及应用服务器。根据不同应用类型(数据库、编程语言等),OpenShift 会提供不同的文件系统布局(例如 PHP、Python、Ruby、Java)来创建不同的运行环境。此外,OpenShift 也提供了一定程度的 DNS(域别名)。
OpenShift 中包含两个基本的功能单元 Broker 和 Cartridges。
Broker 是所有应用管理活动的入口。它主要负责管理用户登录、DNS、应用状态以及应用服务编排(服务分发)。用户和 Broker 交互主要是通过 Web 管理控制台、CLI 工具、JBoss 工具或者是 REST API。
Cartridges 为应用运行提供了实际所需的功能。比如一些 cartridges 提供编程语言支持(Nodejs、Python、Java 等),另一些则提供数据库支持(PostgreSQL、MySQL、MongoDB)。(下图所示)
从上面的架构图上我们看到 Openshift 和 Bluemix 有许多相似之处,在将 Openshift 应用程序移植到 IBM Bluemix 时,还需要完成以下工作
Openshift ID ,用于登录 Openshift 并在上面运行应用程序
Bluemix ID ,用于登录 Bluemix 并在上面运行应用程序
Cloud Foundry Command Line Tool (CLI)
OpenShift Client Tools (rhc)
在 Openshift 官网 添加新应用 ,选择 Ghost 0.6.4 模板,创建自己的 Ghost 应用(下图所示)
将 Openshift 上的 Ghost 应用 git 库 Clone 到本地副本,
git clone ssh://eg 17000033@my.rhcloud.com/~/git/ghoxtmx.git/
在默认的 Ghost 安装文件中替换文件 package.json 并添加两个新文件 manifest.yml 和 config.js,以便支持将它们用于 IBM Bluemix 平台。
manifest.yml: Bluemix 应用程序清单文件。应用程序清单文件定义了一组应用程序部署设置,比如应用程序的名称、要部署的实例数量、可供实例使用的最大内存、它使用的服务,等等。
文件:manifest.yml
---
declared-services:
ghost-mysql-db:
label: cleardb
plan: spark
ghost-sendgrid:
label: sendgrid
plan: free
applications:
- memory: 512M
instances: 1
path: .
command: node index --production
env:
NODE_ENV: production
services:
- ghost-mysql-db
- ghost-sendgrid
参考 https://github.com/raidery/ghost-on-bluemix/
config.js:此文件可用于设置一些内容的环境级配置,比如您的 URL、数据库和邮件设置。对于 Bluemix 平台,数据库连接信息在服务实例化期间动态生成,并在环境变量中共享。因此,有必要创建一个配置文件来读取数据库环境变量细节。
具体文件参照 https://github.com/raidery/ghost-on-bluemix/blob/master/config.js
方法一: 使用 cloud foundry v6 cli 登录到 Bluemix,创建一个名为 ghostdbservice 的后端数据库服务:
cf create-service cleardb spark ghost-mysql-db cf create-service sendgrid free ghost-sendgrid cf push ghost --random-route
方法二: 点击下面图标直接将应用部署到 Bluemix,就这么简单,这么任性! (下图所示),如果需要修改配置可以对该 git 仓库(https://github.com/raidery/ghost-on-bluemix)进行 fork,然后修改为自己需要的配置方法。
https://bluemix.net/deploy?repository=https://github.com/raidery/ghost-on-bluemix
如果你使用 github 上的的 ghost-on-bluemix 自动部署 Ghost 应用,这种情况下你还需要把 Openshift 上 content/themes 下的所有文件 copy 到 Bluemix git 目标下,然后运行:
git add .
git commit -m 'add themes'
git push
这样就可以 themes 文件迁移到 Bluemix 云平台
应用程序在 Bluemix 上运行后,找到 http:// <您应用程序的名称>.mybluemix.net/ghost/ 并完成注册登记步骤,这样整个应用程序的迁移就完成了。
在本文中,我们使用 SQLite 数据库, 我们还没有谈到 MySQL 数据库中的数据迁移。如果您选择在 Bluemix 中创建一个同样效果的 MySQL 服务,在必要时,可以利用现有的 MySQL 数据库客户端工具来执行数据迁移
本文从开发人员的角度描述了 Openshift 和 Bluemix 之间的关键差异。本文通过轻量级博客程序 Ghost 为例,旨在说明 OpenShift 和 Bluemix 应用程序之间如何迁移及如何解决迁移过程中些差异问题。可以帮助您了解平台的差异,并为应用程序迁移提供指导。