设为首页 收藏本站
查看: 681|回复: 0

[经验分享] httpd(2.2&2.4)RPM搭建配置定义详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-1-13 08:40:12 | 显示全部楼层 |阅读模式
一、RPM包安装配置程序环境

   1.CentOS6系列(默认httpd2.2)
wKioL1aVBJ7C7ALTAAFVjskwUcY279.jpg
         (1)配置文件:/etc/httpd/conf/httpd.conf、  /etc/httpd/conf.d/*.conf()
         (2)服务脚本:/etc/rc.d/init.d/httpd
   配置文件:/etc/sysconfig/httpd
         (3)主程序文件:/usr/sbin/httpd、  /usr/sbin/httpd.event、  /usr/sbin/httpd.worker
         (4)日志文件目录:/var/log/httpd  access_log: 访问日志;error_log:错误日志
         (5)站点文档目录:/var/www/html
         (6)模块文件路径:/usr/lib64/httpd/modules
         (7)配置文件的组成:~]# grep "Section" /etc/httpd/conf/httpd.conf
###Section 1: Global Environment
###Section 2: 'Main' server configuration
###Section 3: Virtual Hosts
         (8)配置格式:directivevalue
       directive: 不区分字符大小写;value: 为路径时,取决于文件系统;

   2.CentOS6系列(默认httpd2.4)
        (1)配置文件:/etc/httpd/conf/httpd.conf、  /etc/httpd/conf.d/*.conf
        (2)模块相关的配置文件:/etc/httpd/conf.modules.d/*.conf
                        systemd unit file:/usr/lib/systemd/system/httpd.service
        (3)主程序文件:/usr/sbin/httpd(httpd-2.4支持MPM的动态切换)
        (4)日志文件目录:/var/log/httpd  access_log: 访问日志;error_log:错误日志
        (5)站点文档:/var/www/html
        (6)模块文件路径:/usr/lib64/httpd/modules        
        (7)服务控制:
systemctl  enable|disable  httpd.service
systemctl  {start|stop|restart|status}  httpd.service




二、httpd2.2主配置文件概述
    主配置文件(三段)/etc/httpd/conf/httpd.conf:
# The configurationdirectives are grouped into three basic sections:
#1)  Directives thatcontrol the operation of the Apache server process as a whole (the 'globalenvironment').
#2)  Directives thatdefine the parameters of the 'main' or 'default' server,which responds torequests that aren'thandled by a   virtual host. Thesedirectives also provide default values for the settingsof all virtual hosts.
#3) Settings for virtual hosts, which allow Web requests to be sent todifferent IP addresses or hostnames andhave them handled by the same Apache server proces
     配置格式:directive   value
directive:不区分字符大小写;
value:为路径时,是否区分字符大小写,取决于文件系统;
wKiom1aVBHKDnIvdAAC8ku9gmHI767.jpg
[iyunv@localhost  ~]#  grep   "Section"     /etc/httpd/conf/httpd.conf

### Section 1:  Global Environment
全局配置段
### Section 2:  'Main' server configuration
中心主机配置段
### Section 3:  Virtual Hosts
虚拟主机配置段
全局配置:其中的指令用于在全局层面配置一个Apache服务器相关属性
中心主机配置:其中的指令用于定义"主要"或者"默认"的服务,改段参数也能够够提供虚拟主机端配置的相关指令
虚拟主机段:允许Web请求从不同的IP、FQDN或者同一台Apache服务器的不同进程端口被发送
注意:中心主机段和虚拟主机段不能同时被发送,虚拟主机段可以在/etc/httpd/conf.d/*.conf被定义




三、"main" "default"段相关配置文件解析
    1.修改监听的IP和Port:Listen   [IP:]PORT         
          1) Listen指令可重复出现多次;
          2) PORT不能省略,但ip可以省略;省略ip表示监听0.0.0.0.,即本机所有IP;
          3) 修改监听socker,不能重新加载服务配置,必须重启服务才能生效

    2.持久[长]连接功能
         Persistent Connection:TCP连接建立后,每个资源获取完成后不会断开连接,而是继续等待其它的请求完成;
                                        通过连接请求数量限制或者时间长短限制来实现TCP连接的断开
           弊端:对并发访问量较大的服务器,长连接机制会使得后续某些请求无法得到正常 响应;
          解决方法:使用较短的持久连接时长,以及较少的请求数量;httpd-2.4 支持毫秒级持久时间;
配置文件

KeepAlive On|Off
关闭|开启持久连接,默认关闭
MaxKeepAliveRequests   100
最大持久连接请求数量:100
KeepAliveTimeout  15
持久连接超时时长:15秒

    3.MPM:Multipath ProcessModule,多道处理模块
         httpd-2.2不支持同时编译多个MPM模块,所以只能编译选定要使用的那个;
         CentOS 6的rpm包为此专门提供了应用程序文件:httpd(prefork), httpd.worker, httpd.event用于实现对不同的MPM机制的支持;
       (1)查看所使用的MPM模块
                [iyunv@localhost /]# ps  aux  |grep httpd显示主控进程(root)和服务启动进程(apache)
默认使用的为/usr/sbin/httpd,其为prefork的MPM模块;
wKioL1aVBKvxYuUkAAJxnWDrc_A380.jpg
       (2)查看httpd程序的模块列表:
      查看静态编译的模块:  #httpd  -l
      查看静态编译及动态编译的模块:#httpd  -M
wKiom1aVBH3j5L2GAACD94HsMN0699.jpg
       (3)更换使用httpd程序,以支持其它MPM机制;
      编辑/etc/sysconfig/httpd文件中"HTTPD=/usr/sbin/httpd.{worker,event}",取消注释#
      注意:重启服务进程方可生效
wKioL1aVBLCAYwGAAAC6aDVQtQo668.jpg
       (4)MPM配置文件
  对于CentOS 6的httpd2.2的event机制依然是测试使用,不建议在生产环境中使用
  对于Linux而言进程和线程的效率类似,所以在httpd2.2上用线程模型取代进程模型,用worker取代prefork性能上的差别可忽略
PV: Page View
页面访问,一个页面年会于多个资源
UV: User View
用户访问量,站在独立IP量角度;


prefork的配置:

<IfModule  prefork.c>
条件式参数配置模式:prefork
StartServers       8
服务器刚启动时的进程数量
MinSpareServers    5
最少空闲进程数,当小于此数时候主控进程会自动启动增加
MaxSpareServers   20
最大空闲进程数
ServerLimit      256
服务器生命周期最大在线进程数量,应该不能小于MaxClients
MaxClients       256
最大并发响应数量,最大允许启动杜少进程去响应用户请求
MaxRequestsPerChild  4000
每个进程最多可以处理多少个请求,到4000销毁
</IfModule>        



worker的配置:

<IfModule  worker.c>
条件式参数配置模式:prefork
StartServers         4
服务器刚启动时的进程数量
MaxClients         300
最大并发响应数量,最大允许启动杜少进程去响应用户请求
MinSpareThreads     25
最少空闲线程数
MaxSpareThreads     75
最大空闲线程数
ThreadsPerChild     25
每个进程可以生成的线程数量
MaxRequestsPerChild  0
每个进程最多可以处理多少个请求,0表示无限制
</IfModule>


   4.DSO:动态共享模块机制,配置指令实现模块加载
通过配置指令动态加卸载模块:LoadModule  <mod_name> <mod_path>
模块路径可使用相对地址[ServerRoot指令(/etc/httpd)]指向的路径而言:/etc/httpd/modules/
若不需要启用该模块,仅需用#将其注释即可
wKiom1aVBISiaBtmAADgCieSnLM784.jpg

   5.定义'Main'server(中心主机)的文档页面路径
           中心主机:整个Web服务器仅提供一个Web站点
DocumentRoot    "… ...":文档路径映射(网站根目录)定义,DocumentRoot指向的路径为URL路径的起始位置;
          文档路径映射:DoucmentRoot指向的路径为URL路径的起始位置,其相当于站点URL的根路径;
                  (FileSystem) /web/host1/index.html -->  (URL)  /index.html

   6.站点访问控制
       (1)访问控制机制:基于来源地址、基于账号;
       (2)可基于两种类型的路径指明对哪些资源进行访问控制
                  1)文件系统路径:
对目录:<Directory "">  … ... </Direcotry>
对单个文件:<File "">  … ...  </File>
对匹配到的模式:<FileMatch "PATTERN">   … ...  </FileMatch>
                  2)URL路径:
<Location "">   … … </Location>
<LocationMatch ""> …...</LocationMatch>

   7.定义默认主页面:DirecotryIndex    index.html   index.html.var
用户访问时,定义多个主页多个的时候,工作向右逐个遍历,若都无法找到
  1)报错&重新指向错误提示页面
2)返回索引列表,危险,一般仅用在下载站点


   8.Directory中“基于来源地址”实现访问控制
      (1)Options:此目录内资源访问属性,后跟1个或多个以空白字符分隔的“选项”列表
   所有可用特性:Indexes、Includes、FollowSymLinks、SymLinksifOwnerMatch、ExecCGI、MultiViews、None、All
Indexes
默认启用,指明URL路径下不存在与定义的主页面资源相符文件时,返回索引列表给用户,危险
Includes
允许启动服务器包含
FollowSymLinks
允许跟踪符号链接文件所指向的源文件;
SymLinksifOwnerMatch
允许跟踪符号链接文件,但是原文件的和连接文件的属主属组相同
ExecCGI
允许执行CGI脚本
MultiViews
允许做内容协商,十分消耗资源且不安全
None
全部不可以
All
全部可以访问
       (2)AllowOverride
    与访问控制相关的哪些指令可以放在.htaccess文件(每个目录下都可以有一个),使用改机制会是站点十分消耗资源
    对目录解析的性能影响十分的,一般不使用
All:全部可以放入
None:全部不可以放入
      (3)order和allow、deny,基于来源地址的一组指令
   order:定义生效次序;写在后面的表示默认法则;
  Allow from, Denyfrom明确定义来源地址,可以为IP或者NetAddr网络地址
NetAddr格式可以为172.16、172.16.0.0、172.16.0.0/16、172.16.0.0/255.255.0.0


   9.定义路径别名
格式:Alias  /URL/ "/PATH/TO/SOMEDIR/"
DocumentRoot"/www/htdocs"
http://www.xuding.com/download/bash-4.4.2-3.el6.x86_64.rpm
/www/htdocs/download/bash-4.4.2-3.el6.x86_64.rpm
Alias  /download/ "/rpms/pub/"
http://www.xuding.com/download/bash-4.4.2-3.el6.x86_64.rpm
/rpms/pub/bash-4.4.2-3.el6.x86_64.rpm
http://www.xuding.com/images/logo.png
/www/htdocs/images/logo.png

   10.设定默认字符集
AddDefaultCharset  UTF-8
添加指定的字符集
支持的中文字符集:GBK,GB2312, GB18030


   11.日志设定
         (1)错误日志:
ErrorLog    logs/error_log
错误日志位置
LogLevel    warn
日志级别,级别越高记录的信息越少
可使用的级别有:debug,info, notice, warn, error, crit, alert, emerg
         (2)访问日志:
CustomLog  logs/access_log  combined   记录的格式
LogFormat "%h %l %u %t\"%r\" %>s %b \"%{Referer}i\"\"%{User-Agent}i\"" combined   不同格式定义
%h
Remote  host,客户端IP地址;
%l
Remote  logname (from identd, if supplied)远程登录名,-表示为空;
%u
Remote  user,  (from auth; may be bogus if  return status (%s) is 401);基于用户名认证登录时认证名记录
%t
Time  the request was received (standard english format),服务器收到请求的标准英文格式时间;
\"
转意符号显示"本身,不与最外层引用的冲突
%r
First  line of request,请求报文的道行信息(method url version);???
%>s
响应状态码;
%b:
响应报文的大小,单位是字节,不包括响应报文的http首部;
%{Referer}I
请求报文当中"referer"首部的值;当前资源的访问入口,即从哪个页面中的超链接跳转而来;
%{User-Agent}I
请求报文当中"User-Agent"首部的值;即发出请求用到的应用程序;



三、基于用户的访问控制配置httpd服务
   1.认证质询
         WWW-Authenticate:响应码为401,拒绝客户端请求,并说明要求客户提供账号和密码;
     (1)认证:
          1)Authorization:客户端用户填入账号和密码后再次发送请求报文;认证通过,则服务器发送响应的资源;
          2)认证类型:basic明文认证;digest消息摘要认证
     (2)安全域
              需要用户认证后方能访问的路径;应该通过名称对其进行标识,并用于告知用户认证的原因;
     (3)用户的账号和密码存储
  虚拟账号:仅用于访问某服务时用到的认证标识;
  存储位置:文本文件、SQL数据库、ldap轻量级目录访问协议、nis

    2.basic认证演示:
       (1)在主配置文件中定义安全域
<Directory "…  ...">

Options  … ...
定义资源访问属性方法
AllowOverride None
是否允许在.htaccess存放
AuthType Basic
指明认证类型
AuthName  "STRING"
认证提示框信息,通过字符串给出即可
AuthUserFile  "/PATH/TO/HTTPD_USER_PASSWD_FILE"
认证时候用户的账号密码文件
Require user  username1 username2 …
可登陆的用户
允许账号文件中所有用户登录:Require  valid-user
</Directory>

       (2) 提供账号和密码存储(文本文件)
      htpasswd[options] passwordfile username
           -h: 获取帮助
-c:自动创建passwordfile,因此,仅应该在添加第一个用户时使用;
-m:md5加密用户密码;
-s:sha1加密用户密码;
-D:删除指定用户
       (3) 实现基于组进行认证
<Directory  "">        

Options  … ...
定义资源访问属性方法
AllowOverride None
是否允许在.htaccess存放
AuthType  Basic

AuthName  "STRING"

AuthUserFile  "/PATH/TO/HTTPD_USER_PASSWD_FILE"

AuthGroupFile  "/PATH/TO/HTTPD_GROUP_FILE"

Require group  GROUP1 GROUP2 …

</Directory>        

要提供:用户账号文件和组文件;
组文件:每一行定义一个组,自己创建一个文件即可
GRP_NAME:user1 user2  user3 ...
示例:
<Directory"/www/htdocs/admin">
    Options None
    AllowOverride None
    AuthType Basic
    AuthName "Administator private"
    AuthUserFile"/etc/httpd/conf.d/.htpasswd"
    AuthGroupFile"/etc/httpd/conf.d/.htgroup"
    Require group webadmin
</Directory>




四、httpd虚拟主机配置
   1.实现方案:
         基于ip:为每个虚拟主机准备至少一个ip地址;
         基于port:为每个虚拟主机使用至少一个独立的port;
         基于FQDN:为每个虚拟主机使用至少一个FQDN;
             注意:
       1)一般虚拟机不要与中心主机混用;因此,要使用虚拟主机,得先禁用"main"主机;
      2)配置"main"的一些指令,虚拟主机同样适用
     3)通过Http协议的报文首部来进行识别判断访问

   2.虚拟主机的配置方法:
<VirtualHost  IP:PORT>
ServerNameFQDN
DocumentRoot  "  "
</VirtualHost>
         (1)基于IP的虚拟主机示例:
<VirtualHost172.16.100.6:80>
ServerNamewww.a.com
DocumentRoot"/www/a.com/htdocs"
</VirtualHost>
<VirtualHost172.16.100.7:80>
ServerNamewww.b.net
DocumentRoot"/www/b.net/htdocs"
</VirtualHost>
<VirtualHost172.16.100.8:80>
ServerNamewww.c.org
DocumentRoot"/www/c.org/htdocs"
</VirtualHost>
         (2)基于端口的虚拟主机:
<VirtualHost172.16.100.6:80>
ServerNamewww.a.com
DocumentRoot"/www/a.com/htdocs"
</VirtualHost>
<VirtualHost172.16.100.6:808>
ServerNamewww.b.net
DocumentRoot"/www/b.net/htdocs"
</VirtualHost>
<VirtualHost172.16.100.6:8080>
ServerNamewww.c.org
DocumentRoot"/www/c.org/htdocs"
</VirtualHost>
         (3)基于FQDN的虚拟主机:
NameVirtualHost172.16.100.6:80
<VirtualHost172.16.100.6:80>
ServerNamewww.a.com
DocumentRoot"/www/a.com/htdocs"
</VirtualHost>
<VirtualHost172.16.100.6:80>
ServerNamewww.b.net
DocumentRoot"/www/b.net/htdocs"
</VirtualHost>
<VirtualHost172.16.100.6:80>
ServerNamewww.c.org
DocumentRoot"/www/c.org/htdocs"
</VirtualHost>                                       
   注意:http2.2配置基于FQDN的虚拟主机时候需要指明NameVirtualHost



五、内置的status页面
   1.配置信息:
实例:基于URL访问路径
         <Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 172.16
          </Location>
   2.重启服务
[root@localhostconf.d]# service httpd reload
Reloadinghttpd:
注意:此处应为不能给其他人所见,所以一般会和基于用户的认证去配置
wKioL1aVBLuRa-CNAAFza1-pCow185.jpg
Apache Server  Status for 172.16.249.210
172.16.249.210Apache服务器状态
Server Version:  Apache/2.2.15 (Unix) DAV/2
pache服务器版本
Server Built: Jul  24 2015 11:52:28

Current Time:  Tuesday, 12-Jan-2016 21:15:24 CST

Restart Time:  Tuesday, 12-Jan-2016 21:14:40 CST

Parent Server  Generation: 1

Server uptime: 43  seconds

1 requests  currently being processed, 7 idle workers

_W______........................................................
................................................................
................................................................
................................................................
目前启动的进程和状态
每个字母、短下划线和点表示一个进程
此处有256个进程
Scoreboard Key:
"_"  Waiting for Connection, "S" Starting up, "R" Reading  Request,
"W"  Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C"  Closing connection, "L" Logging, "G" Gracefully  finishing,
"I" Idle  cleanup of worker, "." Open slot with no current process
状态解释
PID Key:
   3390 in state: _ ,   3391 in state: W ,   3392 in state: _
   3393 in state: _ ,   3394 in state: _ ,   3395 in state: _
   3396 in state: _ ,   3397 in state: _ ,
显示进程的进程号、状态



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-163678-1-1.html 上篇帖子: apache检测配置时有警告apachectl -t 下篇帖子: Apache 配置虚拟主机
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表