IBM Development and Test Cloud 是一个公共的基础设施即服务 (IaaS),用于构建和检验应用程序。这个云平台提供对多种 Linux 和 Windows 服务器镜像的访问,这些镜像已经预先配置了 IBM 软件。可以使用 web、移动、命令行或定制的应用程序配给、配置和管理这些虚拟机。然后可以通过 SSH、HTTP 或 FreeNX 访问它们,从而安装、运行和测试自己的应用程序。
威胁项目的预定发布日期和总体质量的主要风险之一是,建立由物理服务器组成的传统开发和测试基础设施所花费的时间和成本。IBM Development and Test Cloud 可以显著降低这两个风险因素。您不需要购买计算机并安装操作系统和中间件(这很容易出错),可以通过 IBM Cloud 简便、快速且一致地实例化预先配置好的虚拟服务器,这会降低风险和成本。
除了这些好处之外,本文解释云计算为什么引起了 PHP 开发人员的兴趣,然后介绍在 IBM Cloud 上配置 PHP 测试环境所需的步骤。演示如何配给两个实例,它们模拟由数据库服务器和应用服务器组成的典型两层测试环境:
- 运行 DB2 数据服务器的 Linux 操作系统
- 安装了 DB2 客户机并运行 Zend Server(预先打包的由 GUI 驱动的适用于 web 应用程序的 PHP 发行版)的 Linux 操作系统
本文中的示例说明,与购买、配置并安装两台物理计算机相比,使用 IBM Cloud 建立拓扑会快得多。
与其他云或物理开发和测试环境相比,IBM Development and Test Cloud 可以帮助更快地发布应用程序,减少 bug,提供更大的市场。
这个系统的核心是企业 Linux 和 Windows 镜像的目录,这些镜像已经预先配置了 IBM 软件。从镜像创建的实例可以挂载持久的磁盘,可以给它分配 IP 地址,还可以使用 SSH 公共密钥身份验证访问它。
另外,可以把定制的实例的快照保存到私有的镜像目录中,这样就可以重用、重复测试和重复部署自己的配置。
可以快速地配给所有这些资源,把它们布置成适合 PHP 应用程序需要的拓扑。
IBM Development and Test Cloud 可以解决影响各类 PHP 开发人员的许多难题,包括公司和自由程序员、学生和作家、系统管理员和架构师。
在下面的几个场景中,这个云环境可以帮助实现 PHP 应用程序的质量目标。
- 检查部署环境
- 云可以帮助您记录以前执行的部署步骤。还可以使用它建立测试配置,这样就可以在发布周期中更早地执行用户接受度测试(UAT 确认系统能够满足各方认可的需求),然后再提供最终的生产托管环境。您可以准确地了解在生产云中需要配给什么,降低出现错误和不当配置的风险。例如,您可能需要评估应用程序在 PHP 的哪个版本或打包的发行版上运行得更好,或者希望检查从准备到生产的发布过程或两个 MySQL 数据库服务器之间的复制配置。
- 加快创新并鼓励试验
- 云可以帮助开发人员进行创新和对比不同的平台。开发人员可以在主代码分支之外自由地试验新概念,而不会影响稳定的配置。例如,如果要评估从一个 PHP 框架到另一个框架(比如新的 Lithium 项目)的迁移,可以在云中创建一个包含 PHP 5.3 和 MongoDB 的单独的虚拟实例,这比在现有的物理开发服务器上建立相同的配置更快,干扰更少。
- 解决性能问题和预先解决问题
- 您可能会遇到性能问题,希望快速地调整系统并测试解决方案,但是不希望对开发或准备环境做重大的更改。现在可以使用 IBM Cloud 运行这些测试。可以记录安装步骤并检查恢复计划。例如,可以使用云基础设施评估并测试多种可能的配置,这是在物理系统上难以做到的。另外,通过保存私有镜像的目录,可以快速地重新测试或确定问题与特定的配置相关。
- 改进开放源码项目
- 如果您负责维护一个开放源码的 PHP 框架,您的目标就是交付一个能够在尽可能多的平台上运行的稳定的产品。用户可能会报告在某种配置中遇到了 bug。通过使用 IBM Cloud,您可以轻松地复制用户的环境,从而查找 bug 的原因。例如,如果用户报告在 SUSE Linux Enterprise Server 的一个版本上出现了问题,但是您只有 Ubuntu 或 Fedora,那么可以快速地配给一个 SLES 实例,用它运行您的框架以核实 bug 报告。另外,可以在私有目录中维护几个企业 Linux 配置镜像并执行测试,这样就可以增加支持的平台。
- 提升技能和扩展知识
- 通过使用 IBM Cloud 环境,技术文档编写者、学生、教师、作家或行业分析师也可以受益,他们可以为新软件编写文档或用只需在有限的时间内使用的软件做试验。他们可能要完成期末项目或者面临紧迫的最后期限,但是不希望长期购买服务或从头设置完整的系统。IBM Cloud 可以满足他们的需求。
既然已经了解了 Development and Test Cloud 可以向各类 PHP 用户提供的价值,我们就在 IBM Cloud 上配置一个 PHP 开发和测试环境。
对于数据服务器,从目录中选择一个已经安装了 DB2 的 Red Hat Enterprise Linux 服务器。后面在安装 PHP 时将创建一个 web 服务器实例并连接这个服务器,所以在配给这个实例之后不需要特殊的配置。
- 登录 Development and Test 应用程序并选择 Control Panel 选项卡。单击 Add Instance。
图 1: Control Panel 上的 Add Instance 按钮
- 从目录中选择 DB2 Enterprise Developer Edition 9.7.1 64bit。
图 2: 选择一个 DB2 镜像
- 给它指定一个名称,如果需要,生成一个公共/私有密钥。我把这个实例命名为 "dW DB2 data server" 并选择我生成的 "dW" 公共密钥。在工作站上使用相应的私有密钥访问这个实例,而不是使用用户名和密码。
图 3: 配置 DB2 镜像
- 为 DB2 需要的三个新用户账号设置密码。
图 4: 配置 DB2 密码
- 检查实例的配置。
图 5: 检查实例配置
- 阅读许可协议并单击 Next。
图 6: 阅读许可协议
- 确认已经提交了实例请求。
图 7: 成功提交的实例请求
这样就建立了一个作为数据服务器使用的实例。可以监视 Control Panel,在配给并启动实例时它会显示实例的状态。在系统引导时,DB2 已经在运行了。
从相同的镜像创建另一个实例并安装 Zend Server Community Edition。这是确保已经安装了 PHP 驱动程序需要的 DB2 客户机的最简单方法。
- 登录 Development and Test 应用程序并选择 Control Panel 选项卡。单击 Add Instance。
- 从目录中选择相同的 DB2 Enterprise Developer Edition 9.7.1 64bit 镜像。
- 给它指定一个名称,如果需要,生成密钥。我把这个实例命名为 "dW Zend Web server" 并选择 "dW" 公共密钥。
- 设置 DB2 密码。
- 检查配置。
- 阅读许可协议。
- 单击 Next 并等待确认。
现在可以在 Control Panel 上监视实例请求的状态。当这个实例启动时,DB2 客户机已经安装并运行了。
配给 web 应用服务器实例之后,可以登录它并安装 Zend Server Community Edition。
下面的步骤假设您使用 Windows 执行 SSH 和 X forwarding 。如果使用不同的平台,需要安装适用于此平台的功能相当的工具。
- 在创建上面的实例时,可以选择生成公共/私有密钥对来连接服务器,而不是使用用户名和密码。需要使用 PuTTY 密钥生成器 PuTTYgen 把下载到工作站的私有密钥从 OpenSSH 格式转换为 PuTTYgen 的私有密钥格式。打开 PuTTYgen 并选择 File > Load private key。
图 8: 转换私有密钥
- 您会看到这个密钥采用 OpenSSH 格式。单击 OK。
图 9: 装载的 OpenSSH 私有密钥
- 单击 Save private key 并为转换后的文件选择新位置。单击 Yes 以确认希望保存转换后的密钥而且不设置密码。
图 10: 保存转换后的密钥
- 安装并配置 XMing。它应该会自动地启动。如果没有,单击 Xming 快捷方式。
- 配置 PuTTY 以使用 SSH 登录实例。添加在配给实例之后在 Control Panel 中看到的主机名。单击 Save,然后单击 Load。
图 11: PuTTY 配置
- 在 Connection...Data 下面的 Auto-login username 框中把用户设置为 "idcuser"。
图 12: 设置用户名
- 在 SSH...Auth 屏幕上导入私有密钥并找到前面转换的私有密钥文件。
图 13: 导入转换后的密钥
- 最后,设置 X forwarding 以便能够在 Windows 桌面上看到来自 Linux 服务器的 X Windows。在 SSH...X11 屏幕上,选中 X11 forwarding 框并在 X display location 框中输入
localhost:0。
图 14: 配置 X forwarding
- 现在,返回 Session 并单击 Save,然后单击 Open。对于 PuTTY 安全警告,单击 Yes 并接受实例主机密钥,因为这是第一次连接这个服务器。
- 禁用防火墙以便允许 X forwarding 。然后使用 xclock 简单地测试 X Windows:
清单 1: 关闭防火墙并运行 xclock$ sudo /etc/init.d/iptables stop $ xclock
图 15: 禁用 iptables 并测试 X forwarding
- 既然已经登录并设置了 GUI 安装,现在下载 Zend Server Community Edition (Zend Server CE (PHP 5.3) 5.0.3 (64 bit) (TAR.GZ) 55.95 MB)。在 Zend 产品页面 上可以找到关于 Zend Server 的更多信息。
清单 2: 下载并安装 Zend Server$ mkdir src $ cd src $ wget http://www.zend.com/download/353?start=true $ tar - xvzf ZendServer-CE-php-5.3.3-5.0.3-linux-glibc23-x86_64.tar.gz $ cd ZendServer- 5.0.3_Tarball_B3-php5.3.3-linux-glibc23-x86_64/ $ sudo su - # cd /home/idcuser/src/ZendServer-5.0.3_Tarball_B3-php5.3.3-linux-glibc23-x86_64/ # ./install.sh
等待系统完成安装。几分钟之后,应该会看到以下屏幕。
图 16: 安装 Zend Server
- 输入
exit退出根 shell 并继续 idcuser 会话,然后启动 Firefox web 浏览器。不能作为根用户启动任何窗口,因为在 PuTTY 中只为 idcuser 配置了 X forwarding 。
清单 3: 作为 idcuser 启动 Firefox# exit $ firefox https://localhost:10082/ZendServer
因为 Zend Server 用自签名的证书通过 HTTPS 运行,所以当提示您查看页面时需要添加一个例外。Firefox 启动之后,第一个页面是 End User License Agreement。阅读许可协议并单击 Next。
图 17: Zend Server EULA
- 在第二个页面上,设置控制台密码、重复输入密码并单击 Next。
- 在第三个页面上,如果希望加入 Zend Server Community Edition 邮件列表,可以提供自己的电子邮件地址。单击 Finish。
- 您会看到 Zend Server Dashboard。其中包含最常用的扩展而且已经启用了。包含 DB2 驱动程序扩展,但是需要激活它。
- 选择 Server Setup 选项卡,然后单击它下面的 Extensions 链接并向下滚动到 ibm_db2。单击 Turn On。
图 18: ibm_db2 扩展
- 在新的 PuTTY 会话中,在当前 shell 中运行 Apache web 服务器的 DB2 环境,把默认端口改为 80,然后重新启动所有 Zend Server 守护进程。
- 编辑 Apache 配置文件,把
Listen 10088改为Listen 80。
清单 4: 通过编辑 httpd.conf 更改端口$ sudo su - # vi /usr/local/zend/apache2/conf/httpd.conf
- 每次启动 Apache 时,在当前 shell 中运行 DB2 环境。这是为了给 Apache 设置寻找 PHP 驱动程序所需的 DB2 的路径。打开文件之后,在第一行后面的任何地方添加
. /home/db2inst1/sqllib/db2profile。
清单 5: 通过编辑 apachectl 在当前 shell 中运行 DB2 环境# vi /usr/local/zend/apache2/bin/apachectl
- 从命令行重新启动所有 Zend Server 进程。在 GUI 中单击 Restart PHP 是不够的。
清单 6: 重新启动 Zend Server 进程# /usr/local/zend/bin/zendctl.sh restart
- 编辑 Apache 配置文件,把
- 在现有的 Firefox 窗口中打开一个新的标签页并输入
http://localhost/。应该会看到 Zend Server Test Page。
图 19: Zend Server Test Page
- 最后,创建一个简单的 PHP 脚本,用它检查是否正确地配置了 DB2 连接。我要在 /var/www/html 目录中创建以下 PHP 脚本。它仅仅连接数据服务器以检查连接。
清单 7: 创建 PHP 脚本# vi /usr/local/zend/apache2/htdocs/db2info.php
清单 8. 连接 DB2 的 PHP 脚本<?php $username = 'db2inst1'; $password = 'passw0rd'; $database = 'sample'; $hostname = 'vhost0323.developer.ihost.com'; $port = '50001'; $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;" . "HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP" . "UID=$username;PWD=$password"; $conn_resource = db2_connect($conn_string, '', ''); if ($conn_resource) { echo 'Connection to database succeeded.'; db2_close($conn_resource); } else { echo 'Connection to database failed.<br />'; echo 'SQLSTATE: ' . db2_conn_error() . '<br />'; echo 'Message: ' . db2_conn_errormsg(). '<br />'; } ?>
- 保存此文件之后,在浏览器中装载 http://localhost/db2info.php,应该会看到以下屏幕。
图 20: 成功地从 PHP 连接 DB2
恭喜,您现在已经配置好了两个虚拟服务器,可以支持使用 PHP 和 DB2 的 web 应用程序!在以后实例化其他虚拟服务器时,可以采用相似的步骤。
在本文中,您了解了:
- 云计算和 Development and Test Cloud 可以向 PHP 开发人员提供的宝贵机会。
- 如何在 IBM Cloud 中快速地配给典型的 PHP 开发和测试环境。
有了在云中运行的 PHP 配置,现在就可以实现本文中描述的任意场景:
- 检查部署环境
- 加快创新并鼓励试验
- 解决性能问题和预先解决问题
- 改进开放源码项目
- 提升技能和扩展知识
请通过下面的参考资料学习关于云中的 PHP 开发的更多知识,然后开始使用 Smart Business Development and Test on the IBM Cloud。
学习
- 阅读 IBM Redbook:Developing PHP Applications for IBM Data Servers。
- 将 PHP 应用程序从 MySQL 移动到 DB2,第 1 部分:为您的迁移做好准备:云可以加快迁移到 IBM 软件的过程。通过这个分为四部分的文章系列了解为什么要以及如何把 PHP 应用程序迁移到 DB2。
- 阅读 IBM Redbook:Up and Running with DB2 on Linux。
- PHP.net 是面向 PHP 开发人员的主要资源。
- 查阅 “推荐 PHP 读物列表”。
- 浏览 developerWorks 上的所有 PHP 内容。
-
在 developerWorks 云开发人员资源 中,寻找应用程序和服务开发人员构建云部署项目的知识和经验,并分享自己的经验。
-
可以在 developerWorks 上的 developerWorks 中国网站 SOA and Web services 技术专区 和 行业 专区中找到与本文相互补充的更多 developerWorks 参考资料。
-
后续研究:了解如何 访问 IBM Smart Business Development and Test on the IBM Cloud。
- 加入云计算讨论组,了解和讨论云计算的最新技术、解决方案、趋势等内容。
-
在 developerWorks 中国网站 XML 技术专区 中,获取提高 XML 技能所需的资源,包括 DTD、模式和 XSLT。
获得产品和技术
-
查看可以在 IBM Smart Business Development and Test on the IBM Cloud 上使用的 产品镜像。
-
下载 PuTTY 和 PuTTYgen,本文中使用它们通过 SSH 使用公共密钥身份验证连接实例。
-
下载 Xming X Server for Windows,本文中使用它支持 X forwarding 。
-
下载并试用先进的、针对 PHP 5.3 的 Lithium 框架。
-
下载 Zend Server Community Edition 以运行本文中的示例。
-
以最适合您的方式 IBM 产品评估试用版软件:下载产品试用版,在线试用产品,在云环境下试用产品,或者在 IBM SOA 人员沙箱 中花费几个小时来学习如何高效地实现 Service Oriented Architecture。
讨论
-
阅读 developerWorks 上所有精彩的云博客。
- 加入 developerWorks 中文社区。查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户交流。