一.Web服务器的基本概念

1. Web服务的定义

Web服务是基于B/S模型,服务器端可以为客户端提供动态的,交互的超文本服务;


运行http协议和Web服务器软件且能够为客户端提供Web服务的主机称为Web服务器

3. Web服务的工作流程

⑴ 客户端通过客户程序建立与服务器的连接;

⑵ 访问中服务器的相应资源;

⑶ 断开连接

4. 常见的服务器软件

Apache

IIS

5. APACHE特点

可移植性强

支持DSO功能

支持JSP、PHP、CGI

支持MYSQL、POSTGRESQL

支持基于IP地址/域名的虚拟主机

支持OPENSSL

二.Apache 的安装

方法一: rpm 的安装

# rpm –ivh httpd-2.0.1-10.i386.rpm (2# CD)

# rpm -ivh http-devel-2.0.1-10.i386.rpm

方法二: 编译安装

# tar –xzvf httpd.2.0.tar.gz

# cd http.2.0

# ./configure –-prefix=/usr/web(注:后面可加模块名称,如:--enable-

shared=max)

# make

# make install

安装完成后产生的文件:

/etc/httpd/conf/httpd.conf (Apache 的核心配置文件)

/etc/rc.d/init.d/httpd (Apache 的启动脚本)

/usr/sbin/apachectl (Apache 的管理工具)

/etc/httpd/modules目录 (Apache模块存放目录)

/etc/httpd/conf (存放httpd的配置子文件,httpd.conf会调用该目录中的文件)

/usr/bin/htpasswd (建立http用户和设置用户口令)

.htaccess (存放目录的访问控制选项)

三.Apache 的配置


# vi /etc/httpd/conf/httpd.conf

格式如下:

[全局设置] //设置Web服务器性能参数

全局选项 ………

… … …

[主服务器的设置] //设置默认站点的相关选项

主服务器的选项 … …

… … …

[虚拟主机] //设置虚拟主机相关选项

… … …

说明:


ServerRoot “/etc/httpd”

设置Apache工作主目录

PidFile /var/run/httpd.pid

设置记录httpd守护进程进程号的文件名

ScoreBoardFile /var/run/http.scoreboard

指定httpd内部参数的文件名称(在一台机器运行多个版本的apache时才使用)

Timeout 300

定义服务器与客户端的连接超时时间

KeepAlive On/Off

设置Apache是否支持http1.1

MaxKeepAliveRequests 100

定义http1.1的一次连接中允许的最大请求数

KeepAliveTimeout 15

定义一次连接中的两次请求之间的间隔时间

MinSpareServers 5

设置httpd产生的最少空闲子进程数

MaxSpareServers 20

设置httpd产生的最大空闲子进程数

StartServers 8

设置httpd启动时产生的子进程个数

MaxClients 150

定义服务器的最大并发连接数

MaxRequestsPerChild 1000

设置每一个子进程接受的最大请求数

Listen 端口号/IP 地址:端口号

设置服务器httpd守护进程的监听端口

LoadModule 模块名称 模块文件的位置

设置服务器加载指定的模块

案例:要求修改httpd.conf,使Apache服务器达到以下要求:

支持http1.1;

设置连接间隔时间为500秒;

设置每次连接最大请求数为80;

预生成的子进程数为14;

最大客户数为200;

设置服务器只监听192.168.0.1 的80端口;

配置过程:

# vi /etc/httpd/conf/httpd.conf 修改如下:

ServerRoot “/etc/http”

PidFile /var/run/http.pid

ScoreBoardFile /var/run/http.scoreboard

Timeout 500

KeepAlive on

StartServers 14

MaxClients 200

MaxKeepAliveRequests 80

Listen 192.168.0.1:80




# vi /etc/httpd/conf/httpd.conf

User apache

设置httpd进程的启动用户

Guoup apache

设置httpd进程启动用户所属组

ServerAdmin [email protected]

设置管理员的E-mail地址

