使用 Node.js 为 Bluemix 和 SoftLayer 构建一个敏捷 SaaS 框架(1)
 
- UID
- 1066743
|

使用 Node.js 为 Bluemix 和 SoftLayer 构建一个敏捷 SaaS 框架(1)
软件即服务 (SaaS) 项目常常以 3 个主要组件开头:
- 一个呈现给最终用户的基于浏览器的仪表板
- 一个解释用户命令的控制服务器
- 运行工作负载的云机器
“使用 Bluemix,只需几小时,就可以建立一个服务并试验代码。我可以向客户和团队提供一个有效的仪表板来执行快速评估。在 SoftLayer 上,我可以配备强大的工作负载机器来执行主要的工作,轻松地将它们添加到我的 SaaS 应用程序中。”
在我们团队构建 SaaS 原型时,我发现此模式反复在出现。
IBM Bluemix™ 非常适合托管 Web 或移动仪表板,而 SoftLayer 擅长管理许多多用途的计算资源。惟一缺少的就是将它们连接在一起的粘连代码 (glue code)。
本教程将分享这种粘连代码,该代码可方便地提取到一个使用 SoftLayer、Bluemix 和 Web 或移动客户端的高度灵活的 SaaS 消息框架中。无论您是在折叠蛋白质(folding protein,是蛋白质获得其功能性结构和构象的过程)这类生物方面的应用还是在构建银行方面的应用,都可以扩展该框架来集成 Bluemix、SaaS 和 SoftLayer 服务,形成任何可想到的形式。Node.js 和 Socket.io 可用于实现无缝、可扩展的消息。所有部分都使用同一种语言编写:JavaScript。而且该框架是全功能的、可原封不动的使用,只需几分钟就可以正常运行。
完成您的应用程序的前提条件- 基本熟悉 或拥有学习的意愿。本教程包含掌握 Node 的逐步操作说明。
- 基本熟悉 JavaScript,或者至少对难懂的语言拥有一定的了解。
- 一个 帐户(免费试用版就足够了)。
- 一个 SoftLayer 帐户。( 实例就足够了。)
- Cloud Foundry 。
第 1 步. 获取代码并在 Bluemix 上运行应用程序我们将立即行动,首先从最有趣的部分入手,然后很容易返回来并根据示例进行自定义。
- 向上滚动并单击获取代码按钮,转到我的 DevOps Services 项目。要获取代码副本并将其放在您的开发工作站上,可以单击概述页面上的 EDIT CODE,输入您的 DevOps Services 凭据,在左侧选择 jeffhoy | saastemplate,然后选择 File > Export Zip。
- 登录到 。
- 在 Bluemix 仪表板上,单击 CREATE AN APP(一个较大的加号)并选择 SDK for Node.js。
 - 为您的应用程序提供一个名称并挑选一个计划。
- 打开下载的源代码中的 manifest.yml 文件,更新主机和名称字段,使之与您的新 Bluemix 应用程序的名称相匹配。
- 现在您的项目已准备好上传到 Bluemix。在项目文件夹中打开一个 shell,使用 cf login 登录到 Bluemix。
- 运行 cf push projectname 将代码发送到 Bluemix,使用您在保留 Node.js 实例时输入的项目名称。 >cf push saastemplate
Using manifest file C:\framework\manifest.yml
Updating app saastemplate in org jeffhoy / space dev as jeffhoy...
OK
Using route saastemplate.mybluemix.net
Uploading saastemplate... 可以使用路由 URL 访问正在运行的应用程序,以便查看您的 SaaS 仪表板。该仪表板应类似于单击运行应用程序按钮(在本教程末尾的 “ ” 一节中)时看到的仪表板。
当然,该仪表板没有连接任何代理 (agent),所以需要访问 SoftLayer 来连接另一半。
第 2 步. 在 SoftLayer 上运行代理这一步中的操作说明已针对 CentOS/RHEL 进行了调整,但它们很容易针对其他 Linux 或非 Linux® 操作系统而更新。
找到 并登录到管理门户。选择 Account > Place an Order 来订购一个新的虚拟服务器。如果仅测试一个演示应用程序,那么该服务器可以是一个 1 个核心/1GB 镜像的最低配置,您甚至可以使用已有的服务器(在 SoftLayer 或其他某个地方)。对于在演示应用程序中运行的服务器,我选择了 2 核/1GB 每月 CentOS 6 64 位的最低配置。
注册使用
以 Internet 级别在一个全球云基础架构上进行构建。立即注册获得免费一个月的试用期。
作为一个虚拟服务器,该镜像只需几分钟即可配置好。配备完成后,可以在 SoftLayer 控制台的 Devices > Device List 上获取 SSH 访问细节。
您现在的目标是从 SoftLayer 服务器上的 source 根文件夹运行 agent.js。可以从项目源代码中的 /agent 子目录上传 agent.js。但为了简便起见,可从在 Bluemix 上运行的 Web 控制台获取 agent.js 和一个设置脚本。
最简单的方式是获取并运行 agentSetup.sh 脚本。使用以下代码获取脚本:
# wget https://saastemplate.mybluemix.net/agentSetup.sh
然后运行该脚本(将 projectname 替换为您的 Bluemix 项目的名称):
# sh agentSetup.sh projectname.mybluemix.net
该脚本安装了 Node.js 和所需的 Node 模块,并且加载了该代理来连接到 Bluemix 上的指定服务器。在命令输出的末尾处,该代理打印了一条 Client connected 日志消息:
has-binary-data@0.1.1 (isarray@0.0.1) parseuri@0.0.2 (better-assert@1.0.1) socket.io-parser@2.2.0 (isarray@0.0.1, emitter@1.0.1, json3@3.2.6) engine.io-client@1.3.1 (component-inherit@0.0.3, xmlhttprequest...) Agent running with connection to https://saastemplate.mybluemix.net Client connected, registering server: frameworkagent.softlayer.com
您可能注意到,在 Bluemix 上运行时,该代理使用了 https:// 来建立连接,而不是开发环境中使用的 http://。另请注意,如果将此应用程序部署到生产环境中,您可能希望以系统服务或屏幕 shell 的形式运行该代理,以便预防 SSH 挂起结束该代理。
现在返回到 https://projectname.mybluemix.net 上正在运行的应用程序,您将看到代理表中列出了新服务器。
您的 SaaS 框架现在已能够完全正常地运行。 |
|
|
|
|
|