linux网络服务[Web服务器apache]——————了解Apache、apache的三种工作模式、安装apache解读其配置文件、httpd帮助手册

1.了解Apache

1.1什么是Apache

Apache全称Apache HTTP Server ,中文名阿帕奇,是一款**Web服务器软件,有多种产品,可以支持SSL技术**,支持多个虚拟主机。它快速、可靠并且可通过简单的API扩充,将**Perl/Python等解释器编译到服务器中。本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美**。

Apahce有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache以进称为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,再一个apache web站点扩容时,通常是增加服务器或扩充集群节点而不是增加处理器。现在apache仍然是世界上用的最多的web服务器。

1.2 apache的工作模式

Apache三种工作模式简介
Apache目前一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块)模式。它们分别是prefork,worker和event,它们同时也代表这Apache的演变和发展。

Apache在configure配置编译参数的时候,可以使用 --with-mpm=prefork|worker|event 来指定编译为那一种MPM,当然也可以用编译为三种都支持:–enable-mpms-shared=all,这样在编译的时候会在modules目录下自动编译出三个MPM文件的so,然后通过修改httpd.conf配置文件更改MPM。

1.2.1 prefork模式

prefork模式是很古老但是非常稳定的模式。使用的是多个子进程,Apache在启动之初,控制进程会建立若干个子进程,然后等待请求进来,并且总是视图保持一些备用的子进程。为了不在请求到来时再生成子进程,所以要根据需求不断的创建新的子进程,最大可以达到每秒32个直到满足需求为止。之所以这样做,是为了减少频繁创建和销毁进程的开销。每个子进程中只有一个线程,在一个时间点内,只能处理一个请求。

  • 优点:成熟,兼容所有新老模块。进程之间完全独立,使得它非常稳定。同时,不需要担心线程安全的问题。(我们常用的mod_php,PHP的拓展不需要支持线程安全)
  • 缺点:一个进程相对占用更多的系统资源,消耗更多的内存。而且,它并不擅长处理高并发请求,在这种场景下,它会将请求放进队列中,一直等到有可用进程,请求才会被处理。

1.2.2 worker模式

worker模式和prefork模式相比,worker模式使用了多进程和多线程的混合模式,worker模式也同样会先预派生一些子进程,然后每个子进程创建一些线程,同时包括一个监听线程,每个请求过来会被分配到一个线程来服务。线程比起进程会更轻量,因为线程是通过共享父进程的内存空间,因此,内存的占用会减少一些,在高并发的场景下会比prefork有更多可用的线程,表现会更优秀一些。
另外,如果一个线程出现了问题也会导致同一进程下的线程出现问题,如果是多个线程出现问题,也只是影响Apache的一部分,而不是全部。由于用到多进程多线程,需要考虑到线程的安全了,在使用keep-alive长连接的时候,某个线程会一直被占用,即使中间没有请求,需要等待到超时才会被释放(该问题在prefork模式下也存在)。

  • 优点:占据更少的内存,高并发下表现更优秀。
  • 缺点:必须考虑线程安全的问题,因为多个子线程是共享父进程的内存地址的。如果使用keep-alive的长连接方式,也许中间几乎没有请求,这时就会发生阻塞,线程被挂起,需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也会导致在高并发场景下的无服务线程可用。

1.2.3 event模式

event是Apache最新的工作模式,它和worker模式很像,不同的是在于它解决了keep-alive长连接的时候占用线程资源被浪费的问题(某些线程因为被keep-alive,挂在那里等待,中间几乎没有请求过来,一直等到超时)。
在event工作模式中,会有一些专门的线程用来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务器的线程,执行完毕后,又允许它释放。这样,一个线程就能处理几个请求了,实现了异步非阻塞。这增强了在高并发场景下的请求处理。
event工作模式在遇到某些不兼容的模块时,会失效,将会回退到worker模式,一个工作线程处理一个请求。官方自带的模块,全部是支持event工作模式的。

2.安装Apahce解读其配置文件

2.1安装Apache

linux网络服务[Web服务器apache]——————了解Apache、apache的三种工作模式、安装apache解读其配置文件、httpd帮助手册
linux网络服务[Web服务器apache]——————了解Apache、apache的三种工作模式、安装apache解读其配置文件、httpd帮助手册
linux网络服务[Web服务器apache]——————了解Apache、apache的三种工作模式、安装apache解读其配置文件、httpd帮助手册

2.2 解读配置文件

linux网络服务[Web服务器apache]——————了解Apache、apache的三种工作模式、安装apache解读其配置文件、httpd帮助手册
Timeout:apache配置的超时时间
linux网络服务[Web服务器apache]——————了解Apache、apache的三种工作模式、安装apache解读其配置文件、httpd帮助手册
KeepAlive:长连接是开启或关闭

linux网络服务[Web服务器apache]——————了解Apache、apache的三种工作模式、安装apache解读其配置文件、httpd帮助手册

Listen:apache对外提供的端口号,默认是80

linux网络服务[Web服务器apache]——————了解Apache、apache的三种工作模式、安装apache解读其配置文件、httpd帮助手册
Include:包含哪些文件进来,下图指的是/etc/httpd/conf.d目录小的所有conf文件

linux网络服务[Web服务器apache]——————了解Apache、apache的三种工作模式、安装apache解读其配置文件、httpd帮助手册

DocumentRoot:apache的工程路径,项目部署的路径

linux网络服务[Web服务器apache]——————了解Apache、apache的三种工作模式、安装apache解读其配置文件、httpd帮助手册

2.3 配置主机

当我们安装好apache后需要防火墙通过
linux网络服务[Web服务器apache]——————了解Apache、apache的三种工作模式、安装apache解读其配置文件、httpd帮助手册
linux网络服务[Web服务器apache]——————了解Apache、apache的三种工作模式、安装apache解读其配置文件、httpd帮助手册
linux网络服务[Web服务器apache]——————了解Apache、apache的三种工作模式、安装apache解读其配置文件、httpd帮助手册
linux网络服务[Web服务器apache]——————了解Apache、apache的三种工作模式、安装apache解读其配置文件、httpd帮助手册
linux网络服务[Web服务器apache]——————了解Apache、apache的三种工作模式、安装apache解读其配置文件、httpd帮助手册
linux网络服务[Web服务器apache]——————了解Apache、apache的三种工作模式、安装apache解读其配置文件、httpd帮助手册
这样我们的http就搭建成功了,我们可以继续实验。

3.httpd手册

我们安装http手册时为了在我们使用http的拓展应用时可以,快速了解使用方法,下面我们安装手册:
linux网络服务[Web服务器apache]——————了解Apache、apache的三种工作模式、安装apache解读其配置文件、httpd帮助手册
linux网络服务[Web服务器apache]——————了解Apache、apache的三种工作模式、安装apache解读其配置文件、httpd帮助手册
linux网络服务[Web服务器apache]——————了解Apache、apache的三种工作模式、安装apache解读其配置文件、httpd帮助手册
linux网络服务[Web服务器apache]——————了解Apache、apache的三种工作模式、安装apache解读其配置文件、httpd帮助手册