ServerName 主机名:端口号/ip地址:端口号

设置服务器名称,默认情况该选项不起作用,通常在配置虚拟服务器时,才使用,主机名必须

是一个合法的且能够使用的DNS域名

UseCanonicalName On/Off

设置Apache是否使用ServerName定义的名称作为主服务器访问名称

DocumentRoot “目录名”

  设置站点主目录



选项………

(该容器用于定义目录的相关属性)

说明:目录的操作选项有以下几种:

Options 特性名称

作用:定义目录特性

特性名称:

All 所有目录特性

     None  消除所有的目录特性

        Indexes 当目录中没有默认文档时,则列出文件列表

FollowSymLinks 允许符号连接

ExecCGI   允许执行cgi程序

AllowOverride None/FileInfo/All/AuthConfig

设置是否允许目录中的.htaccess来覆盖目录中的设置选项

None 不使用.htaccess文件

FileInfo 使用.htaccess文件中的选项覆盖容器中的文件设置选项

AuthConfig 使用.htaccess的认证选项来覆盖容器的用户认证选项

All 使用.htaccess文件中的选项来覆盖容器的所有选项

Order deny,allow/allow,deny

设置访问控制顺序

Deny from all/ip地址/网络号

     拒绝主机访问

Allow from all/ip地址/网络号

     允许主机访问



选项 …………



可以在该容器内判断Apache所支持的模块

  UserDir disable

将URL映射到系统用户的工作目录中的一个子目录,即支持个人主页,若要启用该选项,则将

httpd.conf中的UserDir disable改为UserDir public_html;

  TypesConfig /etc/mime.types

   设置web服务器支持的文件类型

  DefaultType text/plain

设置默认文件类型

  MimeMagicFile /etc/magic

设置判断mime文件类型的程序

  ErrorLog log/error_log

 设置错误日志文件的完整路径

  LogLevel worn

设置日志的级别

LogFormat “%h.%1……”

设置日志格式

CustomLog logs/access_log combined

设置自定义的日志的完整路径

ServerSignature On/Off/EMail

设置Apache在错误文档的末尾是否加上主机名和版本信息,默认为On

Alias 名称“目录名”

定义虚拟目录

ScriptAlias 名称 “cgi目录”

创建CGI脚本程序的别名

DirectoryIndex 文件名

用于定义默认文档

Redirect 旧地址 新地址

url重定向

AddType 打开方式 文件的后缀名称

设置向MIME添加新的文件类型

AddIcon 文件的路径名

添加文件图标

AddEncoding 压缩软件 压缩文件的扩展名

设置Apache使用MIME压缩类型

注: MIME是统一资源列表,实现资源映射,/etc/mime记录Apache支持多少种压缩

文件类型和完成不同类型文件的映射功能

ErrorDocument 500 “error……”

定义错误文件

BrowserMatch 浏览器名称

定义客户端程序类型

AddLanuage zh_ca .cn

添加语言

DefaultLanguage zh-cn (支持中文界面)

默认语言

AddDefaultCharset GB2312 (支持中文界面)

设置默认字符集

AddCharset GB2312

添加字符集

ProxyRequests On/Off

ProxyVia On/Off/Full/Block

是否支持代理功能

案例二:根据以下要求修改httpd.conf主服务器的任何设置:

站点主目录为 /webpage,所有的主机和用户都可以访问该目录

支持个人主页

支持中文,其默认文档为default.htm

通过apache能够访问 /www目录页面,且只允许192.168.0.1主机访问

修改的内容:

DocumentRoot “/webpage”



Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all



UserDir pub-html

DefaultlLangage zh-cn

AddDefaultCharset GB2312

DirectoryIndex default.htm

Alias /www “/www”



Option Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from 192.168.0.1

Deny from all



3.虚拟服务器

作用:将一台物理主机,作为多个WEB站点服务器

种类:基于IP地址的虚拟服务器,基于域名的虚拟服务器,动态虚拟服务器

