当前位置:Linux教程 - Linux - Linux构建网站案例

Linux构建网站案例



         作 者: 李鲲程


      网站建设已经成为当今社会的一个热门话题,形形色色的网站如雨后春笋般发展起来。我所在单位通信标准化推进中心拥有丰富的标准资源,这些资源又是企业研发的重要信息,因此我们就建立了通信标准与质量信息网(www.ptsn.cn.net ),把我们的资源在Internet网上发布,供用户查询、下载。

      系统选择

      网站建设不外乎两种方案:一种是采用微软的一系列产品,另一种是使用Linux系统以及一些第三方的网络产品,两者系统配置如下表:

      操作系统 Win NT Linux
      WWW服务器 IIS Apache
      网络数据库 MS SQL Server MySQL
      信件服务器 Exchange Sendmail
      编程语言 ASP PHP

      由于微软的网络产品技术比较成熟,最初我们选择了微软的Win NT 4.0、IIS 3.0、SQL Server 6.5、Exchange 5.5来建设网站。但是经过一段时间的试运行我们发现了一些问题,比如,对用户进行身份验证时由于用户自身的网络接入不同而造成了一部分用户必须提升为管理员权限才能下载标准全文,甚至个别用户提升为管理员权限后仍不能下载全文。另一方面,系统的稳定性、安全性也让人担忧,曾经有几次系统莫名奇妙地死机,使我们的网站长时间不能正常工作,而且我们的系统管理员利用Win NT本身的漏洞可以通过浏览器“窃取”数据库和系统的重要数据。最后我们决定改用Linux方案。

      Linux目前的版本比较多,每个版本都有其独到的地方,但我们考虑到Intel和Netscape两大公司对RedHat的大力支持,加上RedHat独有的RPM(RedHat Package Manager)软件包管理器,我们最终选择了RedHat Linux6.0(目前出到6.2版本)。

      系统分析和关键问题解决

      我们重点解决了以下几个问题:

      1.用户身份认证

      通信标准与质量信息网的标准资源只对网员开放,只有加入信息网的网员可以查询和下载标准信息,按服务项目的不同可以分为A、B、C、D、Z等几类网员。为此,我们必须对用户身份进行验证,并且分成不同的级别。经过分析研究,发现有三种方法可以解决这个问题:一种是通过程序来控制,也就是在用户访问受限资源以前,程序让用户输入用户名/口令来验证身份。这样做存在一个问题是用户只需记下受限资源的链接,下一次就可以避开身份验证直接访问受限资源。另一种是用Apache自带的mod—auth模块来实现身份验证,但实现起来手工成份太大,不方便。还有一种是与MySQL相结合的mod—auth—mysql模块,它可以与MySQL数据库结合由系统来实现身份认证。我们选择了第三种实现方法。

      2.Linux与Win 98共享资源

      考虑到在将来开发过程中要对程序做大量修改、调试,就要涉及到现有的Win 95/98操作系统与Linux交互的问题,虽然可以用FTP把程序传上去,但这样做是很繁琐的:程序员每次要把程序传到Linux上调试,修改一个小错误就可能要传好几次,很不方便。后来我们了解到Linux带有一套Samba程序,可以使Linux的共享目录让Win 95/98在“网上邻居”中访问它,这样我们只要把Linux的共享资源在Windows中映射成一个盘符就可以方便地存取了。

      3.数据保护

      考虑到在系统调试的过程中可能会需要重新安装,所以我们在进行系统分区时单独分出两个硬盘分区,用于存放网站的数据和数据库数据,这样做的好处是当系统重新安装时不会影响有用的数据,只要将相应数据所在分区映射成相应的目录即可。这样,重新安装Linux后,也不用把这些数据拷来拷去。但是必要的备份工作是必不可少的。如果系统中有双硬盘或多硬盘,可以将数据与系统分开存放。

      硬件选择

      由于Linux对系统资源的要求并不高,而且目前各品牌的服务器配置都很高,所以一般来说,任何一个品牌的服务器都可满足用户的需要。为了使系统在大量用户访问时不会太慢,笔者建议采用主频400MHz、内存128MB以上的服务器,我们的系统最终采用了HP LH3服务器,PⅢ500,256MB内存,27GB硬盘,其中有9GB热插拔硬盘。之所以采用这台服务器,是因为笔者曾对三台不同配置的机器做了比较:

      1.75MHz,16MB内存的PC机。它安装运行Linux所需的时间明显很长。这台机器不支持光驱启动,在安装时不能发挥RedHat光驱启动、自动安装的优势,而且在编译MySQL时用了两个多小时,令人心焦。

      2.HP E50服务器,400MHz,128MB内存。它安装运行Linux的速度已经相当快,从开始安装系统到完成MySQL等软件的安装只需两个小时左右,但是安装MySQL还是占用了近二十分钟。系统在运行过程中的速度令人满意,即使有多个用户同时访问网站或对数据库进行大数据量查询,也不会有太慢的感觉。

      3.HP LH3服务器,500MHz,256MB内存。它编译MySQL只需两三分钟,即使有几百兆数据在进行传输,也不会影响主页的浏览和数据库的查询。

      软件选择与安装

      虽然RedHat 6.0已带有Apache、PHP等软件,但由于它不带有MySQL数据库,而Apache、PHP、MySQL 、mod—auth—mysql的编译过程之间还存在一定的联系,因此要对上述软件的源代码进行单独编译。上述软件可以从下列站点获得: 

      Apache—1.3.6.tar.gz,从http://www.apache.org 获得;

      PHP-3.0.12.tar.gz,从http://www.php.net 获得,而且这里是PHP的“老家”;

      MySQL-3.22.27.tar.gz,从http://www.mysql.com 获得;

      mod—auth—mysql-2.20.tar.gz,从http://bourbon.netvision.net.il/mysql/mod—auth—mysql/ 获得。

      注意:以上均为源代码而非RPM包。

      选择好了软件,就要着手安装Linux系统以及相应的软件,由于讲述Linux安装和调测的资料已经很多,这里就不再详细讨论,但以下几点需要注意:

      1.由于Apache要用到PHP模块和mod—auth—mysql模块,所以在编译Apache之前要先编译这两个模块,并激活该模块,在编译Apache时加载这两个模块。

      2.在安装完MySQL后要为MySQL增加一个系统用户,让MySQL以该用户的身份运行,因为在缺省状态下MySQL是以Root身份运行,这样会使系统变得不安全。但要注意更改var目录的所有者为该用户,并有744(rwxr--r--)的权限。

      3.为使系统更安全,对于一些有安全漏洞的端口应该关闭,比如FTP的21端口,Telnet的23端口等等。即使不关闭也应对用户权限作严格管理。

      网站开发

      系统安装完毕,一切都准备就绪了,剩下的就是用各种工具来建设我们的网站了,FrontPage、PhotoShop等工具自然是少不了的,但由于我们还要编辑PHP程序和管理MySQL数据库,所以我们还用到了下面这两个工具:EditPlus,phpMyAdmin。


      EditPlus:是一个文本编辑环境,但它不但能编辑普通的文本文件,还能识别HTML文件,并将特殊记号用特殊的颜色显示出来,更好的是它还能识别PHP的函数、变量和表达式,并用相应的颜色显示出来。

      phpMyAdmin:是用PHP编写的一个用于管理MySQL数据库的软件,它可以让用户以不同的身份来访问数据库并具有相应的不同权限。对于数据库的Root用户,不但可以对数据库、表和字段进行浏览、增加、修改、删除等操作,还可以将一个表的结构或数据导入一个文本文件,生成的文本文件是以创建表或插入数据的形式显示,例如:

      create table tablenamr {......}

      insert tablename ......

      这项功能的好处在于方便了表在库之间进行复制和表中数据的备份。

      phpMyAdmin_2.0.5.tar.gz可以从http://www.phpwizard.net/phpMy Admin/获得。

      我们的网站从去年7月份运行到目前为止,已经可以为用户提供可查询标准3万多条,其中可下载全文的标准有2万多条,发展网员300多家,收入近150万元。
    (作者:李鲲程 2000年05月18日 18:58)

    发布人:netbull 来自:蓝森林