httpd(2.2&2.4)RPM搭建配置定义详解

一、RPM包安装配置程序环境

1.CentOS6系列(默认httpd2.2)

(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:为路径时,是否区分字符大小写,取决于文件系统;


[[email protected]  ~]#  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模块

[[email protected] /]# ps  aux  |grep httpd显示主控进程(root)和服务启动进程(apache)

默认使用的为/usr/sbin/httpd,其为prefork的MPM模块;

(2)查看httpd程序的模块列表:

查看静态编译的模块:  #httpd  -l

查看静态编译及动态编译的模块:#httpd  -M

(3)更换使用httpd程序,以支持其它MPM机制;

编辑/etc/sysconfig/httpd文件中"HTTPD=/usr/sbin/httpd.{worker,event}",取消注释#

注意:重启服务进程方可生效

(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/

若不需要启用该模块,仅需用#将其注释即可

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"首部的值;即发出请求用到的应用程序;

LogFormatformatstrings:详情:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats

三、基于用户的访问控制配置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.重启服务

[[email protected]]# service httpd reload

Reloadinghttpd:

3.访问:http://172.16.249.210/server-status

注意:此处应为不能给其他人所见,所以一般会和基于用户的认证去配置


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: _ ,


显示进程的进程号、状态

httpd(2.2&2.4)RPM搭建配置定义详解

时间: 2024-10-07 08:46:53

httpd(2.2&2.4)RPM搭建配置定义详解的相关文章

LAMP平台搭建及其原理详解

LAMP平台搭建及其原理详解 LAMP平台搭建基础概念 LAMP:提到LAMP很多人会认为LAMP是Linux ,Apache,Mysql,PHP.但是随着技术的不断发展,当今的Lamp,已经不仅仅是这么简单了,这里我们的P除了PHP其实还包括:phython,perl    .而M也不仅仅指的是mysql,也包括mariadb. LAMP平台顾名思义就是Linux,apache,mysql(mariadb),php(phython,perl)的结合.按照他们的结合方式不同,大致可以分成三类:

HTTP常用配置信息详解

一.安装httpd 二.相关文件路径 三.配置文件详解 四.转载比较详细的HTTP配置中英文对照 一.安装httpd 1.安装方式:yum源.rpm包.源码包编译安装,这里为了方便使用yum源安装 [[email protected] html]# yum install -y httpd 可以安装本地帮助手册 [[email protected] conf]# yum install -y httpd-manual 访问地址http://httpd主机ip/manual/ 2.开启服务 [[e

Linux rpm 命令参数使用详解[介绍和应用]

RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的"添加/删除程序" rpm 执行安装包 二进制包(Binary)以及源代码包(Source)两种.二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译.安装.源代码包经常以src.rpm作为后缀名. 常用命令组合: -ivh:安装显示安装进度--install--verbose--hash -Uvh:升级软件包--Update: -qpl:列出RPM软件包内的文件信息[Q

DNS服务器的搭建与使用详解

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析).DNS协议运行在UDP协议之上,使用端口号为53. 1.网络环境图示 2.分别在两台服务器ns1和ns2上通过YUM安装Bind软件包 [[email protected] ~]# yum install bind [[email pro

eclipse Indigo搭建SSH框架详解

SSH框架是最常用的框架之一,在搭建SSH框架的时候总有人遇到这样,那样的问题.下面我介绍一下SSH框架搭建的全过程. 第一步:准备工作.   下载好eclipse,Struts2,Spring,Hibernate.   1.eclipse:eclipse下载的时候建议下载JavaEE版的eclipse.                 当然你也可以下载eclipse-SDK.(下载eclipse-SDK需要下载Web,Tomcat等plugins)   2.Struts2:http://str

apache2.2虚拟主机配置教程详解

apache2.2虚拟主机配置教程详解 一.修改httpd.conf 打开appserv的安装目录,找到httpd.conf文件,分别去掉下面两行文字前面的#号. #LoadModule vhost_alias_module modules/mod_vhost_alias.so 去掉#意思是启用apache的虚拟主机功能. #Include conf/extra/httpd-vhosts.conf 去掉这一行的#意思是从conf/extra/httpd-vhosts.conf这个文件导入虚拟主机

idea spring+springmvc+mybatis环境配置整合详解

idea spring+springmvc+mybatis环境配置整合详解 1.配置整合前所需准备的环境: 1.1:jdk1.8 1.2:idea2017.1.5 1.3:Maven 3.5.2 2.查看idea中是否安装Maven插件: 2.1:File --> Settings --> Plugins 2.2:如下图所示的步骤进行操作(注:安装完插件,idea会重新启动) 3.idea创建Maven项目的步骤 4.搭建目录结构 下图就是我搭建Maven项目之后,添加对应的目录和文件 5.p

MHA实现mariadb的高可用的详细步骤及配置参数详解

MHA实现mariadb的高可用的详细步骤及配置参数详解 A. 实验环境说明 a) 4台centos7主机 b) 角色说明: a. MHA:192.168.36.35 b. Master_mariadb:192.168.36.121 c. Slave_mariadb:192.168.36.120 d. Slave_mariadb:192.168.36.27 B. 安装程序包 a) mariadb上安装: mariadb-server 版本:5.5.60 mha4mysql-node -0.56-

使用RPM软件包管理命令详解

RPM软件包是各种Linux发行版本中应用较为广泛的软件包之一.RPM软件包以其强大的功能得到了多数Linux发行版本的支持和广大Linux使用者的爱护. RPM软件包管理机制最早是由 Red Hat公司提出的,后来随着版本的升级逐渐融入更多的优秀特性,称为众多Linux发行版中公认的软件包管理标准,官方站点https://www.rpm.org 使用RPM软件包管理器通过建立统一的文件数据库,对在Linux操作系统中安装.卸载.升级的各种.rpm软件包进行详细的记录,并能够自动分析软件包之间的