⑴ 基于ip地址的虚拟服务器

# cp /etc/sysconfig/network-scripts/ifcfg-eth0

/etc/sysconfig/network-scripts/ifcfg-eth0:0

# vi /etc/sysconfig/network-scripts/ifcfg-eth0:0

DEVICE =eth0:0

ONBOOT =yes

BOOTPROTO =none

IPADDR =x.x.x.x

NETMASK =x.x.x.x

# vi /etc/httpd/conf/httpd.conf



DocumentRoot “目录名”



案例三: 一个基于IP地址的虚拟主机,有一台linux主机eth0的IP为192.168.0.1,且

绑定一个ip为192.168.0.2,现利用httpd.2.0,将该台主机设置两个端点的Web服务器

# vi /etc/sysconfig/network-scripts/ifcfg-eth0:0

DEVICE =eth0:0

ONBOOT =yes

BOOTPROTO =none

IPADDR =192.168.0.2

NETMASK =255.255.255.02

# vi /etc/httpd/conf/httpd.conf



DocumentRoot /web2

DirectoryIndex index.htm



⑵ 基于域名虚拟主机

Ⅰ.设置DNS服务器

修改区域,建立多条主机记录指向同一个IP 地址

Ⅱ.# vi /etc/httpd/conf/httpd.conf

主服务器选项中,修改以下选项

ServerName w1.linux.net

虚拟主机的选项

NameVirtualHost IP地址/主机名



ServerName w2.linux.net

DocumentRoot “目录名”



DirectoryIndex 文件名

案例四:

现有一台linux主机,eth0 IP为192.168.3.1,同时DNS中有两个主机指向192.168.3.1,要求

利用httpd.2.0发布两个web站点

# vi /var/named/linux.cn

添加以下记录

w1 IN A 192.168.3.1

w2 IN A 192.168.3.1

# vi /etc/httpd/conf/httpd.conf

主服务器的设置:

ServerName w1.linux.cn

虚拟主机的设置

NameVirtualHost 192.168.3.1



ServerName w2.linux.cn

DocumentRoot “目录名”

DirectoryIndex 文件名





四、apache其它功能的设置

1. 用户认证

(1)定义

指客户机在访问Web服务器中的某个页面时必须提供一个通过服务器的身分验证

(2)认证的类型

基本类型

摘要类型

(3)认证方法

基于文本的认证

基于mysql认证

(4)具体配置

Ⅰ.首先在/etc/httpd/conf/httpd.conf中对要设置用户认证的资源进行配置,一般

容器中,用户认证的选项有:

AuthType Basic/digset

设置将被用于该资源的认证类型

AuthName “字符串”

设置该资源属于哪一个域,所设置的字符串会在用户Web浏览器的认证对话框中出现;

AuthUserFile “文件路径”

指定用户文件存放路径

AuthGroupFile “文件路径”

指定组文件存放路径

Require User 用户名

指定有效用户,该用户必须在用户文件中;

Require Group 组名

指定有效组,该组必须在组文件中;

Require Valid-user

用户文件中所有用户都为有效用户,该选项最为常用;

Ⅱ.生成用户文件

# htpasswd –c /passwords wangkai

(5) 案例:

要求:实现对/var/www/html/pub 目录进行身份认证,且只允许u1访问;

配置过程:

方法一:

Ⅰ.vi /etc/httpd/conf/httpd.conf 添加如下内容:

DocumentRoot /var/www/html/pub



Options Indexes FollowSymLinks

AllowOverride None

AuthType Basic

AuthName “Please enter username:”

AuthUserFile “/passwords”

Require User u1

Order Allow,Deny

Allow from all



Ⅱ. # htpasswd -c /passwords u1

Ⅲ. # chown apache /passwords

方法二:

Ⅰ.# vi /etc/httpd/conf/httpd.conf



Option Indexes FollowSymLinks

AllowOverride Authconfig

Order Allow,deny

