诸如 Apache Friends 中的 XAMPP 之类的开放源码软件简化了开源项目的开发,方式是通过简化在稳定和标准化环境中应用程序的编写和分发。传统情况下,AMPP -- Apache、MySQL、PHP 和 Perl -- 都是以单独产品的形式进行安装和配置。将它们集成到中间件软件中的承诺使得开源项目的开发相对于 J2EE™ 应用程序的开发来说更具竞争力,至少对于底层的应用程序来说是如此。在本文中,您将学习如何在 Mandrake Linux™ 10.0 上安装、配置和备份 XAMPP,以及如何配置和管理 XAMPP,以及如何在 XAMPP 环境中安装自己的应用程序。
J2EE(Java 2 Enterprise Edition™)的出现极大地改变了软件领域,它提供了一个集成的中间件软件,可以极大地简化编写和部署 Java™ 应用程序的任务。一时之间,开源社区因为缺少类似的集成架构而被远远地抛到了后面。
最近以来,随着在 Apache Friends 中出现 XAMPP 这种集成的开放源码软件,这种情况开始逐渐地发生变化。虽然这些工具与 J2EE 相比还非常简单,甚至是微不足道,但是不管怎样,这对于通往全面的系统集成之路来说,都迈出了重要一步。 PHP 5.0 (它使得 PHP 成为完全面向对象的)是这种趋势正在加速发展的一个良好的风向标。
本文的重点是介绍集成的开放源码软件之一:Apache Friends 中的 XAMPP。
XAMPP 简介
XAMPP 是一个功能全面的 AMPP (Apache、MySQL、PHP、Perl)软件包,这是 Linux 平台上可以使用的几种非商业 AMPP 中间件之一。采用这种紧密的集成,XAMPP 可以运行任何程序:从个人主页到功能全面的产品站点(虽然这仅仅用于开发目的;出于安全考虑,XAMPP 还不适于用在产品服务器上)。
XAMPP 实际上在以下几个方面大放光彩:
- 易于安装和设置。
- 包含很多有用的软件包,可以简化诸如生成流量报告和加速 PHP 内容之类的任务。
- 已经在 SUSE、Red Hat、Mandrake、Debian Linux 发行版以及 Windows® 和 Solaris 上进行了完整的测试。
对于本文来说,我们将在 Mandrake Linux 10.0 上安装 XAMPP。现在我们首先看看 XAMPP 中提供的缺省软件包。
基本的软件包
基本的软件包包括系统、编程和服务器软件:
- Apache,著名的 Web 服务器
- MySQL,一种杰出、免费的开源数据库
- PHP,一种编程语言(在撰写本文时版本为 4.3.8 和 5.0.1)
- Perl,一种编程语言
- ProFTPD,一个 FTP 服务器
- OpenSSL,可以支持安全套接字层
图形软件包
XAMPP 包括以下与图形有关的软件包:
- GD,“Graphics Draw”库
- libpng,官方的 PNG 参考实现库
- libjpeg,官方的 JPEG 参考实现库
- ncurses,字符图形库
数据库软件包
如果没有以下的数据库软件包,怎么还能叫集成软件呢?
- gdbm,标准的 UNIX® dbm 库的 GNU 实现
- SQLite,一个相当小的、无需任何配置的 SQL 数据库引擎
- FreeTDS,一个数据库,让 UNIX 和 Linux 程序可以访问 Microsoft® SQL 和 Sybase 数据库
XML 软件包
为了开发 XML 程序,XAMPP 应该包含以下软件包:
- expat,一个 XML 解析器库
- Salbotron,一个 XML 工具包
- libxml,一个 XML C 解析器和 GNOME 工具包
PHP 软件包
为了开发 PHP 程序,XAMPP 应该包括以下软件包:
- PEAR,PHP 库
- 一个 pdf 类,可以使用 PHP 生成动态的 PDF 文档
- TURCK MMCache,一个 PHP 性能增强器
其他软件包
最后,XAMPP 中包含了以下软件包来展示自己的强大功能:
- zlib,一个压缩库
- mod_perl,在 Apache 中嵌入了一个永久的 Perl 解释器
- gettext,一个工具集,可以帮助 GNU 软件包生成多语言的消息
- mcrypt,一个加密程序
- Ming,一个 Flash (SWF) 输出库
- Freetype2,一个软件前端引擎
- IMAP C-Client,一个邮件编程 API
现在让我们讨论一下安装 XAMPP 的问题。
安装并作为守护进程运行
要安装 XAMPP,请从 Apache Friends Web 站点上下载最新的二进制文件(请参阅 参考资料 中的链接)。使用下面的命令将其解开到 /opt 目录中:
tar xvfz xampp-linux-1.4.7.tar.gz -C /opt
就是这样!XAMPP 现在已经被安装到 /opt/lampp 目录中了。之前安装在 /opt 目录中的内容都已经被覆盖了。如果您正在运行一个旧版本的 XAMPP,并且不想再次下载整个软件包,Apache Friends 中还提供了一个升级包来下载需要的软件包。
现在所有的软件都已经安装好了,让我们启动新的守护进程。将当前的工作目录切换到 /opt/lampp (cd /opt/lampp)并输入下面的命令:
./lampp start
您应该会看到下面的结果:
Starting XAMPP for Linux 1.4.7...
XAMPP: Starting Apache with SSL (and PHP5)...
XAMPP: Starting MySQL...
XAMPP: Starting ProFTPD...
XAMPP for Linux started.
XAMPP 现在就启动并运行了。最好的验证方法是打开一个浏览器并在地址栏中输入 localhost,并按回车键。此时浏览器会被重定向到 XAMPP 的 welcome 页面。
图 1. XAMPP welcome 页面

