# yum install httpd -y
httpd的主要目录
/etc/httpd/conf/httpd.conf 主配置文件
/etc/httpd/conf.d 子配置文件目录
/var/log/httpd/ 日志文件目录(access.log error.log)
/etc/httpd/modules 模块文件的目录
/var/www/html 默认网站根目录
# service httpd start
# chkconfig httpd on
# chkconfig --list httpd
/etc/httpd/conf/httpd.conf
配置1:配置prefork模块功能
<<< 判断是否在使用prefork模块,如果在使用,那么下面的参数生效
StartServers 8 <<< 启动httpd的时候,启动几个子进程
MinSpareServers 5 <<< 最少空闲子进程数
MaxSpareServers 20 <<< 最多空闲子进程数
ServerLimit 256 <<< 最多活动子进程数
MaxClients 256 <<< 最大并发数
MaxRequestsPerChild 4000 <<< 设置当子进程处理了多少个请求后,就立刻回收该子进程
配置2:配置长连接功能
KeepAlive Off|On
MaxKeepAliveRequests 100 <<< 长链接处理请求的最大值,超过则断开keepalive
KeepAliveTimeout 15 <<< keepAlive的断开时间
配置3:配置httpd监听的套接字
Listen 80 <<< 监听所有IP的80端口
Listen 10.220.5.190:80 <<< 监听10.220.5.190的80端口
配置4:配置worker模块功能
StartServers 4 <<< 启动4个子进程
MaxClients 300 <<< 最大并发数
MinSpareThreads 25 <<< 最少空闲线程数
MaxSpareThreads 75 <<< 最多空闲线程数
ThreadsPerChild 25 <<< 每个子进程可以创建多个线程
MaxRequestsPerChild 0 <<< 设置当子进程处理了多少个请求后,就立刻回收该子进程(0永不回收)
配置5:配置DSO
模块
装载:LoadModule ModuleName /path/to/module
补充:
httpd -M:显示所有模块(包括DSO 和 非DSO模块)
httpd -l:显示仅仅是可以使用的非DSO模块
配置6:配置网站根目录
DocumentRoot
默认:/var/www/html
说明:
访问网站的时候,比如10.220.5.180 的是,默认是去网站根目录下找资源,也就是/var/www/html找资源
现在资源/var/www/html下的jd目录中,因此找资源的方式,就需要在ip后指定资源所在的目录
配置7:配置默认主页
当客户端没有指定要请求哪个文件,那么就自动发送给客户端一个默认文件,这就是默认首页
DirectoryIndex
配置8:访问控制
控制的范围:
整个网站做控制
网站的某个页面、目录做控制
options
FollowSymLinks:允许通过符号连接的方式来访问网站根目录下的资源的文件
Indexes:如果用户没有指定所请求的文件,而且系统中也找不到默认首页,则将全部的文件列表返回给用户
AllowOverride
指定各个目录下的.htaccess中的控制指令是否可以覆盖掉主配置文件中的控制指令
None:忽略各个目录下的.htaccess
All:用各个目录下的.htaccess中的配置覆盖掉主配置文件中的控制指令
AuthConfig:实现基于用户名/密码的访问控制
对用户的访问控制
1. 基于IP的访问控制
2. 基于用户和密码的访问控制
配置9:基于IP的访问控制
Order:指定次序
Order Allow Deny
Order Deny Allow
【后面的那个是默认值】
Allow from 指定允许访问的主机列表
Deny from 指定禁止访问的主机列表
【多条规则的组合结果】
指定主机列表
192.168.5.123
192.168.5.0/24
192.168.5
例子
Order Allow Deny
Allow from 192.168.5.123 192.168.5.124
Deny from 192.168.5.123
Order Allow Deny
只匹配到allow,按allow处理
只匹配到deny,按deny处理
如果两个都匹配到了,则按照默认规则处理
如果两个都没有匹配到了,则按照默认规则处理
配置10:用户目录
每个系统用户的家目录其实都可以做成一个网站的根目录,访问该用户家目录下的网站的方式
http://ip:port/~userName
配置11:日志
访问日志:
定义:
日志格式:LogFormat 格式信息 格式名称
%h:远程主机的IP地址
%t:请求时间
%l:客户端登录网站所用的用户名,客户端没有登录,显示 -
%u:远程用于做身份认证的用户名,如果没有做认证,显示 -
%r:请求报文的第一行(请求方法,请求的uri,请求的版本号)
%s:服务器端所返回的状态值
\"%{Referer}i\":显示该用户的请求是否为跳转过来的,如果不是跳转来的,显示 -
\"%{User-Agent}i\":客户端的浏览器类型
日志位置:CustomLog 保存位置 格式名称
配置12:设置字符集
AddDefaultCharset UTF-8
配置13:配置路径别名
Alias /error/ "/var/www/error/"
注意:
结尾必须相同
配置14:配置CGI
CGI:Common Gateway Interface,是一种协议
作用:运行让用户请求一个脚本,然后将脚本的执行结果返回给客户端,这里就用到了CGI协议,CGI协议就是让apache启动一个解释器来执行脚本程序,然后将执行的结果发送给客户端
脚本要想使用CGI执行,并给客户端返回结果,脚本的输出格式是固定
第一行:Content-Type: text/html
第二行:空白行
第三行:这行开始是脚本的正文
a.sh
#!/bin/bash
echo "Content-Type: text/html"
echo ""
echo "my name is :`hostname`"
echo "date is: `date`"
CGI找脚本的位置
ScriptsAlias /cgi-bin/ "/var/www/cgi-bin/"
配置15:配置虚拟主机功能
案例:http基于域名的虚拟主机的实现
发布多个网站
在网站跟目录下,创建多个子目录,每个子目录是一个网站
每个网站--虚拟主机
虚拟主机:用一个apache发布多个网站
1:不同的网站用不同的端口
2:不同的网站用不同的IP
3:不同的网站用不同的域名
配置16:状态页面
通过一个页面来显示服务器的状态
功能依赖一个DSO模块:status_module
<<< 指定如何访问这个状态页面
SetHandler server-status <<< 指定做状态统计的处理器
Order deny,allow
Deny from all <<< 拒绝所有用户
Allow from x.x.x.x <<< 指定可以访问这个页面的客户端列表
说明
一个点就表示一个可以启动,但是尚未启动的进程
一个_ 表示一个等待使用的进程
如果一个进程被使用,位置上就会出现一个字母
配置17:页面压缩
功能依赖一个DSO模块:deflate_module
作用:减少传输的数据量,但是带来额外的系统开销
SetOutPutFilter DEFLATE <<< 启动页面压缩功能
AddOutPutFilterByType DEFLATE text/html <<< 指定对什么类型的文件做压缩
AddOutPutFilterByType DEFLATE text/image
DeflateCompressionLevel 9 <<< 指定压缩比
配置18:基于用户的访问控制
范围
整个网站
某一个或者多个目录
虚拟用户
用户控制相关模块
1:auth:指定认证方式
basic:基本认证,也就是用户名+密码(明文)
digest:基于摘要方式做认证(hash)
2. authn:指定认证的提供者(用于做认证的信息的保存位置)
3. auzhz:指定授权机制
------做运维之前很矫情的小年轻-----