Linux下Apache
Posted kumunotes
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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工作原理
三、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 安装
五、Apache虚拟主机
六、Apache的三种工作方式
Apache 一共有3种稳定的 MPM 模式(多进程处理模块),它们分别是 prefork、worker、event。http-2.2版本的httpd默认的mpm工作模式为prefork,2.4版本的httpd默认是event工作模式。可以通过 httpd -V 来查看。
编译的时候,可以通过 configure 的参数来指定:
1、prefork 工作模式
Apache在启动之初,就预先fork一些子进程,然后等待请求进来。之所以这样做,是为了减少频繁创建和销毁进程的开销。每个子进程只有一个线程,在一个时间点内,只能处理一个请求。
优点:成熟稳定,兼容所有新老模块。同时,不需要担心线程安全的问题。
缺点:一个进程相对占用更多的系统资源,消耗更多的内存。而且,它并不擅长处理高并发请求。
2、worker 工作模式
使用了多进程和多线程的混合模式。它也预先fork了几个子进程(数量比较少),然后每个子进程创建一些线程,同时包括一个监听线程。每个请求过来,会被分配到1个线程来服务。线程比起进程会更轻量,因为线程通常会共享父进程的内存空间,因此,内存的占用会减少一些。在高并发的场景下,因为比起prefork有更多的可用线程,表现会更优秀一些。
优点:占据更少的内存,高并发下表现更优秀。
缺点:必须考虑线程安全的问题。
3、event 工作模式
它和worker模式很像,最大的区别在于,它解决了keep-alive场景下,长期被占用的线程的资源浪费问题。event MPM中,会有一个专门的线程来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。这样增强了高并发场景下的请求处理能力。
HTTP采用keepalive方式减少TCP连接数量,但是由于需要与服务器线程或进程进行绑定,导致一个繁忙的服务器会消耗完所有的线程。Event MPM是解决这个问题的一种新模型,它把服务进程从连接中分离出来。在服务器处理速度很快,同时具有非常高的点击率时,可用的线程数量就是关键的资源限 制,此时Event MPM方式是最有效的,但不能在HTTPS访问下工作。
七 Apache程序环境
1、配置文件
以上是关于Linux下Apache的主要内容,如果未能解决你的问题,请参考以下文章
(linux服务器)apache开启gzip的配置以及效果对比
环境初始化 Build and Install the Apache Thrift IDL Compiler Install the Platform Development Tools(代码片段