点击左边导航栏中的 Status 链接,就可以看到必需的服务已经正确启动了。如果所有的服务都运行正常,您就会看到下面的页面:
图 2. Service status 页面

恭喜!您现在已经安装和设置好了一个完整的 AMPP 开发环境了。现在让我们安装一个简单的应用程序来展示一下如何使用这种环境。
安装一个简单的应用程序
要利用 XAMPP 的基本特性,您需要一个简单的应用程序。最好的应用程序是一个在后端使用数据库的程序;并使用一个相当简单的数据库,其中包含了一个精心设计的表。
测试数据库包含一个只有一列的表。让我们按照测试程序的(计算机)传统,设计在我们的表中存放一条记录“Hello World!”。我们将使用一个 Perl 和 一个 PHP 脚本来访问这个数据库。这两个脚本都可以访问这个数据库,从中检索这行记录,并将其输出到屏幕上。
工具
我们的数据库将使用 phpMyAdmin 来创建和管理,这是使用 PHP 编写的一个杰出的基于 Web 的 MySQL 管理工具。它有一个非常友好的用户界面,可以允许您处理各种复杂的任务,包括创建/删除/修改数据库和表,以及导出数据、管理关键字和处理 SQL 文件。phpMyAdmin 是一个杰出的工具,因为:
- 它可以帮助初学者熟悉 MySQL,而不用使用命令行接口来处理这些任务。
- 它允许高级用户更快更容易地执行简单的任务和例行的任务。
- 当您希望为某些用户授权访问数据库而不想让他们完全访问 shell 时,对于这种情况非常有用。
创建数据库
要在 phpMyAdmin 中创建一个数据库,请遵循下面的步骤:
- 转换到 XAMPP 的 start 页面 (localhost)。
- 在左边导航栏的 Tools 下面选择 phpMyAdmin。
- 在 phpMyAdmin 主页的 Create New Database 域中,输入
hello_world,并点击 Create。
现在您必须在数据库中创建一个表,并指定该表中应该包含哪些字段(字段与列类似)。让我们将自己的表称为“hello_table”,并让它只包含一个字段,其中保存记录“Hello world!”。在 Name 文本域中输入 hello_table,并在 Fields 文本域中输入 1。输入完之后,点击 Go。
现在应该执行创建数据库的最后一个步骤了:为列选择一个名字和一个数据类型定义。让我们选中“hello”并将其命名为“hello_column”;并在 Field 文本域中输入 hello_column。
由于我们要在列中存储字符串“Hello World!”,因此其类型必须是 char,长度为 12 (字符串 "Hello World!" 的长度)。缺省类型 varchar 就足够了。在 Type 后面的 Length/Values 文本域中,输入 12,表示最大长度是 12 个字符。不用关心该页面中其他域的设置,继续点击 Save。
如果一切正常,您应该会看到下面的界面:
图 3. Hello World 数据库摘要

现在让我们插入记录 "Hello World!"。点击 Insert 标签,并在 Value 文本域中输入 "Hello World!"。Function 下拉列表在这个例子中可以保留不变。点击 Go,将 "Hello World!" 记录插入数据库中。
要确认记录已经成功插入数据库,请点击 Browse 标签。现在会显示 "hello world"。
脚本
现在后端软件已经启动并运行了,应该处理脚本部分了。我们将使用两个脚本,一个使用 Perl 编写,另外一个使用 PHP 编写。对于每个脚本来说,惟一的要求就是一个数据库连接、数据库访问权限以及在屏幕上输出检索到的行。
(编辑:zhou_rm)