安装 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 程序,XAMPP 应该包含以下软件包:
- expat,一个 XML 解析器库
- Salbotron,一个 XML 工具包
- libxml,一个 XML C 解析器和 GNOME 工具包
为了开发 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 页面。
点击左边导航栏中的 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。
如果一切正常,您应该会看到下面的界面:
现在让我们插入记录 "Hello World!"。点击 Insert 标签,并在 Value 文本域中输入 "Hello World!"。 Function 下拉列表在这个例子中可以保留不变。点击 Go,将 "Hello World!" 记录插入数据库中。
要确认记录已经成功插入数据库,请点击 Browse 标签。现在会显示 "hello world"。
现在后端软件已经启动并运行了,应该处理脚本部分了。我们将使用两个脚本,一个使用 Perl 编写,另外一个使用 PHP 编写。对于每个脚本来说,惟一的要求就是一个数据库连接、数据库访问权限以及在屏幕上输出检索到的行。
清单 1. 简单的数据库连接,以及在 PHP 中使用 PEAR::DB 进行检索
require_once 'DB.php'; // must be included in any script that uses PEAR::DB // it is a huge security risk to store your database connection information // in the same file as your code. We have done it here solely for the purpose // of this example. Please store your database connection information in another // file that is not in your document root directory and adequately protected. // database connection information $db_host = "localhost"; // hostname of the database server $db_user = "root"; // database user's username $db_pass = ""; // database user's password, nothing by default $db_name = "hello_world"; // the name of the database to connect to $db_type = "mysql"; // the type of database server. // your data source name string. This contains the connection // information for your database. $dsn = "$db_type://$db_user:$db_pass@$db_host/$db_name"; // creates a database connection object or a database error // object based on the success of the database connection. $db = DB::connect($dsn, TRUE); // if an error was encountered, the script exits with an error message if (DB::isError($db)) { die($db->getMessage()); } // SQL query that you wish to use to query the database $sql = "SELECT * FROM hello_table"; // query the database, store result in $result $result = $db->query($sql); // exits with an error message if the query was unsuccessful if(DB::isError($result)){ die($result->getMessage()); } // fetch rows from the database until no more rows exist. // output the "hello_column" field of each row to the screen. // once no more rows exist, exit with an error message. while($row = $result->fetchRow(DB_FETCHMODE_OBJECT)){ if(DB::isError($row)){ die($row->getMessage()); } print("<H1>$row->hello_column</H1>"); $result->free(); } $db->disconnect(); //disconnect from the database |
这两个脚本都会连接到数据库上,并检索一行数据,并将该行输出到屏幕上。PHP 的数据库访问是使用 PEAR::DB 完成的,这是一个方便的数据库抽象层,不管数据库是如何实现的,它都可以使用相同的数据库访问代码。不幸的是,XAMPP 中并没有包含一个用于 Perl 的数据库抽象层。
因此,现在我们已经做好了所需的一切。数据库已经启动并运行了,并且已经有了两个测试用的脚本。现在需要做的工作是将这些脚本放到正确的地方。让我们快速了解一下 XAMPP 是如何存放在硬盘上的,如 清单 2 所示。
我们现在感兴趣的目录是 /opt/lampp/htdocs/,也就是 Apache 的 Documents 目录。在 Web 站点的根目录中显示的任何 Web 页面和相关文件都位于这个目录中。由于我们现在能够看到 XAMPP 的 welcome 页面,因此这个目录中已经存在一些文件了。现在让我们快速了解一下这个目录的内容:(输入 ls /opt/lampp/htdocs
):
drwxr-xr-x 2 root root 4096 Jan 24 2003 apache
-rwxr-xr-x 1 nobody root 163 Oct 31 2003 index.html
drwxr-xr-x 2 nobody root 4096 Sep 12 21:54 webalizer
drwxr-xr-x 5 root root 4096 Jun 15 06:24 xampp
正如您可以看到的一样,这个目录中早已存在一些文件了。让我们在这个目录中建立一个自己的目录 hello_world ( mkdir hello_world
)来存放脚本。从现在开始,您就可以输入 localhost/hello_world
来访问 hello_world 目录中的所有文件了。现在,将这两个脚本保存到这个目录中。到此为止,所有一切都已经完成了!
要测试这个应用程序,首先切换到浏览器中,输入 localhost/hello_world
。您应该会看到下面的界面:
恭喜!您已经设置好 XAMPP 上的一个应用程序了。
XAMPP 的目标是一个开发环境。这种配置为程序员提供了一种对工具集没有任何限制的自由控制能力。作为自由的结果,缺省的 XAMPP 安装是非常不安全的。例如,有些操作几乎无需登录。
对于 0.9.5 以及更新版本的 XAMPP 来说,您可以运行下面的命令来增强安全性:
/opt/lampp/lampp security
此时会给出一些提示说明现有的不安全的地方,您可以选择是否修复这个问题。虽然这样可以使 XAMPP 安装更加安全,但是您仍然不应当在产品服务器中使用 XAMPP。清单 3 列出了安全性提示:
XAMPP: Quick security check... XAMPP: Your XAMPP pages are NOT secured by a password. XAMPP: Do you want to set a password? [yes] yes XAMPP: Password: XAMPP: Password (again): XAMPP: Password protection active. Please use 'lampp' as user name! XAMPP: MySQL is accessable via network. XAMPP: Normaly that's not recommended. Do you want me to turn it off? [yes] yes XAMPP: Turned off. XAMPP: Stopping MySQL... XAMPP: Starting MySQL... XAMPP: The MySQL/phpMyAdmin user pma has no password set!!! XAMPP: Do you want to set a password? [yes] yes XAMPP: Password: XAMPP: Password (again): XAMPP: Setting new MySQL pma password. XAMPP: Setting phpMyAdmin's pma password to the new one. XAMPP: MySQL has no root passwort set!!! XAMPP: Do you want to set a password? [yes] yes XAMPP: Write the password somewhere down to make sure you won't forget it!!! XAMPP: Password: XAMPP: Password (again): XAMPP: Setting new MySQL root password. XAMPP: Setting phpMyAdmin's root password to the new one. XAMPP: The FTP password is still set to 'lampp'. XAMPP: Do you want to change the password? [yes] yes XAMPP: Password: XAMPP: Password (again): XAMPP: Reload ProFTPD... XAMPP: Done. |
因此,假设您的 XAMPP 安装已经启动并运行了几周了,并向其中输入了很多数据,那么您就应该防范出现硬盘崩溃的风险。您需要做哪些备份工作呢?
使用 XAMPP 非常简单。将工作目录切换到 /opt/lampp ( cd /opt/lampp
) 中,并输入下面的命令:
./lampp backup
如果您已经设置了 MySQL 的 root 密码,那么在这个命令后面就要添加上 root 用户的密码。您应该会看到下面的内容:
Backing up databases...
Backing up configuration, log and htdocs files...
Calculating checksums...
Building final backup file...
Backup finished.
Take care of /opt/lampp/backup/xampp-backup-15-09-04.sh
要恢复以前的备份,请以 root 用户的身份运行下面的命令:
sh backupfilename
如果一切正常,您将看到下面的结果:
Checking integrity of files...
Restoring configuration, log and htdocs files...
Checking versions...
Installed: XAMPP 1.4.7
Backup from: XAMPP 1.4.7
Restoring MySQL databases...
Restoring MySQL user databases...
Backup complete. Have fun!
You may need to restart XAMPP to complete the restore.
重新启动 XAMPP ( cd /opt/lampp, ./lampp restart
),恢复的数据应该可用了。
安装 XAMPP 进行方便集成开发
http://www.ibm.com/developerworks/cn/linux/l-xampp/#main