当前位置:Linux教程 - Mysql - 先做点好事,转点东东来,用PHP和MySQL构建一个数据库驱动的网站(-)

先做点好事,转点东东来,用PHP和MySQL构建一个数据库驱动的网站(-)

摘要

  在这篇文章中,我们会着手解决在构建一个数据库驱动的网站的过程中将会遇到的问题。而我们只会使用两个新的工具,PHP和MySQL。如果你的Web主机支持PHP/MySQL,那么你会省掉不少麻烦。如果不是这样,你也不用提心,我们也会学习如何在Unix和Windows下安装相应程序。

  这篇文章是提供给那些有可能学会服务器端程序开发的中高级的网页设计者的。我们会认为我们的读者熟悉HTML,所以我们在使用HTML时不会给出什么解释。另外,在有些地方我们可能还会用到少量的JavaScript,但是我们会尽量保证这即使对于未入门者也是足够简单的。

(2002-08-29 14:10:35)

--------------------------------------------------------------------------------
By Wing, 出处:Linuxaid

原著:Kevin Yank 翻译:处处
  对于今天的Web来说,内容是最重要的。当你熟练掌握了HTML,而且也学到了一些JavaScript和DHTML的小决窍后,你现在也许可能设计一个漂亮的能让人“一见钟情”的网站了。下一步的工作是向网页中添加一些真实的信息。许多站点不得不通过不断地更新来成功地吸引回头客。在传统的网站建设中,这意味着不断地更新众多的HTML文件。

  现在问题出来了,在更多的情况下,提供内容给站点的人并不是设计网页的人。内容的提供者甚至还不知道HTML。那么内容的提供者怎么把内容添加到网站中去呢?不是所有的公司都有一个全职的Webmaster的,而且,让一个Webmasters整天忙着将Word文件拷贝到HTML模板中也实在是一种浪费。

  要唯护一个文本驱动的站点实在是件很痛苦的事。许多站点(是不是也包括你的站点?)被过时的信息所困扰。因为要保证信息的正常更新,你将不得不重写数以百计的HTML文件。服务器端包含技术(SSI:HTML文件中,可以通过注释行调用的命令或指针)也许能稍微减轻一些麻烦。但是你还是得面对数以百计的HTML文件,即使你只是想对你的站点作一些基本的变动。

  解决这些头疼问题是设计一个数据库的站点。通过把你的站点的内容和设置完全分开,你可以对其中的一项进行处理,而不会对另一项发生影响。你将不再需要为每一条信息写一个HTML页面,你只需要为一类信息写一个HTML页面就足够了。你再也不需要不断地添加新的内容到你的页面中去了,你现在所要做的只是建立一个简单的信息管理系统,通过这个系统,作者可以不通过HTML就自行添加新的内容。

  在这篇文章中,我们会着手解决在构建一个数据库驱动的网站的过程中将会遇到的问题。而我们只会使用两个新的工具,PHP和MySQL。如果你的Web主机支持PHP/MySQL,那么你会省掉不少麻烦。如果不是这样,你也不用提心,我们也会学习如何在Unix和Windows下安装相应程序。

  这篇文章是提供给那些有可能学会服务器端程序开发的中高级的网页设计者的。我们会认为我们的读者熟悉HTML,所以我们在使用HTML时不会给出什么解释。另外,在有些地方我们可能还会用到少量的JavaScript,但是我们会尽量保证这即使对于未入门者也是足够简单的。

  在读完这篇文章后,你应该已经领会了如何构建一个数据库驱动的网站,你也应该基本上学会了PHP和SQL。最重要的是,你会学到如何开始构建你自己的数据库驱动的网站。

第一章:安装

