楼主: keaide

[笔记] 网络数据库教程

[复制链接]
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
11#
 楼主| 发表于 2006-5-28 20:27 | 只看该作者
你需要重新建立Linux内核,例如包括对网卡的支持。这样做时注意按照README和INSTALL中的指南去执行。你还需要将你的内核更新到最新的版本,它可以从The Linux Archives获得。

我建议你按照的每种文件都带有如何编译的指南。如果你只了解Windows环境,可能你很少用到代码编译。依照README和INSTALL文件中的指南执行即可。

首先安装(不只是解压缩un-tar.gz,而是实际安装) Perl,接着安装LinuxThreads,然后是各种Perl模块。mod_perl的安装最简单,它将Apache在编译的同时即安装,所以你无需单独编译Apache,你只需处理Apache配置文件。

接下来安装ePerl。ePerl欲求两步不同的安装程序:第一种是将其作为独立的程序安装,然后作为Perl(和mod_perl)模块。第2步需要你重新处理Apache配置文件。

我详细介绍安装过程是因为出于我“痛苦”的经历。Mysql的运行需要LinuxThreads的支持。而LinuxTheads需要Perl,Mysql也需要Perl和Data-ShowTable模块的支持。Mod_perl需要Apache 和libwww-perl,而Libwww-perl需要libnet。

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
12#
 楼主| 发表于 2006-5-28 20:28 | 只看该作者
四、设定你的期望

要将这一切组装在一起要花将近一天的时间,而这也是因为我已经重复这样的过程不下10次。第1次安装需要花1周的时间,而且那时候没有人给我任何指南。

我还不能说最坏的情况已经过去。明天我们还必须处理网络服务器的配置(configurations)和Mysql数据库引擎。最麻烦的事情便是细节的处理...

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
13#
 楼主| 发表于 2006-5-28 20:28 | 只看该作者
