在云中创建 PHP 开发环境

学习如何使用 IBM Cloud 构建并测试 PHP 应用程序

本文解释什么让云计算引起了 PHP 开发人员的兴趣,详细说明如何使用 IBM Cloud 快速地建立 PHP 和 DB2 开发环境。学习如何配给 Linux 数据服务器和 web 应用服务器、转换私有密钥、通过 SSH 连接服务、使用 X forwarding、安装预先配置好的 PHP 发行版和测试 DB2 连接。

Daniel Krook, 软件工程师, IBM

Daniel Krook 是大纽约地区的 IBM/Open Group 高级认证 IT 专家。他有十多年的 web 应用程序开发经验,目前他正在使用 Java EE、DB2、REST 和移动技术为 IBM 构建云基础架构。他拥有 PHP、Java EE、BlackBerry、DB2 和 Solaris 的认证,还为 IBM developerWorks 撰写了 PHP 相关的文章,合作撰写了 IBM Redbook “Developing PHP Applications for IBM Data Servers”。


developerWorks 投稿作者

2011 年 6 月 20 日

简介

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 建立拓扑会快得多。


PHP 开发人员如何受益于 IBM Cloud

与其他云或物理开发和测试环境相比,IBM Development and Test Cloud 可以帮助更快地发布应用程序,减少 bug,提供更大的市场。

为什么不使用 EC2 上的 IBM 镜像?

在 Amazon EC2 上有几个预先配置好的 IBM 中间件镜像。也可以在那里开发应用程序,但是 Development and Test Cloud 具有以下优点:

  • 提供 IBM 和操作系统厂商支持。
  • 可以细致地控制网络和计算能力使用量。
  • 创建定制的实例镜像更简单。

这个系统的核心是企业 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 开发和测试环境。


配给 Linux 数据服务器

镜像目录

可用服务器镜像的目录经常会变动,还会定期更新 IBM 软件并相应地刷新软件镜像。如果没有在目录中看到与示例中完全一样的镜像名称,使用相似的镜像就可以。

对于数据服务器,从目录中选择一个已经安装了 DB2 的 Red Hat Enterprise Linux 服务器。后面在安装 PHP 时将创建一个 web 服务器实例并连接这个服务器,所以在配给这个实例之后不需要特殊的配置。

  1. 登录 Development and Test 应用程序并选择 Control Panel 选项卡。单击 Add Instance
    图 1: Control Panel 上的 Add Instance 按钮
    Control Panel 上的 Add Instance 按钮
  2. 从目录中选择 DB2 Enterprise Developer Edition 9.7.1 64bit
    图 2: 选择一个 DB2 镜像
    选择一个 DB2 镜像
  3. 给它指定一个名称,如果需要,生成一个公共/私有密钥。我把这个实例命名为 "dW DB2 data server" 并选择我生成的 "dW" 公共密钥。在工作站上使用相应的私有密钥访问这个实例,而不是使用用户名和密码。
    图 3: 配置 DB2 镜像
    配置 DB2 镜像
  4. 为 DB2 需要的三个新用户账号设置密码。
    图 4: 配置 DB2 密码
    配置 DB2 密码
  5. 检查实例的配置。
    图 5: 检查实例配置
    检查实例配置
  6. 阅读许可协议并单击 Next
    图 6: 阅读许可协议
    阅读许可协议
  7. 确认已经提交了实例请求。
    图 7: 成功提交的实例请求
    成功提交的实例请求

这样就建立了一个作为数据服务器使用的实例。可以监视 Control Panel,在配给并启动实例时它会显示实例的状态。在系统引导时,DB2 已经在运行了。


配给 Linux web 应用服务器

从相同的镜像创建另一个实例并安装 Zend Server Community Edition。这是确保已经安装了 PHP 驱动程序需要的 DB2 客户机的最简单方法。

  1. 登录 Development and Test 应用程序并选择 Control Panel 选项卡。单击 Add Instance
  2. 从目录中选择相同的 DB2 Enterprise Developer Edition 9.7.1 64bit 镜像。
  3. 给它指定一个名称,如果需要,生成密钥。我把这个实例命名为 "dW Zend Web server" 并选择 "dW" 公共密钥。
  4. 设置 DB2 密码。
  5. 检查配置。
  6. 阅读许可协议。
  7. 单击 Next 并等待确认。

现在可以在 Control Panel 上监视实例请求的状态。当这个实例启动时,DB2 客户机已经安装并运行了。


转换私有密钥并使用 SSH 连接服务器

配给 web 应用服务器实例之后,可以登录它并安装 Zend Server Community Edition。

提示:重用 PuTTY 会话配置

可以对未来的实例重用下面设置的 PuTTY 会话,方法是装载它、把 "Host name" 字段改为自己的新主机、指定新名称并单击 Save。

