Apache系列:Apache的全局配置
配置文件组成:
整个配置文件由3段组成: (1)全局配置:对主服务器或虚拟机都有效,且有些功能是服务器自身工作属性; (2)主服务器:主站属性; (3)虚拟主机:虚拟主机及属性定义 注:第二段和第三段(即主机和虚拟主机)不能同时使用;
全局配置
一、配置监听的地址和端口
Listen [IP:]PORT //Listen可重复使用多次
默认监听80端口,不加ip,默认监听服务器上的多个ip地址上的80端口,你可以配置多个网卡,在不同的网卡上配置不同的IP,不管从哪个ip访问都能被监听 Listen 192.168.1.22:80:只监听这个ip地址的80端口
二、DSO与MPM
Apache DSO
apache是一个模块化设计的服务,核心只包含主要功能,扩展功能通过模块实现。
不同的模块的功能和特性都是独立分开的,这样扩展性更好,模块之间依赖性小,利于维护升级和扩展。
不同模块可以被静态的编译进程序,也可以动态加载。
模块的动态加载通过DSO(Dysnamic Shared Object)实现。
httpd -l :用于查看核心模块(静态编译入程序的模块)
httpd -M:用于查看当前apache安装的模块
MPM(Multi Process Modules)
意为多路处理模块,也就是我们所说的apache的工作模式。
MPM负责实现网络监听,请求的处理等功能、MPM有很多种,目的是为了在不同平台下实现最优化的性能及稳定性。
共有3种工作模式
prefork:一个主进程产生多个子进程,一个子进程响应一个请求;
worker:一个进程生成多个线程,一个线程响应一个请求;
event:基于事件驱动;
不同系统下可以使用的MPM:
说明
event在apache2.4版本之前是以测试状态提供,网上并没有太多的资料,在更新至2.4版本之后正式上线。 先来说prefork:当httpd启动起来之后,会生成一个主进程,它负责监听用户的请求,一旦请求进来后,它不负责自己响应,而是让其生成的子进程来响应,而主进程继续监听请求。
prefork是非线程,预生成进程型MPM、prefork会预先启动一些子进程,每个子进程一个时间点只能处理一个请求,并且会根据并发请求数量动态生成更多子进程。
通过子进程对外提供服务,处理请求,但是每个子进程在同时间内只能处理一个任务,这个可以在配置文件中设置。
如果有更多的请求,会自动生成更多的子进程来处理。 worker是线程化,多进程的MPM,每个进程可以生成多个线程,每个线程处理一个请求。
优点:节省资源,每多一个子进程就会多占用系统资源,使用线程处理请求。 apache默认prefork:现在的计算机系统资源还是比较够用的,使用prefork效率更高,但是如果要修改为 worker,则要重新静态编译模块。 需要考虑的是:刚启动服务的时候需要创建几个空闲进程,太多不好太少也不好。最少保证有几个空闲进程来响应请求进来,这是必须的。 最多设定多少个空闲进程,多余的空闲进程需要回收回来。
所以其有如下几个关键作用:
()启动服务时绑定特权端口:Linux系统中,只有管理员有权限使用小于1024的特权端口;但运行一些公共可用的服务,一定不能以管理员身份运行
()派发或回收子进程
()读取分析主配置文件
()监听每个用户请求并且派发子进程
配置prefork模型
apache服务默认就是以Prefork模式启动,无须更改启动模式。
参数说明:
<IfModule prefork.c> #如果存在这个模块,那么提供以下属性
StartServers 8 #刚启动web服务时启动几个空闲子进程
MinSpareServers 5 #最少空闲进程数
MaxSpareServers 20 #最大空闲进程数
ServerLimit 256 #限定最多允许并发进来的活动用户连接个数
MaxClients 256 #服务器所允许同时所连接进来的链接数,一般来说与上面保持一致,或者大于上面的数。
MaxRequestsPerChild 4000 #一个服务器进程最多可以处理多少个进程,一旦超出请求后无论如何将进程结束并新启动新进程
</IfModule> #最后以IfModule结尾
注意:为什么不能一直用子进程处理去处理请求?
为什么不能一直用这个子进程处理请求?
.担心子进程有内存泄漏,长期工作下会出现bug等问题,持续工作会一直吃系统资源
.子进程假死状态,不能正常处理请求
为了保险起见,为了让apache更稳定,更安全的运行
配置worker模型
更改apache当前工作模式为worker模式
编辑文件/etc/sysconfig/httpd,将以下参数的注释信息去掉: HTTPD=/usr/sbin/httpd.worker
更改模式后必须重新启动服务 [root@Centos ~]# service httpd restart
启动完毕后,查看其进程状态: [root@Centos ~]# ps -ef | grep http
root : ? :: /usr/sbin/httpd.worker #以root用户身份生成的父进程(用于派发工作进程)
apache : ? :: /usr/sbin/httpd.worker #以apache用户身份运行的工作进程(该工作进程派发线程)
apache : ? :: /usr/sbin/httpd.worker
apache : ? :: /usr/sbin/httpd.worker
apache : ? :: /usr/sbin/httpd.worker
参数说明:
<IfModuleworker.c>
StartServers 4 #配置启动多少个用于监听的服务,注意:这里并不是服务器进程,而是线程
MaxClients 300 #最大支持的用户连接数
MinSpareThreads 25 #最小的空闲线程数
MaxSpareThreads 75 #最大的空闲线程数
ThreadsPerChild 25 #允许每个进程最多生成多少个线程
MaxRequestsPerChild 0 #设置一个独立的子进程将能处理的请求数量
</IfModule>
3、配置服务器支持keep-alived
KeepAlive {On|Off} :启用之后支持一次连接可以发多个请求(对于非常繁忙的服务器建议off
KeepAliveTimeout 15 : 15秒之后断开长连接
MaxKeepAliveRequests 50:一次长连接之内最多允许50个请求
4、配置加载的模块
#LoadModule指令 模块名称 模块所在的路径(相对于ServerRoot的路径)
LoadModule foo_module modules/mod_foo.so
5、其他常用配置
ServerTokens OS:返回服务器页脚信息的详细程度,尽量选择小信息量(full、major)
ServerRoot "/etc/httpd":服务器的配置文件所在
PidFile run/httpd.pid :服务器主进程pid的保存位置
Timeout 60:超时设置,设置短一点好
Include conf.d/*.conf:默认加载模块的配置文件
Apache系列:Apache的全局配置的更多相关文章
- jenkins系列之添加全局配置(一)
第一步: 第二步:执行以下命令: 第三步:找到/c/Users/Administrator/.ssh 目录,里面有两个文件:id_rsa和id_rsa.pub 第四步:配置ssh[这里是id_rsa. ...
- iOS学习系列-Apache服务器的配置
配置Apache服务器 一.目的 能够有一个测试的服务器,不是所有的特殊网络服务都能找到免费得! 二.为什么我们要用"Apache"? Apache是目前使用最广的web服务器 M ...
- Apache Maven 3.6.1配置安装
Apache Maven 3.6.1配置安装 一.下载 maven下载地址:http://maven.apache.org/download.cgi 二.安装 1,解压即可用 2,环境变量配置 MAV ...
- Apache Maven 3.5.0配置安装
1.maven 3.5 下载地址:http://maven.apache.org/download.cgi 2.下载了解压到 3.配置环境变量 4.测试看是否安装成功 5.maven配置(全局配置,用 ...
- Apache Maven 3.6.3配置安装
1.maven 3.5 下载地址:http://maven.apache.org/download.cgi 2.下载了解压到 3.配置环境变量 4.测试看是否安装成功 5.maven配置(全局配置,用 ...
- Apache HTTP Server 虚拟主机配置
Apache HTTP Server 虚拟主机配置(三) 什么是虚拟主机 "虚拟主机"是指在一个机器上运行多个网站(比如:www.company1.com 和 www.c ...
- Apache服务器在80端口配置多域名虚拟主机的方法
我们在配置一台服务器的时候,如果只运行一个站点,往往过于浪费资源.Nginx和Apache都可以通过配置虚拟主机实现多站点.配置虚拟主机的方式主要有两种,一种是多个不同端口对应的多个虚拟主机站点,一种 ...
- window xp Apache与Tomcat集群配置--转载
转载地址:http://www.cnblogs.com/obullxl/archive/2011/06/09/apache-tomcat-cluster-config.html 一. 环境说明 Win ...
- Apache,PHP,MySQL,PMA手动配置的注意事项
注:本文之前发布在自己的QQ空间,复制过来的时候,颜色信息丢失了,回头有空再把颜色重新标上! 前言:LAMP(Linux+Apache+MySQL+PHP)环境是目前开源社区最活跃的开发和运行平台,有 ...
随机推荐
- Confluence 6 配置数字格式
在 Confluence 中使用了 2 种数字格式: 整形数字格式.例如: ############### 小数数字格式.例如:###############.########## Confluenc ...
- Confluence 6 系统运行信息中的 JVM 内存使用情况
当前一个正在运行的 Confluence 6 实例的内存使用情况 https://www.cwiki.us/display/CONF6ZH/Viewing+System+Information
- ES6 必须要用的数组Filter() 方法,不要再自己循环遍历了!!!
1,来一个最简单最常用的栗子: 获得年龄为9岁的孩子 1 let arr = [ 2 { 3 name:'小明', 4 sex:0, 5 age:9 6 }, 7 { 8 name:'小红', 9 s ...
- Nginx的进程模型及高可用方案(OpenResty)
1. Nginx 进程模型简介 Nginx默认采用多进程工作方式,Nginx启动后,会运行一个master进程和多个worker进程.其中master充当整个进程组与用户的交互接口,同时对进程进行监护 ...
- LeetCode(113):路径总和 II
Medium! 题目描述: 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例:给定如下二叉树,以及目标和 sum = ...
- Linux基础实操六
实操一: 临时配置网络(ip,网关,dns)+永久配置 #ifconfig ens33 192.168.145.134/24 #vim /etc/resolv.conf #route add defa ...
- poj3107树的重心
/*树的重心求法:两次dfs,第一次dfs处理出每个结点的size,以此求每个结点大儿子的size,第二次dfs将每个结点大儿子的size和余下结点数进行比较,所有结点里两个值之间差值最小的那个点就是 ...
- mysql 去除重复 Select中DISTINCT关键字的用法 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是 distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,
在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记 ...
- RabbitMQ疑惑释义
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消息传递指的是程序之间 ...
- python函数之各种器
一: 装饰器 1:装饰器模板 def wrapper(func): def inner(*args,**kwargs): ret =func(*args,**kwargs) return ret re ...