1Web服务的概述:

      WorldWide Web简称web,是互联网组成部分之一。互联网常用的服务包括:WWWEmailFTP等。

      Web服务使用标准和规范的XML描述一系列操作的接口。该描述中包括了与服务进行交互所需要的全部细节以及消息格式、传输协议和服务位置。Web采用的基本结构是开放式的客户/服务器结构,分为服务器(web服务器)、客户接收机(Web浏览)和通信协议(HTTP)三部分。Web服务器管理各种WWW资源,按用户需求响应信息,并将所需信息通过Web浏览器传送给用户。Web服务通常可分为静态Web和动态Web服务两种。

2、工作原理

      HTTPHyperText Transfer Protocol,超文本传输协议)是分布式Web应用的核心技术协议,也是如今网络应用最多的协议。HTTP是一个基于请求/响应模式的、无状态的协议,在TCP/IP栈中属于应用层。

默认情况下,当web用户连接到Web服务器时,客户机(浏览器)通过与服务器的80端口上的监听程序建立连接联系。连接建立后,Web服务将等待浏览器的发起。所有的操作都由客户端向服务器提出。

1 HTTP响应-状态代码与状态描述

状态代码

状态描述

说明

200

OK

客户端请求成功

400

bad  request

由于客户端请求有语法错误,不能被服务器所理解

401

Unauthorized

请求未经授权。这个状态代码必须和www-authenticate报头域在一起使用

403

Forbidden

服务器收到请求,但是拒绝提供服务。服务器通常会在响应中给出不提供服务的原因

404

not  found

请求的资源不存在,例如输入的URL错误

3Web服务器软件

随着各种服务器技术的不断发展,各种web服务器软件层出不穷,当今最为流行的Web服务器软件有IISApache

2  IISApache的比较


服务

费用形式

稳定性

扩展性

IIS

windows服务器操作系统中的内置软件,需要购买正版windows操作系统

IIS服务的500内部错误,需要不时重启才能保持高效率

IIS只能在微软公司的windows操作系统下使用。对各种插件支持良好,对PerlCGIPHPjava等支持的也很完美

Apache

完全免费

虽然配置复杂,但稳定性很好,能长时间工作

不仅可以用户windows平台,还可以用于LinuxUNIXFreeBSD操作系统。对各种插件支持良好。对PerlCGIPHPjava等支持的也很完美


