级别: 初级 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 - 登录屏幕
使用 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
您通常可以从图形化的 Web 管理控制台验证 Zend Core for IBM 中安装的组件(和版本)。请选择 Control Center->Updates 选项卡。
图 3. 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 - 在线文档
在编写使用本机 DB2 和 Cloudscape PHP 扩展的 PHP 脚本文件之前,首先要确保在我们的 PHP 环境中激活了该扩展。Zend Core for IBM 提供了图形化的管理界面来验证语言扩展。下图表明 ibm_db2 已经安装,并且目前处于活动状态。活动语言扩展将显示为绿色指示器。
图 5. 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 数据库应用程序
结束语
我们希望您喜欢这个对于 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 客户机技术的开发。 |
对本文的评价
|