Linux实用教程刘兵 吴煜煌等编著第 7章 Web应用服务本章学习目标本章主要让读者了解有关 Red Hat
Linux上如何安装和设置 Web服务器,如何使用 Web的程序设计语言 --PHP和数据库服务器 --MySQL。 通过对本章的学习,
读者应该掌握以下主要内容:
主要内容:
Apache安装,启动与配置
Apache虚拟主机的建立与站点的管理
MySQL服务器的安装与使用方法
PHP程序设计语言
PHP连接 MySQL数据库的方法
7.1 Apache服务器
7.1.1 Apache服务器简介
Apache服务器一个主要的特点是完全免费,并且完全公开其源代码,由此用户可根据自身的需要去进行相关模块的开发 。
Apache服务器另一个主要的特点是其跨平台性,其可在 UNIX,Windows,Linux等多种操作系统上运行 。 如果需要创建一个每天有数百万人访问的 Web服务器,Apache可能是最佳选择 。
7.1.2 安装和启动 Apache服务器
1,检测与安装 Apache
在 Red Hat Linux 9中自带了以下两个 Apache2.0的安装文件:
httpd,Apache 2.0
httpd-manual,Apache2.0手册检测 Linux系统中是否已经安装了 Apache服务器可以使用下面的命令:
# rpm –qa | grep httpd
7.1.2 安装和启动 Apache服务器
1,检测与安装 Apache
如果确认在 Linux系统中没有安装 Apache,可将 Red Hat
Linux 9的三张安装光盘的第一张放入光驱,然后执行下面的命令:
# rpm –ivh httpd-2.0.40-21.i386.rpm
# rpm –ivh httpd-manual-2.0.40-21.i386.rpm
2,Apache服务器的启动和停止当安装完 Apache服务器后,如果想让其提供 Web
服务还必须启动它 。 下面的命令用来查看 Apache
服务器是否启动:
# pstree | grep httpd
可以使用如下命令查看 Apache服务器的运行状态:
# service httpd status
可以使用下面的命令来启动或重新启动 Apache服务器:
# service httpd start
# service httpd restart
7.1.3 Apache服务器的配置打开 HTTP 配置工具的方法有两种:
( 1) 依次单击,主菜单 → 系统设置 → 服务器设置 → HTTP服务器,。
( 2) 在终端提示中键入 下面的命令 。
# redhat-config-httpd
7.1.3 Apache服务器的配置使用 HTTP 配置工具来配置 Apache HTTP
服务器的一般步骤如下:
( 1) 在,主,标签下配置基本设置 。
( 2) 在,虚拟主机,标签下来配置默认设置 。
( 3) 在,虚拟主机,标签下,配置默认的虚拟主机 。 如果要为多个 URL 或虚拟主机提供服务,则添加额外的虚拟主机 。
7.1.3 Apache服务器的配置
( 4) 在,服务器,标签下配置服务器设置 。
( 5) 在,调整性能,标签下配置连接设置 。
( 6) 把所有必要的文件复制到 DocumentRoot
和 cgi-bin 目录中 。
( 7) 保存设置并退出 HTTP 配置工具 。
1,基本设置
( 1)服务器名称
( 2)网主电子邮件地址
( 3)可用地址
( 4)单击,添加,按钮,用来定义接受请求的其它端口。
2,默认设置
( 1)站点配置
( 2)记录日志
( 3)环境变量
( 4)目录
3,服务器设置
4,调整性能
7.1.4 配置虚拟主机虚拟主机是在一台 Web服务器上为多个单独的域名提供 Web服务,每个域名具有特定的目录和配置,相当于将一台主机分为多台主机,虚拟主机技术对于主机数量不足,但又想为不同的用户提供独立的 Web服务的需求非常有效。
Apache有两种方式支持虚拟主机,
基于 IP的虚拟主机基于名字的虚拟主机。
1,基于名字的虚拟主机假设某一学院按照系部或者职能部门组建基于名字的虚拟主机 。 有一台 Apache服务器和一个
IP地址,211.85.203.22,假设有两个单位需要建立网站,一个为办公室网站,域名为
office.lyd.com,另一个为计算机系网站,域名为 computer.lyd.com
( 1)基于名称的虚拟主机的 DNS配置现在 想 要创 建 一个 名 为 computer.lyd.com 和
office.lyd.com 的 虚 拟 主 机,并 使 用 同 一 个
Apache服务器 www.lyd.com。 所需要进行的工作仅仅是在提交的 DNS配置文件中,为 lyd.com创建如下的别名:
office.lyd.com IN CNAME www.lyd.com
computer.lyd.com IN CNAME www.lyd.com
或者
office IN CNAME www
computer IN CNAME www
在上面的配置中,在提交的 DNS配置文件以及返回的配置文件中,www.lyd.com已经具有如下的 A记录和 PTR记录,分别为:
www IN A 211.85.203.22
1 PTR CNAME www.lyd.com
( 2)修改配置文件
NameVirtualHost 211.85.203.22
<VirtualHost 211.85.203.22 >
ServerName office.lyd.com
DocumentRoot /var/www/html/office
</VirtualHost>
<VirtualHost 211.85.203.22 >
ServerName computer.lyd.com
DocumentRoot /var/www/html/computer
</VirtualHost>
2,基于 IP的虚拟主机
( 1) 基于 IP虚拟主机的 DNS配置如果用户想要创建二个基于 IP 的虚拟主机,
office.lyd.com,computer.lyd.com。 这二个虚拟主机站点的共同域名是 lyd.com。 用户可以按照如下所示在 DNS配置文件中进行配置:
computer IN A 211.85.203.2
office IN A 211.85.203.1
另外,还需要在 DNS的配置文件中添加以下的
PTR记录:
1 IN PTR office.lyd.com
2 IN PTR computer.lyd.com
( 2)修改配置文件
<VirtualHost 211.85.203.2>
ServerAdmin computer@lyd.com
DocumentRoot /var/www/html/computer
ServerName computer.lyd.com
ErrorLog /var/www/html/computer/logs/error_log
TransferLog /var/www/html/computer/logs/access_log
</VirtualHost>
( 2)修改配置文件
<VirtualHost 211.85.203.1>
ServerAdmin office@lyd.com
DocumentRoot /var/www/html/office
ServerName office.lyd.com
ErrorLog /var/www/html/office/logs/error_log
TransferLog /var/www/html/office/logs/access_log
</VirtualHost>
7.2 数据库服务器 My SQL
1,什么是 MySQL
MySQL是一个多用户、多线程的 SQL数据库,是一个客户机 /服务器结构的应用,它由一个服务器守护程序 mysqld和很多不同的客户程序和库组成。 MySQL 主要的目标是快速、稳定和容易使用。
2,MySQL的主要特点
使用核心线程的完全多线程 。
有多种编程接口 ( API)
支持不同的平台,MySQL几乎提供了现存的所有操作系统的对应版本 。
支持多种字段类型
一个非常灵活且安全的权限和口令系统,并且允许基于主机的认证 。
7.2.2 安装和启动 MySQL
1,安装当无法确认 Red Hat Linux 9系统中是否安装了
MySQL,可以使用下面的命令来确认:
# rpm – qa | grep mysql
如果确认没有安装 MySQL,在 Red Hat Linux 9的第
2张安装光盘中提供了 MySQL的 RPM安装包,这些安装 RPM包有:
mysql-2.23.54a-11.i386.rpm
mysql-server-2.23.54a-11.i386.rpm
mysql-devel-2.23.54a-11.i386.rpm
在使用 MySQL数据库之前,必须要先启动
MySQL服务,可以通过以下两个命令来启动该服务:
( 1) 使用命令,# service mysqld start
( 2) 使用命令,# /etc/init.d/mysqld start
另外,可以通过下面的命令来检查 MySQL是否被启动 。
# service mysqld status
或者
# pstree | grep mysqld
( 11)防火墙配置:
若要重新启动 MySQL服务,可使用如下命令之一:
# service mysqld restart
# /etc/init.d/mysqld restart
如果需要停止服务,可使用下面的命令之一:
# service mysqld stop
# /etc/init.d/mysqld stop
# mysqladmin shutdown
7.2.3 MySQL基本操作
1,连接与断开 MySQL服务器当使用 mysql命令来连接 MySQL服务器时,通常需要提供一个 MySQL用户名和密码 。 如果 MySQL服务器运行在不是用户所登录的计算机上时,还将需要指定主机名 。 连接 MySQL服务器的语句格式如下:
# mysql -h host -u user -p
Enter password,********
7.2.3 MySQL基本操作
1,连接与断开 MySQL服务器
,调用 mysql命令与该服务器连接,命令格式如下:
# mysql
如果成功地连接后,用户可以在,mysql>”提示符下输入
QUIT随时断开,( 也可以键入 control-D断开 ) 。
mysql> QUIT
Bye
2,数据库的创建与删除创建该数据库可使用下面的命令:
mysql> CREATE DATABASE lbuser;
把新创建的数据库作为当前数据库,命令如下:
mysql> USE lbuser;
Database changed
当用户的数据库建立成功之后,可以使用下面的命令来查看数据库是否建成:
mysql> show databases;
当建立的数据库没有用时,可使用下面的命令来删除它:
mysql> DROP DATABASE lbuser;
3,数据表的创建与删除使用下面的命令 CREATE TABLE语句来创建数据表,
mysql> CREATE TABLE user (ID int primary
key,name VARCHAR(20) not null,
-> password VARCHAR(20),
-> sex VARCHAR(2),email VARCHAR(50),
-> birthday DATE,city VARCHAR(20);
3,数据表的创建与删除使用 SHOW TABLES命令来查看在数据库是不是真的建立了 user数据表:
mysql> SHOW TABLES;
DESCRIBE语句命令来显示 user表的字段结构:
mysql> DESCRIBE user;
4,数据记录的增加、删除与修改在 MySQL中可使用 LOAD DATA和 INSERT语句来增加数据记录 。
其中,LOAD DATA语句可允许用户一次增加多条记录。但在使用该语句之前,必须首先创建一个文本文件,user.txt”,其格式如下,
1 liubing 12345 男 lb@whpu.edu.cn 1968-04-03 武汉
2 lyd 12345 女 lyd@lbliubing.com \N 武汉可使用下面的命令来装载文本文件,user.txt”到 user
表中:
mysql> LOAD DATA LOCAL INFILE "user.txt" INTO TABLE user;
另一种向数据表中增加记录的方法是用
INSERT语句,下面的命令是使用 INSERT语句增加一条新记录:
mysql> INSERT INTO user
-> VALUES (3,?jiangli?,?12345?,?女 ’,‘ lb@whpu.edu.cn?,?1972-
10-18?,?武汉 ’ );
用户可以使用下面的命令来显示 user表中的所有数据记录信息。
mysql> SELECT * FROM user;
下面这条指令删除数据表中的所有记录:
mysql> DELETE FROM user;
删除在数据表 user中新增加的,ID=2”的数据记录,语句如下:
mysql> DELETE FROM user WHERE ID=2;
要修改 user数据表中的用户名为 liubing的用户密码,可使用下面的语句:
mysql> UPDATE user SET password = "567890" WHERE ID=1;
5,数据表记录的查询
mysql> SELECT * FROM user WHERE sex=,男,;
mysql> SELECT * FROM user WHERE sex= "男 " and ID<100;
mysql> SELECT name,birthday,sex FROM user WHERE sex= "男 "
ORDER BY birthday DESC;
mysql> SELECT * FROM user WHERE name LIKE "j%";
mysql> SELECT sex,COUNT(*) FROM user GROUP BY sex;
7.2.4 MySQL数据库的用户权限
1,用户权限概述
MySQL权限系统的主要功能是控制某个用户是否能够连接到指定的 MySQL数据库,以及控制该用户是否具有在一个数据库中进行查询( select)、
增加( insert),更新( update) 和删除( delete)
的权限。
2,建立初始的 MySQL权限为 root用户增加口令:
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('new_password')
WHERE user='root';
mysql> FLUSH PRIVILEGES;
删除匿名用户可使用下面的命令:
# mysql –u root –pcrq mysql
mysql> DELETE from user WHERE user=' ';
7.2.5 MySQL数据库的备份与恢复
1,使用 mysqldump备份和拷贝数据库
mysqldump语句的命令格式如下:
# mysqldump [OPTIONS] database [tables]
例如,把数据库 lbuser备份到 /home/lb目录 。
可使用如下命令:
# cd /var/lib/mysql
# mysqldump –u root –pcrq –opt lbuser > /home/lb/lbuser040403.sql
2,使用直接拷贝数据库的备份和拷贝方法下列命令给出如何将整个 lbuser数据库备份到 /home/lb:
# cd /var/lib/mysql
# cp -r lbuser /home/lb/ lbuser040403
7.3 Web程序设计语言( PHP)
7.3.1 PHP简介
PHP 是一种服务器内置式的 Script 语言,它的出现使得在 UNIX上快速地开发动态 Web网页成为现实,PHP代表的是超文本预处理器。
PHP3大量采用了 C,Java和 Perl语言的语法,并加入了各种 PHP的特征。它与 JavaScript等语言的一个区别就是 PHP3是在服务器端执行,客户机所看到的是其在服务器上运行的结果,
PHP支持面向对象的编程,即 PHP提供了类和对象,同时
PHP还支持构造器、提取类等。基于 Web的编程工作非常需要面向对象编程能力。
7.3.2 PHP的基础 ―― HTML语言
1,HTML 语言的结构
HTML( 超文本标记语言)是一种描述文档结构的标注语言,它使用一些约定的标记对 WWW上的各种信息进行标注。
HTML文件是标准的 ASCII文件,且其后缀名为 htm或
html的文件。 HTML文件看起来像是加入了许多被称为链接签( tag) 的特殊字符串的普通文本文件。
<HTML>
<HEAD>
<TITLE>武汉工业学院 </TITLE>
</HEAD>
<BODY bgcolor= yellow>
<P>这是一 HTML的测试文件 </P>
</BODY>
</HTML>
链接签的格式为:
<起始链接签 属性名=属性值 > 内容 <结束链接签 >
元素名也叫链接签名 。 需要注意的是:
( 1),<” 和起始链接签之间不能有空格 。
( 2) 元素名称不区分大小写 。
( 3) 一个元素可以有多个属性,属性及其属性值不区分大小写,且各个属性用空格分开 。
2,超文本链接指针
( 1)统一资源定位器 URL
在互连网上同样找一个文件,除了要知道以上内容之外,显然还需要知道该文件存放在哪个网络的哪台主机中才行。
一个 URL包括了以上所有的信息 。 它的构成如下:
protocol,// machine.name[:port]/ directory/ filename
( 2) 建立一个链接在 HTML文件中用链接指针指向一个目标 。 其基本格式为:
<a href = "… "> zzz </a>
例如:
<a href = "http://www.whpu.edu.cn/">武汉工业学院 </a>
3,表单的应用
( 1) 什么是表单
HTML提供的表单是用来将用户所输入的数据从客户端浏览器传递给 Web服务器的。
PHP程序是在服务器端工作,并且通过服务器端的编译,动态地送出 HTML文件给客户端,PHP
程序负责处理 HTML文件与运行在服务器端的程序之间的数据交换。
( 2)表单的标记
< FORM ACTION =,…,METHOD=”…,>

</FORM>
( 3) HTML中的 INPUT标记
<INPUT TYPE=“…,VALUE =“…,>
TYPE =,TEXT” 表示在表单中使用单行文本框
=,PASSWORD” 表示在表单中为用户提供密码输入框
=,RADIO” 表示在表单中使用单选按钮
=,CHECKBOX” 表示在表单中使用多选按钮
=,SUBMIT” 表示在表单中使用提交按钮
=,RESET” 表示在表单中使用重置按钮
<HTML>
2 <HEAD>
3 <TITLE>这是个测试页 </TITLE>
4 </HEAD>
5 <BODY>
6 <form action=“reg.php” method=POST>
7 请输入您的真实姓名,<input type=text name=姓名 ><br>
8 您的主页的网址,<input type=text name=网址
value=http://><br>
9 密码,<input type=password name=密码 ><br>
10 <input type=submit value="发送 "><input type=reset value="重设 ">
11 </form>
12 </BODY>
13 </HTML>
7.3.3 PHP语法简介
1,PHP的一个简单程序
<html>
<head>
<title>第一个 PHP程序 </title>
</head>
<body>
<?php
echo "hello,world\n";
>
</body>
</html>
2,程序注释
,//”符号是对单行进行注释;
,/* …… */”可对多行语句进行注释。
<?php
echo "这是第一种例子 。 \n"; // 本例是 C++ 语法的单行注释
/* 本例采用多行的注释方式 */
echo "这是第两种例子 。 \n";
echo "这是第三种例子 。 \n"; # 本例使用 UNIX Shell 语法注释
>
3,PHP程序中的变量
( 1) 变量类型
PHP 的变量类型不多,有以下五种,string,integer,
double,array 和 object 。
以下为变量的使用范例:
$universty = "武汉工业学院 "; //字符串变量
$int1 = 38; //数字型变量
$MyArray1 = array("lb","jl","lyd","lx");
//数组变量
( 2) 变量的使用
PHP程序中的变量使用范围分为全局变量与局部变量 。
可以透过 $GLOBALS[“变量名称,] 将需要的全局变量取出 。
4,PHP中的表单变量
next.php 在执行时,系统会自动产生两个变量 $username 及 $sex,可直接使用 。
<form action=next.php method=post>
姓名,<input type=text name="username"><br>
性别,<input type=text name="sex"><br>
<input type=submit>
</form>
5,PHP运算符
( 1) 算术运算加法运算 ( + ),减法运算 ( - ),乘法运算
( * ),除法运算 ( /),取余数 ( %),累加 ( ++ ) 和递减 ( ―― ) 。
( 2) 字符串运算
<?php
$a = "PHP 4";
$b = "功能强大 ";
echo $a.",".$b;
>
( 3)位运算
PHP 的位运算 (bitwise operators) 共有六个:与
( &),或 ( |),异或 ( ^),向左移位 ( <<),
向右移位 ( >>),取 1 的补 ( ~) 。
( 4)逻辑运算逻辑运算 (logical operators) 通常用来测试真假值。小于( <)、大于( >)、小于等于( <=)、大于等于
( >=)、等于 ( ==)、不等于( !=)、与( and),或
( ||)、异或 ( xor),非( !)。
6,流程控制
( 1) if条件语句
If (expr)
{
code_block1
}
else
{
code_block2
}
( 2) switch语句
switch (表达式 ) {
case 值 1,code_block1
break;
case 值 2,code_block2
break;
case 值 3,code_block3
break;

default,code_blockn
}
( 2)循环语句
① for语句
for语句用来产生一段程序循环,其语法格式如下:
for ( init; test; incre)
{
code_block
}
② while 语句
while (expr) {
code_block;
}
③ do… while 语句
do{
code_block
} while (expr) ;
<HTML>
<HEAD>
<TITLE>text</TITLE>
</HEAD>
<BODY>
<?php
for($i=1;$i<7;$i++){
echo "<font size=".$i.">hello<br>";
}
>
</BODY>
</HTML>
7.3.4 PHP连接 MySQL的方法
( 1) 与 MySQL服务器建立连接 。
( 2) 选择准备操作和使用的指定数据库 。
( 3) 发出 SQL命令 。 用一个函数向 MySQL服务器发出 SQL的查询指令语句字符串 。 发出的字符串可以是 SQL的任何 DML查询指令,包括 INSERT,DELETE等,但是要取得数据应使用
SQL查询语句 ―― SELECT。 查询函数会返回一个查询结果指针 。
( 4) 取得结果 。 上一个步骤返回的是查询的结果指针,用这个指针值就可以从查询结果中,返回特定的数据 。 通常会返回一笔记录,返回的类型为数组或对象 。
( 5)关闭链接,关闭与数据库的链接。
1,与 MySQL的连接与关闭
int mysql_connect(hostname,port,username,password)
<?php
$username='root';
$passwd=''; //MySQL初始安装时,root用户的密码为空
//连接数据库
$link_mess=mysql_connect('localhost',$username,$passwd);
//显示数据库连接的返回信息
if (!$link_mess){
echo "对不起,与 MySQL服务器连接失败 ! ";
exit();
}
else
{
echo "已经成功地与 MySQL服务器连接 ";
}
>
当要关闭 MySQL连接时,可以使用 mysql_close()函数 。 当关闭成功会返回,True”,否则返回,Flase”。 语法如下:
mysql_close(变量 )
2,数据库的选择
mysql_select_db()主要是选取所要使用的数据库,如果能成功选取数据库则返回,True”,
若找不到数据库或选取失败则返回,False”。 语法如下:
mysql_select_db(数据库名称 )
<HTML>
<HEAD>
<TITLE> 数据库的选择 </TITLE>
</HEAD>
<BODY>
<?php
$myconn=mysql_connect("localhost","root","");
if (mysql_select_db("lbuser")){
echo "lbuser数据库已被选取 ";
}
else
{
echo "lbuser数据库选取不成功 ";
}
>
</BODY>
</HTML>
3,发送 SQL命令在读取数据库中的数据表之前,先要用
Mysql_query() 函数来将 SQL 命令传给
MySQL来处理 。 该函数的语法如下:
mysql_query(SQL命令或变量,链接指针 )
读取数据表可使用 Mysql_fetch_field()函数,该函数的语法如下:
Mysql_fetch_field(数据查询结果 )
<HTML>
<HEAD>
<TITLE> 数据库的选择 </TITLE>
</HEAD>
<BODY>
<?php
Mysql_connect("localhost","root",""
);
Mysql_select_db("lbuser");
$SQL_String="Select * from user";
$Exec=Mysql_query($SQL_String);
If($field=Mysql_fetch_field($Exec))
{
echo "标题名称,$field->name <br>";
echo "所属数据表,$field->table <br>";
echo "数据类型,$field->type <br>";
echo " 字 段 最 大 长 度,$ field-
>max_length <br>";
}
else
{
echo "没有相关信息 ";
}
>
</BODY>
4,取得数据下面的示例是在数据表中读取三条记录,并把读取结果的两个字段在浏览器中显示。
<HTML>
<HEAD>
<TITLE> 从数据库中取打开的当前记录 </TITLE>
</HEAD>
<BODY>
<?php
$dbname='lbuser';
$dbtable='user';
$myconn=mysql_connect("localhost","root","");
mysql_select_db("lbuser");
$SQL_String="Select * from user order by id ";
$Exec=mysql_query($SQL_String,$myconn);
mysql_close($myconn);
for ($i=1;$i<4;$i++){
$record=mysql_fetch_row($Exec);
echo "user,";
echo $record[1];
echo "<br>";
echo "";
echo $record[2];
echo "<br>";
echo "<br>";
}
>
</BODY>
</HTML>
本章小结本章主要讲解在 Linux操作系统中如何架设与 Web应用相关的服务器及程序设计语言,主要包括,Apache服务器,数据库服务器 MySQL,Web程序设计语言 ( PHP) 。 在
Apache服务器一节中着重介绍了 Apache服务器的安装与启动方法,Apache服务器的配置方法;在数据库服务器一节中,着重介绍了 MySQL的启动与安装方法,如何建立数据库,如何新建一个数据表,如何对数据表中的记录进行添加,删除,修改,如何设置数据库的存取权限,如何对数据库进行备份;在 Web程序设计语言一节中,对 PHP的语法,与M ySQL数据库的连接方法都做了十分详细的说明 。
通过对本章的学习,读者应该熟练掌握以下 Apache服务器地安装,启动与配置方法,MySQL服务器的安装与使用方法,PH P程序设计语言,