赞
踩
万维网 (WORLD WIDE WEB,WWW)服务器,也称之为 WEB 服务器,主要功能是提供网上信息浏览服务。WWW 是 Internet 的多媒体信息查询工具,是 Internet 上飞快发展的服务,也是目前用的最广泛的服务。正是因为有了 WWW 软件,才使得近年
来 Internet 迅速发展。
目前主流的 WEB 服务器软件包括:Apache、Nginx、Lighttpd、IIS、Resin、Tomcat、 WebLogic、Jetty 等。
本章向读者介绍 Apache WEB 服务器发展历史、Apache 工作模式深入剖析、Apache 虚拟主机、配置文件详解及 Apache Rewrite 企业实战等。
Apache HTTP Server 是 Apache 软件基金会的一个开源的网页服务器,是世界使用排名第一的 Web 服务器软件,可以运行在几乎所有广泛使用的计算机平台上,由于其
跨平台和安全性被广泛使用,是目前最流行的 Web 服务器端软件之一。
Apache 服务器是一个多模块化的服务器,经过多次修改,成为目前世界使用排名第一的 Web 服务器软件。Apache 取自“A Patchy Server”的读音,即充满补丁的服
务器,因为 Apache 基于 GPL 发布,大量开发者不断为 Apache 贡献新的代码、功能、新的特性、修改原来的缺陷。
Apache 服务器的特点是使用简单、速度快、性能稳定,可以做负载均衡及代理服务器来使用。
每辆汽车都有发动机引擎,不同的引擎,对车子运行效率也不一样,同样 Apache 也有类似工作引擎或者处理请求的模块,亦可称之为多路处理模块(Multi-Processing Modules,MPM),Apache WEB 服务器有三种处理模块:Prefork MPM、Worker
MPM、Event MPM。
在企业中最常用的处理模块为 Prefork MPM 和 Worker MPM,Event MPM 不支持 HTTPS 方式,官网也给出“This MPM is experimental, so it may or may not work as expected”提示,所以很少被使用。
默认 Apache 处理模块为 Prefork MPM 方式,Prefork 采用的预派生子进程方式,Prefork 用单独的子进程来处理不同的请求,进程之间是彼此独立的,所以比较稳定。
Prefork 的工作原理:控制进程 Master 在最初建立“StartServers”个进程后,为了满足 MinSpareServers 设置的最小空闲进程,所以需创建第一个空闲进程,等待一秒钟,
继续创建两个,再等待一秒钟,继续创建四个,依次按照递增指数级创建进程数,最多每秒同时创建 32 个空闲进程,直到满足至少有 MinSpareServers 设置的值为止。
Apache 的预派生模式(Prefork),基于预派生模式,不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能,不过由于 Prefork MPM 引擎是基于多进程方式提供对外服务,每个进程占内存也相对较高。
相对于 Prefork MPM,Worker 方式是 2.0 版中全新的支持多线程和多进程混合模型的 MPM,由于使用线程来处理,所以可以处理海量的 HTTP 请求,而系统资源的开销要小于基于 Prefork 多进程的方式。Worker 也是基于多进程,但每个进程又生成多个线
程,这样可以保证多线程可以获得进程的稳定性。 Worker MPM 工作原理:控制进程 Master 在最初建立“StartServers”个进程,每个进程会创建 ThreadsPerChild 设置的线程数,多个线程共享该进程内存空间,同时
每个线程独立地处理用户的 HTTP 请求。为了不在请求到来时再生成线程,Worker MPM也可以设置最大最小空闲线程。 Worker MPM 模式下同时处理的请求总数=进程总数 xThreadsPerChild,也即等于 MaxClients。如果服务器负载很高,当前进程数不满足需求,Master 控制进程会 fork
新的进程,最大进程数不能超过 ServerLimit 数,如果需调整的 StartServers 进程数,需同时调整 ServerLimit 值。
Prefork MPM 与 Worker MPM 引擎区别小结如下:
Prefork MPM 模式:使用多个进程,每个进程只有一个线程,每个进程在某个确定的时间只能维持一个连接,稳定,内存开销较高;
Worker MPM 模式:使用多个进程,每个子进程包含多个线程,每个线程在某个确定的时间只能维持一个连接,内存占用量比较小,适合大并发、高流量的WEB 服务器。Worker MPM 缺点是一个线程崩溃,整个进程就会连同其任何
线程一起挂掉。
从 Apache 官方分站点下载目前稳定版本 httpd-2.2.32 版本,目前最新版本为 2.4版本,下载地址如下:
http://mirrors.hust.edu.cn/apache/httpd/httpd-2.2.32.tar.bz2
Apache WEB 服务器安装步骤如下:
tar -xjvf httpd-2.2.32.tar.bz2
tar 工具解压 httpd 包;
cd httpd-2.2.32/
进入解压后目录;
yum install apr apr-devel apr-util apr-util-devel -y
安装 APR 相关优化模块;
./configure --prefix=/usr/local/apache2/ --enable-rewrite --enable-so
–enable-mpms-shared=all --with-mpm=event
预编译 Apache,启用 rewrite 规则、启用动态加载库、开启 Apache 三种工作引擎,如果开启模块支持,需要添加配置:
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_event_module modules/mod_mpm_event.so
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
make
编译
make install
安装
Apache2.2.32 安装完毕,如图 10-1 所示:
图 10-1 Apache2.2.32 安装图解
启动 Apache 服务,临时关闭 selinux、firewalld 防火墙:
/usr/local/apache2/bin/apachectl start
setenforce 0
systemctl stop firewalld.service
查看 Apache 服务进程,通过客户端浏览器访问 http://192.168.111.131/,如图10-2(a)、10-2(b)所示:
图 10-2(a) Apache 启动及查看进程
图 10-2(b) 浏览器访问 Apache WEB 服务器
企业真实环境中,一台 WEB 服务器发布单个网站会非常浪费资源,所以一台WEB 服务器上会发布多个网站,少则 3-5 个,多则 2-30 个网站。
在一台服务器上发布多网站,也称之为部署多个虚拟主机,WEB 虚拟主机配置方法有三种:
基于单 IP 多个 Socket 端口;
基于多 IP 地址一个端口;
基于单 IP 一个端口不同域名。
其中基于同一端口不同域名的方式在企业中得到广泛的使用和应用,如下为基于一个端口不同域名,在一台 Apache WEB 服务器上部署多个网站,步骤如下:
(1) 创建虚拟主机配置文件 httpd-vhosts.conf,该文件默认已存在,只需去掉httpd.conf 配置文件中#号即可,如图 10-3 所示:
图 10-3 httpd.conf 配置文件开启虚拟主机
(2) 配置文件/usr/local/apache2/conf/extra/httpd-vhosts.conf 中代码设置为如下:
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin support@jfedu.net
DocumentRoot “/usr/local/apache2/htdocs/jf1” ServerName www.jf1.com
ErrorLog “logs/www.jf1.com_error_log” CustomLog “logs/www.jf1.com_access_log” common
<VirtualHost *:80>
ServerAdmin support@jfedu.net
DocumentRoot “/usr/local/apache2/htdocs/jf2” ServerName www.jf2.com
ErrorLog “logs/www.jf2.com_error_log” CustomLog “logs/www.jf2.com_access_log” common
Httpd-vhosts.conf 参数详解:
NameVirtualHost *:80 开启虚拟主机,并且监听本地所有网卡接口的 80 端口;
<VirtualHost *:80> 虚拟主机配置起始;
ServerAdmin support@jfedu.net 管理员邮箱;
DocumentRoot “/usr/local/apache2/htdocs/jf1” 该虚拟主机发布目录;
ServerName www.jf1.com 虚拟主机完整域名;
ErrorLog “logs/www.jf1.com_error_log” 错误日志路径及文件名;
CustomLog “logs/www.jf1.com_access_log” common 访问日志路径及文件名;
虚拟主机配置结束。
(3) 创建 www.jf1.com 及 www.jf2.com 发布目录,重启 apache 服务,并分别创建 index.html 页面:
mkdir -p /usr/local/apache2/htdocs/{jf1,jf2}/
/usr/local/apache2/bin/apachectl restart
echo “
图 10-4 Windows 主机 Hosts 配置
(5) 浏览器访问 www.jf1.com、www.jf2.com 如图 10-5(a)、10-5(b)所示,
至此 Apache 基于多域名虚拟主机配置完毕,如果还需添加虚拟主机,直接拷贝其中一个虚拟主机配置、修改 WEB 发布目录即可:
图 10-5(a) www.jf1.com 网站返回内容
图 10-5(b) www.jf2.com 网站返回内容
Apache 可以基于源码安装、YUM 安装,不同的安装方法,所属的路径特不同,如下为
Apache 常用路径的功能用途:
/usr/lib64/httpd/modules/ Apache 模块存放路径;
/var/www/html/ YUM 安装 Apache 网站发布目录;
/var/www/error/ 服务器设置错误信息,浏览器显示;
var/www/icons/ Apache 小图标文件存放目录;
var/www/cgi-bin/ 可执行的 CGI 程序存放目录。
/var/log/httpd/ Apache 日志目录;
/usr/sbin/apachectl Apache 启动脚本;
/usr/sbin/httpd Apache 二进制执行文件;
/usr/bin/htpasswd 设置 Apache 目录密码访问;
/usr/local/apache2/bin Apache 命令目录;
/usr/local/apache2/build Apache 构建编译目录;
/usr/local/apache2/htdocs/ 源码安装 Apache 网站发布目录;
/usr/local/apache2/cgi-bin 可执行的 CGI 程序存放目录;
/usr/local/apache2/include Apache 引用配置文件目录;
/usr/local/apache2/logs Apache 日志目录;
/usr/local/apache2/man Apache 帮助文档目录;
/usr/local/apache2/manual Apache 手册;
/usr/local/apache2/modules Apache 模块路径。
Apache 的配置文件是 Apache WEB 难点,读者需要掌握配置文件中每个参数的含义,才能理解并在日常运维中去解决 Apache 遇到的故障,如下为 Apache 配置文件详解:
ServerTokens OS 显示服务器的版本和操作系统内核版本;
ServerRoot “/usr/local/apache2/” Apache 主配置目录;
PidFile run/httpd.pid PidFile 进程文件;
Timeout 60 不论接收或发送,当持续连接等待超过 60 秒则该次连接就中断;
KeepAlive Off 关闭持续性的连接;
MaxKeepAliveRequests 100 当 KeepAlive 设置为 On 的时候,该数值可以决定此次连接能够传输的最大传输数量;
KeepAliveTimeout 65 当 KeepAlive 设置为 On 的时候,该连接在最后一次传输后等待延迟的秒数;
在企业环境中,Apache Web服务器被广泛用于提供HTTP服务,支持各种网站和应用。下面将对Apache Web服务器在企业实战中的一些关键点进行小结。
一、了解需求和规划
二、安装和配置Apache Web服务器
三、维护和管理Apache Web服务器
四、扩展功能和应用场景
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。