Apache配置介绍

Apache在互联网上非常广泛的web服务程序,在Linux系统上是httpd的服务器名称。而且属于开源程序,可以跨平台使用,经过多次修改,成为世界使用排名第一的Web服务器软件。

Apache的安装:

配置yum源,系统光盘上直接提供rmp包,centos7上版本2.4以上。2.4新加了很多特性,模块化管理为维护提供了很多方便之处。这里就centos6上的2.2.15版本来说明。

工作特性:

Apache的工作方式有3种:prefork,worker,event。

prefork:多进程工作,一个主进程生成多个子进程一个子进程相应一个请求,主进程接受请求但并不处理而是把请求交给下面的子进程。在Apache启动后预先生成多个空闲进程来响应用户的请求,还会生保证一定数量的空闲进程来应对迎接新的请求。一个进程响应请求资源就有一次I/O,到一定数量级的时候势必会影响性能,但如果其中一个进程出现问题不会影响其他进程,所以它极其稳定。

worker:多线程工作,主进程生成多个子进程,子进程生成多个线程,每个线程响应一个请求,而且在系统资源开销上小于进程并共享内存资源。在高流量的情况下这个工作模式更为适合,但如果其中一个线程“挂”掉会殃及其他线程和在它之上的进程。

event:事件驱动模式,主进程生成多个子进程,子进程再生成多个线程,而线程能响应N个请求。它是在worker基础之上的的改进,在2.2的版本中还处于测试状态。到2.4版本之后才正式使用。

默认安装的目录:

服务脚本:/etc/rc.d/init.d/httpd

配置文件目录:/etc/httpd/conf/ ,

主程序目录:/usr/sbin/httpd      httpd.worker  httpd.event

模块文件目录/usr/lib64/httpd/modules/

日志文件目录:/var/log/httpd/

access_log:访问日志.     error_log:错误日志

在配置中主要就是对/etc/httpd/conf/httpd.conf文件进程配置下面是文件中常用的配置内容:(安装后的默认配置)


#

ServerRoot
 "/etc/httpd"      注释:主工作目录

#

PidFile run/httpd.pid           注释:PID文件目录

#

# Timeout: The number of
 seconds before receives and sends time out.

#

Timeout 60           注释:超时时间,定义接收或者发送超时的时间.

#

# KeepAlive: Whether or not
 to allow persistent connections (more than

# one request per
 connection). Set to "Off" to deactivate.

#

KeepAlive Off  注释:保持连接选项开启或关闭.on或off

#

MaxKeepAliveRequests 100    注释:保持连接时可以最大请求的请求数量.

#

# KeepAliveTimeout: Number
 of seconds to wait for the next request from the

# same client on the same
 connection.

#

KeepAliveTimeout 15        注释:保持连接的时间,单位是秒,超过这里定义的时间连接断开.建议不要过长2-5秒即可.

##

## Server-Pool Size
 Regulation (MPM specific)

##

# prefork MPM

# StartServers: number of
 server processes to start

# MinSpareServers: minimum
 number of server processes which are kept spare

# MaxSpareServers: maximum
 number of server processes which are kept spare

# ServerLimit: maximum
 value for MaxClients for the lifetime of the server

# MaxClients: maximum
 number of server processes allowed to start

# MaxRequestsPerChild:
 maximum number of requests a server process serves

<IfModule prefork.c>             注释:prefork的工作模式配置,只有工作在此模式下有效否则无效.

StartServers       8              注释:开启服务时启动的进程数量.

MinSpareServers    5             注释:子进程最小进程空闲数量.如果不够此设置的值父进程将会创建出子进程到这个值的数量.

MaxSpareServers   20              注释:子进程最大空闲的数量,当空闲子进程超过这里设定的值后时候,父进程将回收空闲的子进程

ServerLimit      256              注释:最大的活动进程数量.

MaxClients       256              注释:最大的请求数量,此设置不能超过serverlimit

MaxRequestsPerChild  4000         注释:子进程在工作周期内最大响应的请求数量.如超过此数量后子进程将会被回收.

</IfModule>

# worker MPM

# StartServers: initial
 number of server processes to start

# MaxClients: maximum
 number of simultaneous client connections

# MinSpareThreads: minimum
 number of worker threads which are kept spare

# MaxSpareThreads: maximum
 number of worker threads which are kept spare

# ThreadsPerChild: constant
 number of worker threads in each server process

# MaxRequestsPerChild:
 maximum number of requests a server process serves

<IfModule worker.c>                    注释:worker工作模式配置,工作在此模式有效否则无效.

StartServers         4                  注释:启动服务后创建的进程数量.

MaxClients         300                  注释:最大的并发请求数量

MinSpareThreads     25                  注释:最小空闲线程数量.

MaxSpareThreads     75                  注释:最大空闲线程数量.

ThreadsPerChild     25                  注释:子进程最多生成线程的数量.

MaxRequestsPerChild  0                  注释:子进程最多响应请求的数量,0表示不限定.

</IfModule>

#Listen 12.34.56.78:80

Listen 80                   注释:监听的端口,可以设置多个端口.

