一、程序文件组成

CentOS 7程序环境:yum安装httpd-2.4

官方帮助文档:http://httpd.apache.org/docs/2.4/

配置文件:

/etc/httpd/conf/httpd.conf

/etc/httpd/conf.d/*.conf

检查配置文件语法:

httpd –t

服务单元文件: /usr/lib/systemd/system/httpd.service

配置文件:/etc/sysconfig/httpd

服务控制和启动:

systemctl enable|disable httpd.service

systemctl {start|stop|restart|status|reload} httpd.service

站点网页文档根目录:

/var/www/html

模块文件路径:

/etc/httpd/modules    #下面文件的软连接

/usr/lib64/httpd/modules

主程序文件:

/usr/sbin/httpd

主进程文件:

/etc/httpd/run/httpd.pid

日志文件目录:

/var/log/httpd

access_log: 访问日志

error_log:错误日志

帮助文档包:

httpd-manual

二、配置讲解

1、显示服务器版本信息

ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full     #各种类型

http://httpd.apache.org/docs/2.4/mod/core.html#servertokens   各种类型的格式

HTTPD2.4文件组成及常见配置_第1张图片

vi /etc/httpd/conf.d/test.conf

ServerTokens Prod    #   建议使用

HTTPD2.4文件组成及常见配置_第2张图片

2、修改监听的IP和port

Listen [IP:]PORT

(1) 省略IP表示为本机所有IP

(2) Listen指令至少一个,可重复出现多次

Listen 80

Listen 8080

HTTPD2.4文件组成及常见配置_第3张图片

3、持久连接

Persistent Connection:连接建立,每个资源获取完成后不会断开连

接,而是继续等待其它的请求完成,默认关闭持久连接

断开条件:时间限制:以秒为单位, 默认5s,httpd-2.4 支持毫秒级

副作用:对并发访问量大的服务器,持久连接会使有些请求得不到响应

折中:使用较短的持久连接时间

设置:KeepAlive On|Off

KeepAliveTimeout 15

模拟测试:telnet 192.168.12.27 80

GET /URL HTTP/1.1

Host: 192.168.12.27

4、

DSO: Dynamic Shared Object

加载动态模块配置,不需重启即生效

/etc/httpd/conf/httpd.conf

Include conf.modules.d/*.conf

httpd -M  #查看所有模块,如果需要注释对应模块即可

httpd -l   #查看静态模块,核心模块

添加模块示例:LoadModule auth_basic_module modules/mod_auth_basic.so

5、MPM( Multi-Processing Module)多路处理模块

prefork, worker, event

切换使用的MPM(centos6中不能)

/etc/httpd/conf.modules.d/00-mpm.conf

启用要启用的MPM相关的LoadModule指令即可

prefork的配置:  (默认使用)一个进程下面有若干子进程,由子进程提供服务,默认4个子进程,现有进程不够用会自动开启

vi /etc/httpd/conf.d/test.conf

StartServers 8     #初始子进程建议调大

MinSpareServers 5

MaxSpareServers 20

ServerLimit 256              最多进程数,最大值 20000  preforw模式下最大200000

MaxClients 256              最大的并发连接数,2.4官方文档没有说明,2.2中有,不加的话子进程数不会改变

MaxRequestsPerChild 4000     子进程最多能处理的请求数量。在处理MaxRequestsPerChild 个

请求之后,子进程将会被父进程终止,这时候子进程占用的内存就会释放(为0时永远不释放)

worker的配置:    一个进程下面若干子进程,由子进程下面的线程提供服务,

ServerLimit 16

StartServers 2

MaxRequestWorkers 150

MinSpareThreads 25

MaxSpareThreads 75

ThreadsPerChild 25

event MPM单线程响应多请求,占据更少的内存,高并发下表现更优秀,会有一个专门的线

程来管理keep-alive类型的线程

6、定义'Main' server的文档页面路径

DocumentRoot “/path”

文档路径映射:

DocumentRoot指向的路径为URL路径的起始位置

示例:

DocumentRoot "/data/html“     2.4版本只改这一行不行,需要授权,2.2可以直接修改

Require all granted

文件是软连接,在其他目录也可以访问

HTTPD2.4文件组成及常见配置_第4张图片

7、定义站点主页面

DirectoryIndex index.html  index.php

8、站点访问控制常见机制

可基于两种机制指明对哪些资源进行何种访问控制

访问控制机制有两种:客户端来源地址,用户账号

文件系统路径:

  限制文件夹

...

    限制文件

...

  支持通配符

...

   #示例

require all denied

require ip 192.168.12.1 192.168.12.27

SetHandler server-status

9、中“基于源地址”实现访问控制 可以加在上一步的

(1) Options:后跟1个或多个以空白字符分隔的选项列表

在选项前的+,- 表示增加或删除指定选项

常见选项:

Indexes:指明的URL路径下不存在与定义的主页面资源相符的资源文件时,返回索引列表给用户

HTTPD2.4文件组成及常见配置_第5张图片

FollowSymLinks:允许访问符号链接文件所指向的源文件

HTTPD2.4文件组成及常见配置_第6张图片

None:全部禁用

All: 全部允许

(2) AllowOverride

与访问控制相关的哪些指令可以放在指定目录下的.htaccess(由AccessFileName指定)文件中,覆盖之前的配置指令

只对语句有效,可以将上面options的配置放在网站目录下的.htaccess文件中

AllowOverride All: .htaccess中所有指令都有效 

AllowOverride None: .htaccess 文件无效

AllowOverride AuthConfig .htaccess 文件中,除了AuthConfig 其它指令都无法生效

(3) 基于IP的访问控制:

无明确授权的目录,默认拒绝

允许所有主机访问:Require all granted

拒绝所有主机访问:Require all denied

控制特定的IP访问:

Require ip IPADDR:授权指定来源的IP访问

Require not ip IPADDR:拒绝特定的IP访问

控制特定的主机访问:

Require host HOSTNAME:授权特定主机访问

Require not host HOSTNAME:拒绝

不能有失败,至少有一个成功匹配才成功,即失败优先

Require all granted

Require not ip 172.16.1.1 拒绝特定IP

多个语句有一个成功,则成功,即成功优先

Require all denied

require ip 172.16.1.1 允许特定IP

10、日志设定

日志类型:访问日志、错误日志

错误日志:

ErrorLog logs/error_log

LogLevel warn

LogLevel 可选值: debug, info, notice, warn,error, crit, alert, emerg

访问日志:

定义日志格式:LogFormat format strings

LogFormat "%h %l %u %{%F %T}t \"%r\" %>s %b \"%{Referer}i\"

\"%{User-Agent}i\"" testlog

使用日志格式:

CustomLog logs/access_log testlog

http://httpd.apache.org/docs/2.4/mod/mod_log_config.html#formats   官方帮助文档

11、设定默认字符集

AddDefaultCharset UTF-8 此为默认值

中文字符集:GBK, GB2312, GB18030

基于模块mod_userdir.so实现

相关设置:

12、实现家目录共享

vim /etc/httpd/conf.d/userdir.conf   修改该文件即可

#UserDir disabled

UserDir public_html #指定共享目录的名称

准备目录

su – sun;mkdir ~/public_html

echo homesun > ~/sun/public_html/index.html

setfacl –m u:apache:x  ~sun

访问


HTTPD2.4文件组成及常见配置_第7张图片

13、status页面

LoadModule status_module modules/mod_status.so

SetHandler server-status

ExtendedStatus On 显示扩展信息