IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Information Management  >

Zend Core for IBM - PHP 开发人员指南

PHP 与 Linux 上的 IBM Cloudscape 和 DB2 入门

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

讨论


级别: 初级

Grant Hutchison (ghutchis@ca.ibm.com), 产品经理,Cloudscape 和 IBM 数据库开发人员的教导者, IBM Toronto Lab
Stewart Nickolas (nickolas@us.ibm.com), 新兴技术, IBM

2005 年 7 月 14 日

您是否考虑在 Linux™ 服务器上设置 PHP 5,但却没有时间学习如何进行设置?通过使用行业内首次集成了 IBM® Cloudscape™ 数据库服务器的 PHP 环境,本文将指导您完成 PHP 5 环境的安装过程。与从头开始设置完整的开发和部署环境相比,使用 Zend Core for IBM 将极大地简化安装和配置过程。Zend Core for IBM 还提供了常用的 PHP 扩展和 DB2® 客户机库,使您可以连接到 DB2 Universal Database™(UDB)服务器。Zend Technologies 是 PHP 产品和服务器的主要提供者,从那里可以获得对 Zend Core 的支持,但对于所有需要为 IBM Cloudscape 和 DB2 构建 Web 应用程序的 PHP 开发人员而言,Zend Core 是免费的下载,并且可以节省时间。

Zend Core for IBM 简介

Zend Core for IBM 是一个由 IBM 和 Zend Technologies 联合设计并开发的产品。该产品包括 PHP 5 的二进制版本,可用于包括 AIX® 和 Linux 在内的不同平台。该产品还绑定了 IBM Cloudscape 数据库服务器,该服务器是 Apache Derby 数据库服务器和 DB2 UDB Version 8.2 Runtime Client 的商业发行版,可用来支持 Web 应用程序的开发和部署。Zend Core 还包括许多有用的 PHP 语言扩展,例如:

  • ibm_db2 - 用 IBM DB2 UDB 服务器和 IBM Cloudscape 的新的本机 PHP 扩展
  • simplexml - SimpleXML 扩展提供了极其简单并易于使用的工具集,以便将 XML 转换成对象
  • 其他许多扩展

关于使用文档

目前,有两种指南可用于 Zend Core for IBM。

  • Zend Core 用户指南
  • Zend Core 安装和维护指南
这两种指南的 PDF 文件都可以在 http://www.zend.com/core/network/resources.php 上获得。

Linux(x86)的安装

下载适合所使用操作系统的 Zend Core for IBM 的二进制版本十分重要。在这个例子中,我们使用的是 Linux x86 发布版本,即 Novell 的 SUSE LINUX Enterprise Server 9 发布版本。您所下载文件的名称将如下所示:ZendCoreForIBM-v1.1.1-Linux-x86.tar.gz

在尝试安装 of Zend Core for IBM 之前,应考虑一些先决条件。受支持的 Web 服务器是 Apache 1.3.x(仅以 prefork 模式进行编译)和 Apache 2.0.x(仅以 prefork 模式进行编译)。

目前,支持 Zend Core for IBM 的操作环境包括:

  • Linux(x86 和 x86_64)
  • Linux on POWER
  • IBM AIX v5.2 以及更高版本

Zend Core for IBM 包括一个用作 Web 应用程序的管理控制台。受支持的浏览器包括:

  • Microsoft® Internet Explorer 5.5 以及更高版本(当然是在 Windows™ 上)
  • Netscape 7 以及更高版本
  • Mozilla 1.7 以及更高版本
  • Firefox 1.0 以及更高版本(这也是作者所使用的浏览器)


清单 1. 用于 Linux 的安装步骤

在一个临时目录中解压产品文件
$ tar -xzvf ZendCoreForIBM-v1.1.1-Linux-x86.tar.gz
$ cd ZendCoreForIBM-v1.1.1-Linux-x86
启动图形化的 Zend Core for IBM 安装程序(作为根目录) 
$ ./install
(或者)启动基于 tty 的 Zend Core for IBM 安装程序(作为根目录)
$ ./install-tty
在接受许可项之后,将要求您指定默认的安装目录
/usr/local/Zend/Core 
(默认位置 - 可以在安装时进行修改)
为基于 Zend Core Web 的管理工具设置密码
your-password
(可选的)
设置 Zend Core Network 用户 ID 和密码。
当 Zend Core 更新程序每天进行检查更新时,您将获得选项。
(可选的)
安装 IBM DB2 UDB Runtime Client Version 8.2 
该步骤将询问下列信息
(显示默认值,但可以进行修改):
DB2 客户机实例用户名(db2inst1)
DB2 客户机实例组名(db2iadm1)
DB2 客户机实例 home 目录(/home/db2inst1)
用于 DB2 客户机实例的密码(用户定义的)
(可选的 - 但采用由作者推荐软件) 
安装 IBM Cloudscape v10(yes/no)
(可选的 - 但采用推荐的位置)
指定 Web 服务器的位置,
如果已经安装了 Apache 1.3.x 或 2.x Web 服务器,
那么会检测出该服务器。
在安装 Apache 2.0.49 的过程中,Web 服务器是从 SLES 9 安装 CD 进行安装的。
YAST 用于安装 Apache 及其相关的包(apache2-prefork、apache2-worker、
libapr0 - Apache Portable Runtime Library)。
然后,安装程序将询问使用哪种安装方法为 Web 服务器启用 PHP。
选项包括:Apache module、FastCGI、CGI 
(Apache module 是推荐的方法)。
最后,该安装程序将要求您选择一个虚拟服务器来运行 Zend Core for IBM Web 管理控制台。