# LoadModule foo_module
 modules/mod_foo.so             注释:加载的模块,名称和模块路径.如不需要加载可以在前面加#号注释.

#

LoadModule
 auth_basic_module modules/mod_auth_basic.so

LoadModule auth_digest_module
 modules/mod_auth_digest.so

省略…………

# Load config files from
 the config directory "/etc/httpd/conf.d".

#

Include conf.d/*.conf             注释:加载conf文件,开启服务时会加载/etc/httpd/conf.d/下面的所有以.conf结尾的配置文件

User apache                       注释:运行Apache的用户名

Group apache                      注释:运行Apache的组名

<Directory
 "">                          注释:访问控制区域定义.

Options Indexes FollowSymLinks    注释:options 设置: Indexes Includes
 FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews  None, All

AllowOverride None                   注释: 是否去找.htacess文件作为配置文件.

Order allow,deny                    注释:访问控制顺序,先看allow允许访问的列表,再检查deny的列表

Allow from all                      注释:allow定义是all就是允许所有,可以使用IP地址和网络地址进程控制.

</Directory>

<IfModule mod_userdir.c>    注释:用户目录站点开启与否检查

UserDir disabled         注释:如果开启,可以通过http://URL//~username/ 的形式来访问系统中每个用户的私人站点

</IfModule>

ErrorLog logs/error_log         注释:错误日志文件存放路径和名称,可自己定义.

LogLevel warn                 注释:错误日志级别

#

LogFormat "%h %l %u %t
 \"%r\" %>s %b \"%{Referer}i\"
 \"%{User-Agent}i\"" combined

LogFormat "%h %l %u %t
 \"%r\" %>s %b" common

LogFormat "%{Referer}i
 -> %U" referer

LogFormat
 "%{User-agent}i" agent

#CustomLog logs/access_log
 common

#

#

CustomLog logs/access_log
 combined           注释:访问日志存放路径和文件名称,combined是日志格式. 格式参考logformat

#

Alias /icons/
 "/var/www/icons/"               注释:路径别名.访问/icons/的时候实际目录位置为/var/www/icons/.

#

#

DocumentRoot
 "/usr/local/apache2/htdocs"      注释:网站文件存放目录.

#

#

DirectoryIndex index.html
 index.html.var      注释:默认主页文件,按照从左到右的文件匹配,文件存在且最先匹配的为默认主页.

#

#

AddDefaultCharset UTF-8          注释:默认字符集.

#

#<VirtualHost *:80>            注释:虚拟主机,*为IP地址.80是监听的端口号.其中以下配置和以上提到的配置功能一样.

#    ServerAdmin
 [email protected]

#    DocumentRoot
 /www/docs/dummy-host.example.com

#    ServerName dummy-host.example.com

#    ErrorLog
 logs/dummy-host.example.com-error_log

#    CustomLog
 logs/dummy-host.example.com-access_log common

#</VirtualHost>

logformat的说明:

%h:客户端IP地址

%l:客户端用户名,-表示空

%u:认证用户.-表示空

%t:访问时间,服务器收到请求时的时间.

%r:请求报文的首行信息.

%s>s:响应状态码

%b:响应报文的大小,单位是字节,不包括响应报文首部

%{referer}i:请求报文中"referer"的首部值,当前资源的访问入口,即从哪个页面中的超链接跳转而来,-表示用户直接键入的URL

%{User-Agent}i:请求报文中"User-Agent"首部的值,即发出请求用到的应用程序.

虚拟主机的工作方式有三种:基于IP,基于主机名,和基于端口号,在VirtualHost定义的时候区别即可,比如,基于IP的主机<VirtualHost
192.168.1.2:80>

<VirtualHost 192.168.1.3:80>,在访问的时候输入对应的IP即访问对应的虚拟主机,前提是你需要有对应的IP地址在你的网卡上面.基于端口号,IP可以是同一个IP不过是端口的区分,基于主机名同理.

Apache工作模式的切换:

Apache在安装后默认的工作模式是perfork,在Linux系统下可以使用httpd –l查看, 如果查看当前模块的动态还是静态加载的可以使用httpd -M

在工作模式上Apache已经准备好了worker和event,在命令行输入httpd按tab键2此就可以列出来

如需切换工作模式要修改/etc/sysconfig/httpd文件,找到 #HTTPD=/usr/sbin/httpd.worker 把前面的#好去掉即可,然后重启Apache服务.

同样的道理如果使用event则把后面的httpd.worker更改为httpd.event。但在2.2的版本中不建议使用event的模式因为还处于测试当中可以看文档也并没有在下面增列出event。如果要使用event更新为2.4的版本。

重启服务后可以用pa aux 查看:

要切换会prefork再把刚才的HTTPD=/usr/sbin/httpd.worker注释掉重启服务即可。

时间: 2024-08-05 04:00:22

Apache配置介绍的相关文章

Windows Azure下Apache高可用服务配置介绍

pWindows Azure下Apache高可用服务配置介绍/p  pAzure现在不是一个什么新鲜话题了,但可以说Azure的功能还在逐渐增加,包括性能上的优化,具体就不多介绍了,近期呢闲着没事,就尝试在Azure上部署Apache服务的高可用性部署,如果在本地部署Apache服务的高可用性的话,会用到LVS+Keepalived等服务来实现Apache的高可用性配置,如果我们将Apache服务部署到windows azure上的话,就省去了LVS+Keepalived的配置,所以相对比较简单

Python+Nginx实现邮件POP、IMAP、SMTP代理配置介绍

说到Python,大家都知道,是在运维方面的管理人员需要掌握的一门技术,为什么这么说呢,在运维方面Python开发语言应用比较广,以致可以帮助管理员提高工作效率,具体我就不多少了,接着我们说说邮件代理,因为公司的邮箱系统是使用是IBM的Domino Lotus服务,如果对Lotus了解的都知道,Lotus是文件数据库类型的服务器类型,用户的所有邮箱数据库都是独立的xxx.nsf,而通过数据库模板xxx.ntf进行创建或者定时刷新数据,来保证数据库的额稳定性.而当用户数量多的话,就需要创建多台邮件

Linux Apache 配置反向代理

最近遇到一个项目,需要访问某单位的内网服务器,对方要求必须要配置一个前置机,来转发所有的web请求,然后就学了一下反向代理,查了一些资料,也完成了HelloWorld的例子. 关于反向代理的介绍,可以参考 介绍1和 介绍2 相互补充吧,关于概念的介绍挺不错的. 我现在仅仅是完成了第一步,就是配置转发请求. 操作系统是centos,关于linux安装apache就不多说了 apache安装完成后,进入 /etc/httpd/conf目录,打开 httpd.conf文件 然后 1.先检查代理模块是否

Apache 配置多站点访问「为项目分配二级域名」

一级域名(baidu.com)也叫作顶级域名,注册一级域名是需要付费的 而二级域名(image.baidu.com)是基于一级域名延伸出来的,所以只要你购买了一级域名,二级域名是可以任意配置的 其实(www.baidu.com)也是二级域名,只是大家已经习惯使用www为前缀的二级域名作为网站的主域名入口而已 通过DNS解析服务商,可以为每个二级域名绑定不同的主机IP,这样即使只有一个主域名也可以架设多个网站了 如果你只有一台主机,并且要在上面建立多个项目,还得通过子域名的方式访问,那么你需要配置

solr的schema.xml配置介绍

schema.xml配置介绍如下: 常见的元素有以下几种: <field name="weight" type="float" indexed="true" stored="true"/> <dynamicField name="*_i"  type="int"    indexed="true"  stored="true"/&

Mybatis缓存(1)--------系统缓存及简单配置介绍

前言 Mybatis的缓存主要有两种: 系统缓存,也就是我们一级缓存与二级缓存: 自定义的缓存,比如Redis.Enhance等,需要额外的单独配置与实现,具体日后主要学习介绍. 在这里主要记录系统缓存的一些简单概念, 并没有涉及原理.其中会涉及Mybatis的相关配置以及生命周期等. 主要参考资料:<深入浅出Mybatis基础原理与实战>,http://www.mybatis.org/mybatis-3/zh/index.html 1.Mybatis简单配置介绍 本文介绍的是基于XML的配置

Centos 7.3下 Linux For SQL Server安装及配置介绍

Centos 7.3下Linux For SQL Server安装及配置介绍 说到SQL Server服务,我们大家都知道是Microsoft公司的数据库服务,当然说到数据库,现在主要分为三大商:1:Oracle.2:Msql Server.3:Mysql:三种数据库在当下环境受到不了不同程度的关注:比如oracle主要应用到大型的商业比较多,比如银行:SQL Server主要在常见的互联网公司使用:mysql主要应用于小型的企业或者服务商使用:当然从费用上来说,Oracle是最贵的,也是最为稳

Centos7+Mariadb集群-主从配置介绍

近期一直在恶补Linux相关的知识,主要是就是学Linux下的基本日常应用服务器的配置及优化,今天我们主要介绍一下在Centos7下安装及配置Mysql 集群,说到集群,其实就是为了提高服务的高可用性.对于高可用的相关服务今天不是主要介绍内容,今天主要介绍MYSQL的主从配置.对在Linux下的其他服务的介绍及服务高可用负载均衡我们将会在后期的文章中介绍.开始今天的介绍:Centos7+Mysql主从配置. 环境介绍: Hostname:A-S IP:192.168.5.21 Role:Mysq

Citrix 6.5 详细安装及配置介绍

Citrix 6.5 详细安装及配置介绍 说到虚拟机化,相信大家都对虚拟化的概念及环境的搭建都有一定的了解,我们都知道目前最主流的虚拟化产品有很多,比如microsoft Hyper-v.vmware workstation.vmare vsphere.citrix等产品,我之前的环境搭建都基于hyper-v和vmware vsphere的,近期呢,闲着没事想体验一下citrix产品,目前citrix虚拟化xencenter 6.5,所以我们今天就介绍一下xencenter6.5的全新安装及配置