前言
  首先,感谢你阅读这个教程!在下面的几个月里,我会带着你实现从客户端设计的HTML和JavaScript的世界中的超越。目前文本驱动的网站是如此的成功,而我们在这里所要学的是如果解决维护这个难题。

  在我们开始前,我们有必要先了解一下我们的工作所需要的两个工具。在第一章内,我们会学习下载并安装我们将会用到的两个软件包:PHP和MySQL。

  PHP是一个服务器端的脚本语言。你可以将其理解成“插件”,通过这个“插件”,你的Web服务器可以在接到浏览器的请求后不再仅仅发出一个文本的Web页面。安装了PHP后,你的Web服务器可以阅读一种新的类型的文件(PHP脚本),通过这种文件,服务器可以在响应浏览器的请求之前从数据库中读取实时的信息并将其加入到Web页面中去。PHP是完全免费的,你可以自由地下载和使用。

  要从一个数据库中获取信息,你首先需要拥有一个数据库,这时我们就得提到MySQL了。MySQL是一个关系型数据库管理系统(RDBMS)。它到底扮演了一个什么样的角色以及它是如果工作的,我们将在下面进行具体地讲解。基本上,它是一个软件包,这个软件包可以很好地组织和管理大量的数据。MySQL也使得我们可以很容易地通过象PHP这样的服务器端脚本语言来获取信息。MySQL的for Unix-based平台(例如Linux)的非商业应用是免费的。

  如果你足够幸运的话,你的Web主机可能已经为你安装了MySQL和PHP。如果是这种情况,有一些章节对你来说就没有作用了,你可以直接跳到如果你的Web主机提供PHP和MySQL。

  我们在本教程中所讨论的大多数内容都适用于Windows-based或者Unix-based的服务器。但是根据你使用的服务器类型的不同,安装过程会不一样下一节讲解如何在Windows-based的Web 服务器上安装。再下面的一节讲解如何在Linux(以及其他Unix-based的平台)下安装。如果你不是特别对安装过程感兴趣,你只需要选择阅读适合你的那一节。

在Windows下的安装

  你可以到http://www.mysql.com/(或者在http://www.mysql.com/mirrors.html列出的镜像站点之一)并选择Downloads for Windows MySQL related software->Downloads->Register and download shareware version of MySQL-Win32,下载完文件后,将其解压并运行其中的setup.exe。

  当你安装好之后,MySQL已经可以使用了(不包括我们不久将要执行的一些配置)。象你的Web服务一样,MySQL也是一个可以在后台运行的服务,所以它可以在任何时候响应对信息的请求。这个服务程序,你可以在你安装MySQL目录下的bin子目录下找到。如果你使用的是一个共享的版本,这个服务被称之为mysqld-shareware.exe。在执行前,将其改名为 mysqld.exe。在MS-DOS提示符下,通过如下命令开启这个服务:

C:mysqlin> mysqld


  要确保在Windows启动时就开启这个服务,你需要建立一个快捷方式,并将其加入到启动程序组中。此外,你还可以通过这个命令作为Windows NT/2000的一个服务安装:

C:mysqlin> mysqld-nt --install


  如果你在Windows NT/2000下运行共享版本有问题,你可以试试用单机模式运行这个服务:

C:mysqlin> mysqld --standalone


  下一步是安装PHP。在写这本教程的时候,PHP 4.0已经基本上成熟了。我自己就试过PHP 4.0-RC2,并没有遇到任何问题。估计最终的稳定版很快将会发布(可能到时候我们这个教程还没写完),我建议你安装最新的版本,这样当正式版出来时你将不需要做任何变动。

  PHP可以从http://www.php.net/ (或者在http://www.php.net/mirrors.php列出的镜像站点之一)免费地下载。你需要“binaries for Win32”软件包。你可以从以下地址获得一个很好的PHP 3.0 for Windows的安装指南:http://www.umesd.k12.or.us/php/win32install.html。 当PHP 4.0发布最终版时,你可能需要升级,但是4.0的安装基本上与3.0一样。你不会因为所选择的版本不同而遇到什么麻烦。

  MySQL和PHP安装好之后,你可以进入安装配置了。

在Linux下的安装

  这一节所讲述的是在RedHat Linux下安装PHP和MySQL的过程。如果你使用的是Linux的不同版本,或者是使用的是其它Unix-based的操作系统,这些步骤也是非常相似的,即使不是完全相同的。

  作为RedHat Linux的用户,你可能会对下载和安装PHP和MySQL的RPM发布感兴趣。RPM的确是优秀的,预打包的软件的安装非常容易。不幸的是,它们也会限制你选择怎么配置软件。因为这个原因,我认为使用PHP和MySQL的RPM版本所带来的麻烦要比其实际价值来得更多。

  因为有些RedHat Linux的默认配置会自动替你安装PHP,所以第一步就是从你的系统删除旧版本的PHP和MySQL。你需要以超级用户的身份登录来执行下面的命令。注意在下面的命令中,“%”表示shell的提示符,是不需要你输入的。