验证安装

为了验证安装,要确保启动了 Web 服务器,然后用下列 URL(http://localhost/ZendCore)打开一个受支持的浏览器。当然,您可能使用您架设的虚拟服务器的主机名和端口号。。


图 1. Zend Core for IBM - 登录屏幕
Zend Core for IBM - 登录屏幕




回页首


使用 IBM Cloudscape 部署 PHP 应用程序

基于 Web 的 Zend Core for IBM 控制台提供了一个易于使用的接口,以便与 Cloudscape Network Server 进行交互。

启动和停止 Cloudscape

启动安装了 Zend Core for IBM 的 Web 服务器,并登录到 Control Center(例如:http://localhost/ZendCore)。从控制台选择 Configuration->Cloudscape 选项卡,并选择 Start 启动 Cloudscape 服务器。


图 2. Zend Core for IBM - Cloudscape Network Server Administration
Zend Core for IBM - Cloudscape Network Server Administration

您通常可以从图形化的 Web 管理控制台验证 Zend Core for IBM 中安装的组件(和版本)。请选择 Control Center->Updates 选项卡。


图 3. Zend Core for IBM - 验证组件
Zend Core for IBM - 验证组件

此外,还提供了一个 shell 脚本,用于启动和停止 Cloudscape Network Server 数据库。此 shell 脚本位于安装目录中,例如 /usr/local/Zend/Core/sbin。

  • cloudscape.rc {start|stop|restart}

在网络服务器模式中,Cloudscape 的默认端口是 1527,在连接到 URL 中使用的 Cloudscape 数据库时,这很重要。

创建 Cloudscape 数据库

创建 Cloudscape 数据库最容易的方法就是使用 Zend Core for IBM 安装目录中 /Zend/Core/sbin 目录下的 create_cloudscape_database.sh shell 脚本。

create_cloudscape_database.sh -d database name [-h host] [-n port] [-u user] [-p password]

数据库名是惟一需要的参数,其他参数的默认值如下所示:

  • -h (localhost)
  • -p (1527)
  • -u (admin)
  • -p (admin)

注意:确保在创建 Cloudscape 数据库之前,Cloudscape Network Server 正在运行中。

用于创建名为 hello 的 Cloudscape 数据库的命令如下所示:

create_cloudscape_database.sh -d hello

注意,hello 数据库物理上是在下列目录中创建的:/usr/local/Zend/Core/var/cloudscape/hello。

通过删除该目录及其所有内容,包括子目录,可以删除 Cloudscape 数据库。

Cloudscape 的众多出色功能之一就是其数据库是与平台无关的,因此,只要将数据库移到合适的目录中,就可以将现有的 Cloudscape 数据库移动到 Zend Core 环境中。

填充 Cloudscape 数据库

一旦创建了数据库,就可以使用 Cloudscape ij 脚本编制工具或者仅仅使用用来创建表和添加数据的 DB2 本机接口来填充它。

ij 是 Cloudscape 的交互式脚本编制工具。它是一个用来对 Cloudscape 数据库运行脚本的简单实用程序。ij 是一个 Java 应用程序,可以从命令窗口中启动它。ij.ksh 脚本位于安装目录中,例如 /usr/local/Zend/Core/Cloudscape_10.0/frameworks/NetworkServer/bin/ij.ksh。

#./ij.ksh
ij version 10.0
ij>

然后,您将需要通过使用下列 ij 命令,指示 ij 使用嵌入式驱动程序:

ij>driver 'org.apache.derby.jdbc.EmbeddedDriver';

接下来,可以通过发出连接命令连接数据库。

ij>connect hello;user=admin;password=admin;

ij 可以用于执行 SQL 脚本文件。接下来将创建一个名为 hello.sql 的新文件。

文件 hello.sql 的内容

>
create table customer_data (
customer_id int NOT NULL,
first_name varchar(50),
last_name varchar(50),
address varchar(50),
PRIMARY KEY (customer_id)
);

现在,将执行该脚本。

ij>run 'hello.sql';
ij>insert into customer_data values (1, 'Hello', 'World', 'World Address');
ij>insert into customer_data values (2, 'Stewart', 'Nickolas', 'United States of America');
ij>insert into customer_data values (3, 'Grant', 'Hutchison', 'Canada');

最后,退出 ij。

祝贺您,您已经创建了一个 Cloudscape 数据库,并向表中填充了一行数据。现在,您可以完成一个简单的 PHP 应用程序,从浏览器查看数据。

测试连通性

既然已经创建了 Cloudscape 数据库,并填充了一些示例数据,那么下一项任务就是使用可用的 IBM DB2、Cloudscape 和 Apache Derby 函数作为 PHP 的 ibm_db2 扩展。可以使用本机 DB2 PHP 驱动程序来连接数据库和检索数据。

有两种方法可以获得到所创建的 Cloudscape 数据库的连接:编目连接和未编目连接。
通过使用未编目的 Cloudscape 数据库连接,可以使用 db2_connect() API 来实现连接。关于编目和未编目数据库之间区别的更多信息,请参阅 Zend Core for IBM 文档(http://localhost/ZendCore/index.php?frame=documentation)。


图 4. Zend Core for IBM - 在线文档
Zend Core for IBM - 在线文档

在编写使用本机 DB2 和 Cloudscape PHP 扩展的 PHP 脚本文件之前,首先要确保在我们的 PHP 环境中激活了该扩展。Zend Core for IBM 提供了图形化的管理界面来验证语言扩展。下图表明 ibm_db2 已经安装,并且目前处于活动状态。活动语言扩展将显示为绿色指示器。


图 5. Zend Core for IBM - PHP 扩展
Zend Core for IBM - PHP 扩展

现在,应该准备开发并部署 PHP Web 应用程序了。为 Web 应用程序服务器将清单 2 中的代码复制到适当的 htdocs 目录中。


清单 2. 测试 Cloudscape PHP Web 应用程序(hello.php)

<'php
$database = 'hello';
$hostname = 'localhost';
$port= 1527;
$user = 'admin';
$password = 'admin';
$conn_string = 'DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;';
$conn_string .= 'HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;';
$conn_string .= 'UID=$user;PWD=$password;';
try
{
	$conn = db2_connect($conn_string, '', '');
	if (! $conn) {
		echo db2_conn_errormsg();
	} else {
		$result = db2_exec($conn, 'select * from customer_data');
		if ($result) {
			while ($row = db2_fetch_both($result)) {
				echo 'Hello, ' $row[1].' '.$row[2].?<BR/>';
			}
		}
		db2_close($conn);
	}
catch (Exception $ex) {
	echo $ex;
}
'>

完整的 PHP 解决方案

现在,我们有一个完整的 PHP Web 应用程序,并且已经通过使用嵌入式数据库服务器 IBM Cloudscape 的 Zend Core for IBM 产品,完全实现了这个应用程序。


图 6 使用 Cloudscape 的“Hello World”PHP 数据库应用程序
使用 Cloudscape 的 PHP 数据库应用程序




回页首


结束语

我们希望您喜欢这个对于 Zend Core for IBM 新产品的介绍。Cloudscape 通常仅用于开发 Java 应用程序,其中包括:单独的应用程序、客户机/服务器的应用程序或基于 Web 的应用程序。可以开发和部署使用诸如 Cloudscape 的 Java 数据库服务器的 PHP Web 应用程序。
如果您需要附加的可伸缩性以及更多的高级数据库服务器功能,那么可以部署相同的 PHP 应用程序(通过极其少量的修改)来使用 DB2 UDB 服务器。DB2 UDB 服务器可以在许多不同的平台上使用,其中包括 :iSeries™、z/OS®、Linux、UNIX 和 Windows。PHP 开发社区将继续发展,而语言本身也通过基于社区的革新在不断改进。如果您在部署使用 Zend Core for IBM 的应用程序时碰到任何路障,可以直接从 Zend 获得支持。

注意,在 Zend Core for IBM 和新的 Native DB2 and Cloudscape extension for PHP 中,有许多附加的特性和功能,但我们无法在这篇介绍性文章中完全介绍它们。



参考资料



作者简介

Grant Hutchison 是一位产品经理(Product Manager),负责支持包括 DB2 UDB 和 Cloudscape 的 IBM 数据库服务器的应用程序开发社区。Grant 拥有软件工程方面的研究生学位,在过去 13 年中,他在 IBM 多伦多实验室里担任过各种技术和管理角色。


作者照片

过去 5 年中,Stewart Nickolas 一直在 IBM 的 Emerging Technologies 组工作,其间先后从事过 Web 服务、基于 Eclipse 的 Web 服务工具和富 Internet 客户机技术的开发。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

将您的建议发给我们或者通过参加讨论与其他人分享您的想法.




回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款