Allow from all



Ⅱ.# vi /var/www/html/pub/.htaccess

AuthType Basic

AuthName “Please enter username:”

AuthUserFile “/passwords”

Require User u1

Ⅲ. # htpasswd –c /passwords u1

注:.htaccess文件放在相应目录下

2. 个人主页

⑴ 定义

web服务器中每个用户的主目录中页面,可以通过apache自动发布出去。

⑵ 设置选项

UserDir public-html(系统默认个人主页存在用户主目录的子目录可修改)

# vi /etc/httpd/conf/httpd.conf

#UserDir public_html
#
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
#  
#    Order allow,deny
#    Allow from all
#  

#  
#    Order deny,allow
#    Deny from all
#  

#

DirectoryIndex index.html index.html.var

在/etc/httpd/conf/httpd.conf中找到上述被屏蔽的选项,将#去除,使个人主页功能生

效,然后在系统中添加用户,在该用户的主目录下建立目录public_html(系统默认),

注:

(1) 实现个人主页的用户必须是系统用户,这就存在安全隐患;

(2) 用户访问Apache服务器时在浏览器中输入http://域名或IP地址/~用户名;即可打开放

在该用户主目录下public_html(系统默认,可修改)子目录中的主页文件;

案例:

配置要求: 在Apache服务器www.xh.edu上为用户user1,user2开辟个人空间, 允许

user1,user2设计个人主页,同时Apache对这两个用户进行认证;

配置思路:要达到上述要求,必须配置DNS服务器,(本例中我们修改客户机

的/etc/hosts文件)Apache服务器和FTP服务器

配置过程:

(1)建立用户

# useradd user1

# useradd user2

# passwd user1

# passwd user2

(2)修改客户机的/etc/hosts文件

# vi /etc/hosts 添加

192.168.0.1 www.xh.edu

(3)配置FTP服务器

# rpm -ivh vsftpd-1.1.3-8.i386.rpm (3# CD)

# cp /etc/vsftpd/vsftpd.conf /backup/

# vi /etc/vsftpd/vsftpd.conf

修改如下:

anonymous_enable =NO

local_enable =YES

guest_enable =NO

write_enable =YES

chroot_local_user =YES

userlist_enable =YES

userlist_deny =NO

listen =YES

# vi /etc/vsftpd.user_list( 将该文件中的用户名全部屏蔽,在文件尾部添加



user1

user2

   (4)配置Apache

# rpm –ivh httpd-2.0.1-10.i386.rpm (2# CD)

# rpm -ivh http-devel-2.0.1-10.i386.rpm

# cp /etc/httpd/conf/httpd.conf /backup/

# vi /etc/httpd/conf/httpd.conf

修改如下:

UserDir public_html



AllowOverride FileInfo AuthConfig Limit

Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec



  Order allow,deny

Allow from all

 




  Order deny,allow

  Deny from all




DirectoryIndex index.html index.html.var

# mkdir /home/user1/public_html

# mkdir /home/user2/public_html

# vi /home/user1/public_html/.htaccess

AuthType Basic

AuthName “Enter username,please”

AuthUserFile /backup/password

Require user user1

# vi /home/user2/public_html/.htaccess

AuthType Basic

AuthName “Enter username,please”

AuthUserFile /backup/password

Require user user2

# vi /home/user1/public_html/index.html

# vi /home/user2/public_html/index.html

  # htpasswd –c /backup/password user1

# htpasswd –c /backup/password user2

(5)解决权限的问题

  # chmod 711 /home/user1

# chmod 711 /home/user2

# chown user1 /home/user1/public_html

# chown user2 /home/user2/public_html

# chmod 755 /backup/password

(6)启动服务

# service vsftpd start

# apachectl configtest

# service httpd start

(7)测试服务

在客户机的浏览器上输入 http://www.xh.edu/~user1 即可打开user1的个人主

页,当然了,要输入用户名和密码的;user1用户可以自行上传主页文件;