% rpm -e mysql
% rpm -e php



  如果这两个命令或其中一个显示程序没安装,不要担心。如果第二个命令成功执行(也就是说,不显示任何信息),那就证明的确安装了老版本的PHP,你必须完全删除它。用你所习惯的文本编辑器打开Apache的配置文件(通常是/etc/httpd/conf/httpd.conf),寻找下面的这两行内容。这两行通常是分在文件的不同地方,所以如果这两行不在一起,那实在没什么好担心的。


LoadModule php3_module modules/libphp3.so
AddModule mod_php3.c



  这两行是用来告诉Apache将PHP作为plug-in模块装入的。当你卸载了这个模块,你还需要删除这两行以保证Apache正常工作。你也可以在这两行的开头加(#)使其成为注释。

  为了确保Apache还在正常工作,你现在必须在没有PHP插件的情况下重启它:


% /etc/rc.d/init.d/httpd stop
% /etc/rc.d/init.d/httpd start



  一切安排妥当后,你可以准备下载安装MySQL和PHP了。

在Linux下安装MySQL

  MySQL for Linux的版本是免费的,你可以从http://www.mysql.com/(或http://www.mysql.com/downloads/mirrors.html中列出的镜像站点之一)下载最后的稳定版(列在下载页的“recommended”中)。你应该获取“tarball source download”的版本,其文件名是mysql-version.tar.gz。

  下载完文件后,你必须确保以超级用户的身份登录进行安装,除非你只想在你自己的home目录下安装MySQL。开始解开下载的文件并进入刚建立的目录中:


% tar xfz mysql-version.tar.gz
% cd mysql-version



  下面你需要配置MySQL的安装。除非你有绝对的把握,否则你需要指定安装的目录。我推荐使用 /usr/local/mysql:

% ./configure --prefix=/usr/local/mysql


  在对显示器和显示器配置进行过检测之后,你最终将返回到命令提示符下。现在你可以编译MySQL了:

% make


  在编译后,你会重新返回到命令提示符下。现在你可以安装你新编译的程序了:

% make install


  现在MySQL已经安装好了,但是在使用前,你还得安装它的数据库文件。在你的开始安装的目录下,输入下面命令:

% scripts/mysql_install_db


  一切都做好后,你可以删除你正在其中工作的目录了,在这个目录中仅仅包括了源程序和安装的临时文件。如果你可能还需要重新安装,你只需要重新解开mysql-version.tar.gz 文件。

  当MySQL安装完成并且可以存储数据后,剩下的工作就是在你的计算机中运行这个服务了。你可以用超级用户或者你自己的用户(如果你是将这个服务安装在你自己的home目录下),但是,最好的方法是设置一个特殊的用户,这个用户只能启动MySQL服务。这会防止有人通过MySQL服务侵占你的系统。你可以使用以下命令建立一个特殊的MySQL用户:


% /usr/sbin/groupadd mysqlgrp
% /usr/sbin/useradd -g mysqlgrp mysqlusr


  
  在默认情况下,MySQL的所有数据库信息都存储在你安装的目录的var子目录下。我们想设置这个目录只有我们的新的MySQL用户能访问。下面的这个命令能完成这个工作(我假定你将MySQL安装到/usr/local/mysql目录):


% cd /usr/local/mysql
% chown -R mysqlusr.mysqlgrp var
% chmod -R go-rwx var



  现在一切都安排好了。在MySQL目录下,输入以下命令:

% bin/safe_mysqld --user=mysqlusr &


  现在MySQL服务已经被MySQL用户开启,除非你关闭你的计算机,这个服务将一直运行下去(就象Web和FTP服务一样)。要测试这个服务是不是正常运行,输入以下命令:

% bin/mysqladmin -u root status


  现在应该会显示MySQL服务的一些简单的统计信息。如果你看到的是一个错误信息,那就是出错了。你可以试一下重新安装。

  如果你想让你的MySQL服务在你的系统启动时自动运行(就象你的Web服务那样),你需要作相应设置。在MySQL目录的share/mysql子目录下,你会发现一个叫mysql.server的脚本,将它添加到你的系统的启动事务中就行了。

  如果你已经设定了一个特殊的MySQL用户来启动MySQL服务,你需要编辑mysql.server脚本。用你熟悉的文本编辑器打开它并改变mysql_daemon_user设定,使其指向你上面创建