Linux下Apache

一、Apache介绍

        Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

       Apache是一种开源的httpd服务器软件,可以在UNIX、Linux以及Windows在内的大多数主流计算机操作系统系统上面运行,Apache是由Illinois大学Urbana-Champaign的国家高级计算机程序中心开发,它的名字取自apatchy server 的读音,即充满补丁的服务器,可见在最初的时候该程序并不是非常完善。

       但由于Apache是开源软件,所以得到开源社区的支持,不断开发出新的功能特性,并修补了原来的缺陷,经过多年不断的完善,如今的Apache已经是最流行的web服务端软件之一Apache拥有以下众多的特性,保证了它可以高速稳定的运行

二、Apache工作原理

         Web系统由客户端(浏览器)和服务器两部分组成。Web系统架构也被称为B/S架构。最常见的Web服务器有Apache、IIS、Tomcat等,常用的浏览器有IE、Chrome、Firefox等。当你想访问一个网页时,需要在浏览器的地址栏中输入该网页的URL(Uniform Resource Locator,简称为URL)地址,或者是通过超链接链接到该网页。浏览器会向该网页所在的服务器发送一个HTTP请求,服务器会对接收到的请求信息进行处理,然后将处理的结果返回给浏览器,最终将浏览器处理后的结果呈现给用户。

  作为世界上最流行的Web服务器,Apache遵循的同样是HTTP协议,默认端口号为80,客户端和服务端的通信步骤如下:

  (1)客户端(浏览器)和Web服务器建立TCP连接,连接建立以后,向Web服务器发出访问请求(如get)。根据HTTP协议,该请求中包含了客户端的IP地址、浏览器的类型和请求的URL等一系列信息。

    (2)服务器处理接收到的请求信息并将处理后的结果返回给客户端。

  (3)客户端断开和服务器的连接。

三、Apache的三种工作方式

Apache 一共有3种稳定的 MPM 模式(多进程处理模块),它们分别是 prefork、worker、event。http-2.2版本的httpd默认的mpm工作模式为prefork,2.4版本的httpd默认是event工作模式。可以通过 httpd -V 来查看。

[root@linuxblogs ~]# httpd -V | grep -i "server mpm"
Server MPM:     Prefork
Linux下Apache

编译的时候,可以通过 configure 的参数来指定:

--with-mpm=prefork|worker|event
Linux下Apache

1、prefork 工作模式

Apache在启动之初,就预先fork一些子进程,然后等待请求进来。之所以这样做,是为了减少频繁创建和销毁进程的开销。每个子进程只有一个线程,在一个时间点内,只能处理一个请求。

优点:成熟稳定,兼容所有新老模块。同时,不需要担心线程安全的问题。
缺点:一个进程相对占用更多的系统资源,消耗更多的内存。而且,它并不擅长处理高并发请求。

2、worker 工作模式

使用了多进程和多线程的混合模式。它也预先fork了几个子进程(数量比较少),然后每个子进程创建一些线程,同时包括一个监听线程。每个请求过来,会被分配到1个线程来服务。线程比起进程会更轻量,因为线程通常会共享父进程的内存空间,因此,内存的占用会减少一些。在高并发的场景下,因为比起prefork有更多的可用线程,表现会更优秀一些。

worker模式使用多个子进程,每个子进程有多个线程、由于使用的是线程去处理请求,消耗内存小,适合高流量的请求。

优点:占据更少的内存,高并发下表现更优秀。
缺点:如果某个进程出现问题,那么这个进程下的线程都会出现问题,即稳定性不是很好必须考虑线程安全的问题。

3、event 工作模式

它和worker模式很像,最大的区别在于,它解决了keep-alive场景下,长期被占用的线程的资源浪费问题。event MPM中,会有一个专门的线程来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。这样增强了高并发场景下的请求处理能力。

HTTP采用keepalive方式减少TCP连接数量,但是由于需要与服务器线程或进程进行绑定,导致一个繁忙的服务器会消耗完所有的线程。Event MPM是解决这个问题的一种新模型,它把服务进程从连接中分离出来。在服务器处理速度很快,同时具有非常高的点击率时,可用的线程数量就是关键的资源限 制,此时Event MPM方式是最有效的,但不能在HTTPS访问下工作。

prefork与worker模式比较

  1. prefork模式使用多个子进程,每个子进程只有一个线程,每个进程在某个确定的时间只能维持一个连接;
  2. worker模式使用多个子进程,每个子进程有多个线程,每个线程在某个确定的时间只能维持一个连接,适用于高流量的HTTP服务器上;

总的来说,prefork方式速度要稍高于worker,但是prefork所需要的CPU和Memory资源也稍高于worker。

四、Apache优点

1.支持所有的计算机平台简单有效的配置文件

2.支持虚拟主机

3.支持多种方式的http认证

4.集成Perl脚本语言

5.集成代理服务器模块

6.支持实时监视服务器状态和定制服务器日志

7.支持服务器端包含指令

8.支持Php

9.支持第三方软件开发商提供的软件

10.Apache模块化

五、Apache的主要安装方式

1.rpm安装

rpm方式安装默认文件存放位置

  • 主配置文件:/etc/httpd/conf/httpd.conf

  • 子配置目录:/etc/httpd/conf.d/

  • 网站根目录:/var/www/html/

  • 访问日志:/var/log/httpd/access_log

  • 错误日志:/var/log/httpd/error_log

2.二进制方法安装

3.源码编译安装

4.yum 安装

Linux下Apache

六、Apache虚拟主机

  1.  基于IP的虚拟主机

  2. 基于域名的虚拟主机

  3. 基于端口的虚拟主机

 七、用户认证

八、设置默认主机

九、301域名跳转

十、日志切割