4Apache服务器的安装。

      RedHat Enterprise Linux 5中的Apache服务(名称为httpdHTTP守护进程)默认没有安装,用户需要进行手工安装才能使用。可以使用Red Hat Enterprise Linux 5中的自带的软件包,也可以在官方网站(http://httpd.apache.org/)中下载源码进行安装。

41、查看是否安装Apache服务器或版本

      rpm  -q  httpd

如果没有安装的话,进入Red Hat Enterprise Linux5光盘的Server目录中安装

      rpm  -ivh httpd-2.2.3-11.el5_1.3.i386.rpm

42、测试Apache服务器

安装成功后,使用命令:service  httpd start。启动成功后,在客户端使用http://IP地址访问,如果安装DNS可以使用域名测试。

Apache服务器概述及练习_Linux  Apache  Opens

Apache服务器概述及练习_Linux  Apache  Opens_02

5Apache基本配置

具体内容

功能说明

ServerRoot “/etc/httpd”

此为Apache根目录,包括配置文件、记录文件、模块文件

PidFIle   run/httpd.pid

保存着Apache父进程ID

Timeout 120

设定超时时间。如果客户端超过120秒还没连接到Server,或者Server超过120秒还没传送信息给客户端,则强制断线

KeepAlive Off

不允许客户端同时提出多个请求

MaxKeepAliveReguest  100

每次连接允许的最大请求数,数字越大效率越高。0表示不限制

KeepAliveTimeout    15

用户端的请求如果15秒没发出,则断线

MinSpareServers       5

最少有5个闲置的httpd进程来监听用户的请求,如果实际的小于5,则会增加

MaxSpareServers       20

最大闲置进程为20

StarServer   8

启动时打开的httpd进程数目

Maxclients   256

限制客户端的同时最大连接数目。如果达到这个数目,客户端就会得到“用户太多,拒绝访问“错误提示

Listen   80

设置Apache服务的监听端口。

User   apache

Group apache

设置Apache工作时使用的用户和组

主服务器配置

具体内容

功能说明

ServerAdimin  root@localhost

管理员的电子邮件地址。如果Apache出现问题,会寄信给管理员

DocumentRoot  /var/www/html”

设置Apache主服务器网页存放地址

<Directory  “/var/www/html”>

Options  Indexes   FollowSymLinks AllowOverride   None

Order  allow,deny

Allow  from all

</Directory>

设置Apache主服务器网页文件存放目录的访问权限

<IfMoudle  mod_userdir.c>

UserDir  disable

#UserDir  public_html

       <IfMoule>

设置用户是否可以在自己的目录下建立public_html目录来放置网页。如果设置为UserDir Public_html,则用户可以通过:http://服务器IP地址:端口/~用户名来访问其内容

DirectoryIndex   index.html   index.html.var

设置预设首页,默认是index.html

AccessFileName   .htaccess

设置Apache目录访问权限的控制文件

LogFormat "%h %l %u %t  \"%r\" %>s %b \"%{Referer}i\"  \"%{User-Agent}i\"" combined

LogFormat "%h %l %u %t  \"%r\" %>s %b" common

LogFormat "%{Referer}i ->  %U" referer

LogFormat "%{User-agent}i"  agent

设置记录文件存放信息的格式。自定义四种:combinedcommonrefereragent

Alias /icons/ "/var/www/icons/"


<Directory  "/var/www/icons">

     Options Indexes MultiViews

     AllowOverride None

     Order allow,deny

     Allow from all

</Directory>

定义一个图标虚拟目录,并设置访问权限

虚拟主机配置

具体内容

功能说明

#NameVirtualHost  *:80

设置虚拟主机的名字和监听端口

#<VirtualHost  *:80>

#    ServerAdmin  webmaster@dummy-host.example.com

#    DocumentRoot /www/docs/dummy-host.example.com

#    ServerName dummy-host.example.com

#    ErrorLog  logs/dummy-host.example.com-error_log

#    CustomLog  logs/dummy-host.example.com-access_log common

#</VirtualHost>

虚拟主机的所有相关信息。

6Apache 服务器控制存取方式

存取方式

针对的对象

<Directory>     </Directory>

针对目录

<Files>         </Files>

针对文件

<Location>      </Location>

针对位置

<Limit>        </Limint>

针对未知

在存取方式为:<Directory>    </ Directory>中存在有Options选项,

<Directory />

   Options FollowSymLinks

   AllowOverride all

</Directory>

6.1Options选项说明


选项

说明

All

允许所有除了MultiViewsIncludesNOEXECSymLinkOwnerMatch的动作

ExecCGI

允许执行CGI

FollowSymLinks

允许符号链接到其他目录和文件

Includes

允许SSI

IncludesNOEXEC

允许SSI,但CGI#exec#include除外

Indexes

允许显示文件列表

MulitViews

允许不同的显示方式,例如图形和语言

SymLinksOwnerMatch

允许符号链接到其他目录,但必须是拥有者

注意:Options可以是多个,但所有的必须在一行指定。

实例1 限制所有以P开头的目录不能访问

<DirectoryMatch    /P>

      Order  denyallow

      Deny   from all

</ DirectoryMatch>

7、查看Apache服务器运行状态

<Location /server-status>

  SetHandler server-status

  Order deny,allow

  Deny from all

  Allow from 192.168.2.10

</Location>

要想看到更多的信息,需要将ExtendedStatus  on前的注释去掉

Apache服务器概述及练习_Linux  Apache  Opens_03

8、小练习:

练习1Apache认证登录:

1、/var/www/html目录中新建一个网页:index.html

a)echo hello  world > index.html  