假设你按照我昨天的课程中的建议安装了Apache,则你需要编辑/usr/src/apache_1.2.6/conf/srm.conf将DocumentRoot设置为/web/docs。 (编辑方法很简单,你一看就知道该怎么做。你还需要相应改变/usr/src/apache_1.2.6/conf/access.conf. (也不难)。在Unix提示符下,注意一定要实际建立该DocumentRoot子目录:

     mkdir /web; mkdir /web/docs
Perl和ePerl (将是明天的主要课程内容),和mod_perl一起就可建立起世界一流的数据库支持下的网站。缩头的课程中我建议你们使用了mod_perl的自动Apache创立功能,所以现在你应该有了这样一个文件 /usr/src/apache_1.2.6/src/httpd。

接下来,你应该:

第1步:建立/usr/src/apache_1.2.6/src/httpd和/usr/sbin/httpd之间的标志性链接。
建立标志性链接的意义是:你的Linux操作系统希望httpd放置在/usr/sbin子目录中,但是以后对httpd的任何重新的设置将把它该在/usr/src/apache_1.2.6/src下。整个特点使你无需每次将httpd拷贝到/usr/sbin下。
    cd /usr/sbin

    ln -s /usr/src/apache_1.2.6/src/httpd httpd

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
14#
 楼主| 发表于 2006-5-28 20:28 | 只看该作者
第2步:检查确保拟定设置中包括了mod_perl。
现在我们做一个快速检查,键入以下指令:
     /usr/sbin/httpd -v
屏幕将显示一条短信息:

     Server version Apache/1.2.6 mod_perl/1.08.
第3步”设置你的/etc/rc.d/rc.M文件。
该文件和DOS的自动批处理文件(autoexec.bat)类似。它在你的Linux服务器启动时运行。确保使所有必要的重新都被初始化并在boot时能够正常运行。如果你的rc.M文件中没有以下设置,你应该加入:
     # Start Web server:

     if [ -x /etc/rc.d/rc.httpd ]; then

       . /etc/rc.d/rc.httpd

     fi
这些代码意思是说:Linux的启动过程将激活文件/etc/rc.d/rc.httpd的内容 (以启动你的httpd)。这时,屏幕应显示:

     echo  httpd

     /usr/sbin/httpd -f /usr/src/apache_1.2.6/conf/httpd.conf &
或许你还没有整个文件,所以你需要生成该文件

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
15#
 楼主| 发表于 2006-5-28 20:29 | 只看该作者
第4步:使Apache能够处理CGI和ePerl文件。
现在你需要进行大量细节的设置。回到/usr/src/apache_1.2.6/conf子目录,然后:
在access.conf中,确保以加重字体(bold)加入下列文字:

     <Directory /web/docs>

     Options Indexes FollowSymLinks ExecCGI

     AllowOverride None

     order allow,deny

     allow from all

     </Directory>
现在,修改srm.conf:

     DirectoryIndex index.iphtml index.cgi index.html
你还需要"uncomment" 某行,所以最后的设置为:

     AddHandler cgi-script .cgi
在httpd.conf中,, 在<VirtualHost>区域之上加入以下文字:

     Perlrequire /web/docs/startup.perl



     PerlModule Apache::ePerl

     <Files ~ ".+\.iphtml$">

         SetHandler  perl-script

         PerlHandler Apache::ePerl

     <Files>
现在你的/web/docs子目录下需要一个startup.perl文件,你可以拷贝我的:

     #!/usr/bin/perl

     use strict;

     use Apache::Registry;

     use CGI;

     use DBI ();

     1;

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
16#
 楼主| 发表于 2006-5-28 20:29 | 只看该作者
缺省情况下,除了你指定的/cgi-bin/子目录之外,Apache不会允许CGI程序在任何其他子目录中运行,如果安全性是你的首要考虑,这一条很重要。但由于现在我们谈的是网络数据库编程,所以在第4步中的设置让Apache运行CGI程序在其他子目录中也能运行。

我们还告诉Apache遇到带有特殊后缀.iphtml的文件时应该怎么做。这种文件叫做内部剖析后的HTML文件。现在Apache知道应该将这种文件转交ePerl进行进一步的处理。最后。我们告诉Apache在服务器初始化之后立即运行文件startup.perl。该文件把几个非常有用的模块载入服务器内存,重要之后的程序需要使用这些模块时就 无需重新载入它们。

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
17#
 楼主| 发表于 2006-5-28 20:29 | 只看该作者
三、MySQL和整个数据库/服务器系统

在第1天的教程中,我了解了数据库服务器常驻内存并可以回应请求、存储数据、提供管理界面确保数据只能在授权范围内被处理。现在我们将使用MySQL来实践这些概念。

 

建立好你的MySQL后,你需要进行的设置比起对Apache的设置就少多了。执行完完整的MySQL安装过程(包括运行/usr/local/src/mysql-VERSION/scripts/mysql_install_db)后,还有一项工作需要执行:将其设置为常驻内存的守护程序。这个过程和我们对httpd的做法相同。编辑/etc/rc.d/rc.M 文件使其包括以下代码:

     # Start mysql database server:

     if [ -x /etc/rc.d/rc.mysql ]; then

       . /etc/rc.d/rc.mysql

     fi
生成相应的rc.mysql文件。非常简单:

     /usr/local/bin/mysql.server start
当我使用MySQL时,我经常使用这两个程序:/usr/local/bin/mysql和/usr/local/bin/mysqlshow。你不需要键入所有这些内容,- mysql和mysqlshow就能够正常工作,因为/usr/local/bin是指令路径的环境变量的一部分。

让我们试一下:

     rdice:# mysqlshow

     +-----------+

     | Databases |

     +-----------+

     | mysql     |

     | test      |

     +-----------+

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
18#
 楼主| 发表于 2006-5-28 20:29 | 只看该作者
这就是你应该看到的(假设你已经正确安装了Perl和Data::ShowTable)。这项输出项我们显示了:MySQL在最高级别上将数据安排到数据库中。上述两个显示由MySQL自动生成,每一项都有特殊用途:mysql被MySQL自己使用来生成程序自己的内部设置,test作为某种暂存区供所有用户使用,但是它没有任何安全防护机权限设置。也就是说,不要将任何重要信息放在test暂存区内。

我们再来一遍。但是这次我们将欲求mysqlshow告诉我test数据库中的内容:

     rdice:# mysqlshow test

     Database: test

     +--------+

     | Tables |

     +--------+

     +--------+
表格(Tables)是数据库中的下一级。你可以将表格想象为电子工作表:列(columns)代表数据域,而行(rows)则代表单个的记录。

从屏幕输出中我们可以看到test数据库是空的。我们将配合使用 mysql程序和MySQL并在数据库中放入具体的内容。

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
19#
 楼主| 发表于 2006-5-28 20:30 | 只看该作者
四、MySQL, SQL, DDL,和DML

同MySQL的互动交流指的是用它的语言SQL(结构化程序语言)。SQL一般划分为两部分,第1部分叫做DDL,即数据定义语言(data definition language),你用SQL这个单元告诉MySQL如何设立表格。还有一部分是DML,即数据控制语言( data manipulation language),这个单元用于从你的表格中获取数据。

这里是计划:我将启动mysql,生成一个表格,然后在表格中输入数据,然后检查我刚输入的数据。(我用加重体显示的文字解释各项指令的含义)

     rdice:# mysql test

     Welcome to the MySQL monitor.  Commands end with ; or \g.

     Your MySQL connection id is 4 to server version:
3.21.28-gamma-log

     

     Type 'help' for help.

     

     mysql> create table albums (            这里我在使用DDL
         -> title varchar(100),              设置表格,在表格中
         -> artist varchar(100),             我将存储一些
         -> released date);                  音乐资料

     Query OK, 0 rows affected (0.07 sec)

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
20#
 楼主| 发表于 2006-5-28 20:30 | 只看该作者
现在是DML,用于告诉MyDQL在album中加入记录

     mysql> insert into albums(title,artist,released)

         -> values('Selling England By The Pound','Genesis','
1973-01-01');

     Query OK, 1 row affected (0.08 sec)

     

      这里是DML声明,它将使我看到我刚才加入的内容
      注意*在SQL语言中指“所有列”
     mysql> select * from albums;

     +------------------------------+---------+------------+

     | title                        | artist  | released   |

     +------------------------------+---------+------------+

     | Selling England By The Pound | Genesis | 1973-01-01 |

     +------------------------------+---------+------------+

     1 row in set (0.06 sec)
 

MySQL所认可的所有SQL的语法在MySQL文献中都有详细说明,你随时可以查阅。即使今天的课程也已经涉及了许多进出知识,所以你应该仔细研究一下它。

生成表格的级别语法是:

     create table 表格名 (

        列1 列1数据类型,

        列2 列2数据类型,

        ...

        列_x 列_x数据类型

     )

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表