Apache配置介绍

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

Apache的安装:

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

工作特性:

Apache的工作方式有3种:preforkworkerevent

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  注释:保持连接选项开启或关闭.onoff

#

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 �Cl查看, 如果查看当前模块的动态还是静态加载的可以使用httpd -M

wKiom1YGSqiRgnMPAADviGjRhFA379.jpg

在工作模式上Apache已经准备好了workerevent,在命令行输入httpdtab2此就可以列出来

wKioL1YGSr7RUgtKAABYO511aVs288.jpg

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

wKioL1YGSvHz1Rs6AAF_t8eVu3k985.jpg

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

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

wKioL1YGSv7Sh09rAAIJSkNh35I161.jpg

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

你可能感兴趣的:(apache)