下面的步骤假设您使用 Windows 执行 SSH 和 X forwarding 。如果使用不同的平台,需要安装适用于此平台的功能相当的工具。

  1. 在创建上面的实例时,可以选择生成公共/私有密钥对来连接服务器,而不是使用用户名和密码。需要使用 PuTTY 密钥生成器 PuTTYgen 把下载到工作站的私有密钥从 OpenSSH 格式转换为 PuTTYgen 的私有密钥格式。打开 PuTTYgen 并选择 File > Load private key
    图 8: 转换私有密钥
    转换私有密钥
  2. 您会看到这个密钥采用 OpenSSH 格式。单击 OK
    图 9: 装载的 OpenSSH 私有密钥
    装载的 OpenSSH 私有密钥
  3. 单击 Save private key 并为转换后的文件选择新位置。单击 Yes 以确认希望保存转换后的密钥而且不设置密码。
    图 10: 保存转换后的密钥
    保存转换后的密钥
  4. 安装并配置 XMing。它应该会自动地启动。如果没有,单击 Xming 快捷方式。
  5. 配置 PuTTY 以使用 SSH 登录实例。添加在配给实例之后在 Control Panel 中看到的主机名。单击 Save,然后单击 Load
    图 11: PuTTY 配置
    PuTTY 配置
  6. 在 Connection...Data 下面的 Auto-login username 框中把用户设置为 "idcuser"。
    图 12: 设置用户名
    设置用户名
  7. 在 SSH...Auth 屏幕上导入私有密钥并找到前面转换的私有密钥文件。
    图 13: 导入转换后的密钥
    导入转换后的密钥
  8. 最后,设置 X forwarding 以便能够在 Windows 桌面上看到来自 Linux 服务器的 X Windows。在 SSH...X11 屏幕上,选中 X11 forwarding 框并在 X display location 框中输入 localhost:0
    图 14: 配置 X forwarding
    配置 X forwarding
  9. 现在,返回 Session 并单击 Save,然后单击 Open。对于 PuTTY 安全警告,单击 Yes 并接受实例主机密钥,因为这是第一次连接这个服务器。
  10. 禁用防火墙以便允许 X forwarding 。然后使用 xclock 简单地测试 X Windows:
    清单 1: 关闭防火墙并运行 xclock
    $ sudo /etc/init.d/iptables stop
    $ xclock
    图 15: 禁用 iptables 并测试 X forwarding
    禁用 iptables 并测试 X forwarding

安装预先配置的 PHP 发行版

  1. 既然已经登录并设置了 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
    安装 Zend Server
  2. 输入 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
    Zend Server EULA
  3. 在第二个页面上,设置控制台密码、重复输入密码并单击 Next
  4. 在第三个页面上,如果希望加入 Zend Server Community Edition 邮件列表,可以提供自己的电子邮件地址。单击 Finish
  5. 您会看到 Zend Server Dashboard。其中包含最常用的扩展而且已经启用了。包含 DB2 驱动程序扩展,但是需要激活它。
  6. 选择 Server Setup 选项卡,然后单击它下面的 Extensions 链接并向下滚动到 ibm_db2。单击 Turn On
    图 18: ibm_db2 扩展
    ibm_db2 扩展
  7. 在新的 PuTTY 会话中,在当前 shell 中运行 Apache web 服务器的 DB2 环境,把默认端口改为 80,然后重新启动所有 Zend Server 守护进程。
    1. 编辑 Apache 配置文件,把 Listen 10088 改为 Listen 80
      清单 4: 通过编辑 httpd.conf 更改端口
      $ sudo su -
      # vi /usr/local/zend/apache2/conf/httpd.conf
    2. 每次启动 Apache 时,在当前 shell 中运行 DB2 环境。这是为了给 Apache 设置寻找 PHP 驱动程序所需的 DB2 的路径。打开文件之后,在第一行后面的任何地方添加 . /home/db2inst1/sqllib/db2profile
      清单 5: 通过编辑 apachectl 在当前 shell 中运行 DB2 环境
      # vi /usr/local/zend/apache2/bin/apachectl
    3. 从命令行重新启动所有 Zend Server 进程。在 GUI 中单击 Restart PHP 是不够的。
      清单 6: 重新启动 Zend Server 进程
      # /usr/local/zend/bin/zendctl.sh restart
  8. 在现有的 Firefox 窗口中打开一个新的标签页并输入 http://localhost/。应该会看到 Zend Server Test Page。
    图 19: Zend Server Test Page
    Zend Server Test Page

测试连接

  1. 最后,创建一个简单的 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 />';
    }
    ?>
  2. 保存此文件之后,在浏览器中装载 http://localhost/db2info.php,应该会看到以下屏幕。
    图 20: 成功地从 PHP 连接 DB2
    成功地从 PHP 连接 DB2

恭喜,您现在已经配置好了两个虚拟服务器,可以支持使用 PHP 和 DB2 的 web 应用程序!在以后实例化其他虚拟服务器时,可以采用相似的步骤。


结束语

在本文中,您了解了:

  • 云计算和 Development and Test Cloud 可以向 PHP 开发人员提供的宝贵机会。
  • 如何在 IBM Cloud 中快速地配给典型的 PHP 开发和测试环境。

有了在云中运行的 PHP 配置,现在就可以实现本文中描述的任意场景:

  • 检查部署环境
  • 加快创新并鼓励试验
  • 解决性能问题和预先解决问题
  • 改进开放源码项目
  • 提升技能和扩展知识

请通过下面的参考资料学习关于云中的 PHP 开发的更多知识,然后开始使用 Smart Business Development and Test on the IBM Cloud

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Cloud computing, Linux, Information Management
ArticleID=681746
ArticleTitle=在云中创建 PHP 开发环境
publish-date=06202011