转载

将 Ghost 博客系统从 OpenShift 迁移到 Bluemix

前言

Ghost 是基于 Node.js 的开源博客平台,支持您编写和发布自己的博客,为您提供了让此过程变得简单而又有趣的工具。它的设计简单而又优雅,您可以花费更少的时间建立博客,用更多时间来撰写博客。Ghost 特点就是轻 快 高效,并原生支持 Markdown 语法。无论是从架构、设计、易用性,界面简洁,专注写作,支持在线预览,在线写作,无论您是在哪里,都可以去写博客,尽情的享受写作带来的快感。

Ghost 同时支持 MySQL、MariaDB、SQLite 和 PostgreSQL。用户可以在支持 Node.js 的服务器上使用自己的博客。因为这些特点使得 Ghost 很容易部署到现在主流的 Bluemix,OpenShift, Heroku 等 PaaS 云平台,尽管这些流行的 PaaS 平台有许多相似之处,但是,在将 OpenShift 应用程序移植到 IBM Bluemix 时还需要解决不同平台上存在的差异问题。

Bluemix 介绍

IBM® Bluemix™— 2014 年初在 IBM Cloud 环境中推出的一项关键技术 — 是一个单一解决方案环境,包含用于跨多种领域快速开发和部署应用程序的即时资源。您可以使用这个基于开放标准的平台构建、运行和管理 Web、移动、大数据和智能设备应用程序。Bluemix 支持许多流行的编程语言和框架。Java™ 技术、移动后端开发支持、应用程序监视、开源技术等等,都可以通过云中的服务模型来提供。

Bluemix 与 OpenShift 架构分析

Bluemix 基本架构

Bluemix 的应用程式执行平台,主要是架构在 Cloud Foundry、Docker 和 OpenStack 这三种技术之上,提供多种类型的云端服务,让开发者能够取用,加速应用程式的设计。当中,也延伸出 DevOps 工具、整合功能与 API 管理机制, 它同样有其他 Cloud Foundry 解决方案上可用的 Cloud Foundry 构建包和服务,又添加了自己的一些东西。我们会将这一切细分为样板(boilerplate),其他地方又叫快速启动包或应用程序商店;运行时环境,其他地方又叫构建包;以及服务。Bluemix 包括众多服务,面向 Watson、移动、开发运营、Web 及应用程序、整合、数据管理、大数据、安全、业务分析和物联网。(下图所示)

将 Ghost 博客系统从 OpenShift 迁移到 Bluemix

Openshift 基本架构

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)。(下图所示)

将 Ghost 博客系统从 OpenShift 迁移到 Bluemix

将 Ghost 博客系统从 OpenShift 迁移到 Bluemix

从上面的架构图上我们看到 Openshift 和 Bluemix 有许多相似之处,在将 Openshift 应用程序移植到 IBM Bluemix 时,还需要完成以下工作

迁移您的应用程序需要做的准备工作

Openshift ID ,用于登录 Openshift 并在上面运行应用程序

Bluemix ID ,用于登录 Bluemix 并在上面运行应用程序

Cloud Foundry Command Line Tool (CLI)

OpenShift Client Tools (rhc)

开始进行迁移

步骤 1. Openshift 上安装和运行 Ghost 应用程序

在 Openshift 官网 添加新应用 ,选择 Ghost 0.6.4 模板,创建自己的 Ghost 应用(下图所示)

将 Ghost 博客系统从 OpenShift 迁移到 Bluemix

将 Ghost 博客系统从 OpenShift 迁移到 Bluemix

步骤 2. 修改应用配置以便符合 Bluemix 要求

将 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

步骤 3. 安装 Ghost.js 应用到 Bluemix 云平台

方法一: 使用 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,然后修改为自己需要的配置方法。

将 Ghost 博客系统从 OpenShift 迁移到 Bluemix

https://bluemix.net/deploy?repository=https://github.com/raidery/ghost-on-bluemix

将 Ghost 博客系统从 OpenShift 迁移到 Bluemix

步骤 4. 应迁移 themes 等文件

如果你使用 github 上的的 ghost-on-bluemix 自动部署 Ghost 应用,这种情况下你还需要把 Openshift 上 content/themes 下的所有文件 copy 到 Bluemix git 目标下,然后运行:

git add .

git commit -m 'add themes'

git push

这样就可以 themes 文件迁移到 Bluemix 云平台

步骤 5. Ghost 运行配置及注册登记

应用程序在 Bluemix 上运行后,找到 http:// <您应用程序的名称>.mybluemix.net/ghost/ 并完成注册登记步骤,这样整个应用程序的迁移就完成了。

限制

在本文中,我们使用 SQLite 数据库, 我们还没有谈到 MySQL 数据库中的数据迁移。如果您选择在 Bluemix 中创建一个同样效果的 MySQL 服务,在必要时,可以利用现有的 MySQL 数据库客户端工具来执行数据迁移

结束语

本文从开发人员的角度描述了 Openshift 和 Bluemix 之间的关键差异。本文通过轻量级博客程序 Ghost 为例,旨在说明 OpenShift 和 Bluemix 应用程序之间如何迁移及如何解决迁移过程中些差异问题。可以帮助您了解平台的差异,并为应用程序迁移提供指导。

原文  http://www.ibm.com/developerworks/cn/cloud/library/1605-ghost-openshift-bluemix/index.html?ca=drs-
正文到此结束
Loading...