b)在该目录下创建以一个.htaccess文件

Apache服务器概述及练习_Linux  Apache  Opens_04

c).htaccess文件中进行配置

Apache服务器概述及练习_Linux  Apache  Opens_05

d)/var/www/目录下创建以一个.htpasswd文件,用来存放进行登录认证的合法用户。

e)进入该目录,然后使用命令:htpasswd  文件名用户名,然后输入两次密码。

f)如果在该目录下没有.htpasswd,可以使用httpsswd  -c   文件名用户名,然后输入两次密码

Apache服务器概述及练习_Linux  Apache  Opens_06

练习2:控制来源

允许/不允许某个主机或某段网络的主机访问

<Directory "/var/www/html">

Options Indexes FollowSymLinks

AllowOverride all

Order allow,deny                  //先匹配允许的,后匹配拒绝的

Allow from 192.168.2.10

</Directory>

练习3Apache+LinuxOpenssl证书管理

Apache服务器概述及练习_Linux  Apache  Opens_07

背景:某个公司给自己颁发了一个证书,保留自己的证书密钥,将公钥提供给用户。并且通过自己的密钥和用户直接进行认证。此时上图中的B即使一个网站服务器又是一个CA服务器。

1、制作自己的CA证书

a)Openssl  genrsa 1024  > 私钥文件   //创建一个长为1024字节的私钥文件

b)Openssl   ca  -in  私钥文件 -x509  -out  证书  //创建证书

2、给网站B签发证书

a)Openssl  genrsa 1024  > 私钥文件   //创建一个长为1024字节的私钥文件

b)Openssl  req -new  -key  私钥文件  -out  请求文件

c)Openssl   ca  -in  请求文件 -out  证书 //创建证书

步骤:

  1、进入/etc/pki/CA目录,创建目录:certs   newcerts  crl,创建文件:index.txt   serial

serial中写入01,表示证书的一个十六进制的版本号

2、CA/private目录中创建一个私钥文件cakey.pem,并产生证书cacert.pem

d)Openssl  genrsa 1024  >cakey.pem

e)Openssl  ca  -in  private/cakey.pem  -x509 -out  CA/cacert.pem

3、修改:/etc/pki/tls/openssl.cnf

Apache服务器概述及练习_Linux  Apache  Opens_08

Apache服务器概述及练习_Linux  Apache  Opens_09

4、安装distcachemod_ssl

Apache服务器概述及练习_Linux  Apache  Opens_10

5、创建网站B的证书

a)mkdir  /etc/httpd/certs    //放置网站B的证书目录

b)cd  /etc/httpd/certs

c)Openssl  genrsa 1024 > httpd.key

d)Openssl  req -new  -key  httpd.key -out  httpd.req

e)Openssl  ca -in  httpd.req   -out httpd.cert   //执行后需要输入相关信息

Apache服务器概述及练习_Linux  Apache  Opens_11

6、捆绑,将证书信息和ssl进行捆绑

/etc/httpd/conf.d/ssl.cnf

Apache服务器概述及练习_Linux  Apache  Opens_12

7、重启Apache,查看80443端口是否开启。

Apache服务器概述及练习_Linux  Apache  Opens_13

测试:

在浏览器中输入:https://网站BIP

Apache服务器概述及练习_Linux  Apache  Opens_14

Apache服务器概述及练习_Linux  Apache  Opens_15

Apache服务器概述及练习_Linux  Apache  Opens_16

最后一个感叹号是说明,你没有配置www.abc.comDNS文件。解决方法可以在在本机中搭建DNS服务,也可以修改C:\WINDOWS\system32\drivers\etc\hosts文件。

Apache服务器概述及练习_Linux  Apache  Opens_17

Apache服务器概述及练习_Linux  Apache  Opens_18