一、安装apache
首先yum方式安装http2.2# yum install httpd -yhttpd的主要目录/etc/httpd/conf/httpd.conf 主配置文件/etc/httpd/conf.d 子配置文件目录/var/log/httpd/ 日志文件目录(access.log error.log)/etc/httpd/modules 模块文件的目录/var/www/html默认网站根目录
启动httpd
# service httpd start# chkconfig httpd on# chkconfig --list httpd
二、配置文件/etc/httpd/conf/httpd.conf
配置1:配置prefork模块功能
<IfModule prefork.c><<< 判断是否在使用prefork模块,如果在使用,那么下面的参数生效StartServers 8 <<< 启动httpd的时候,启动几个子进程MinSpareServers 5 <<< 最少空闲子进程数MaxSpareServers 20 <<< 最多空闲子进程数ServerLimit256 <<< 最多活动子进程数MaxClients 256 <<< 最大并发数MaxRequestsPerChild 4000<<< 设置当子进程处理了多少个请求后,就立刻回收该子进程</IfModule>
配置2:配置长连接功能
KeepAlive Off|OnMaxKeepAliveRequests 100 <<< 长链接处理请求的最大值,超过则断开keepaliveKeepAliveTimeout 15<<< keepAlive的断开时间
配置3:配置httpd监听的套接字
Listen 80<<< 监听所有IP的80端口Listen 10.220.5.190:80 <<< 监听10.220.5.190的80端口
配置4:配置worker模块功能
<IfModule worker.c>StartServers 4 <<< 启动4个子进程MaxClients 300 <<< 最大并发数MinSpareThreads25 <<< 最少空闲线程数 MaxSpareThreads75 <<< 最多空闲线程数 ThreadsPerChild25 <<< 每个子进程可以创建多个线程MaxRequestsPerChild 0 <<< 设置当子进程处理了多少个请求后,就立刻回收该子进程(0永不回收)</IfModule>
配置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:访问控制
<Directory /path/to/control>控制的范围:整个网站做控制网站的某个页面、目录做控制</Directory>optionsFollowSymLinks:允许通过符号连接的方式来访问网站根目录下的资源的文件Indexes:如果用户没有指定所请求的文件,而且系统中也找不到默认首页,则将全部的文件列表返回给用户AllowOverride指定各个目录下的.htaccess中的控制指令是否可以覆盖掉主配置文件中的控制指令None:忽略各个目录下的.htaccessAll:用各个目录下的.htaccess中的配置覆盖掉主配置文件中的控制指令AuthConfig:实现基于用户名/密码的访问控制对用户的访问控制1. 基于IP的访问控制2. 基于用户和密码的访问控制
配置9:基于IP的访问控制
Order:指定次序Order Allow DenyOrder Deny Allow【后面的那个是默认值】Allow from 指定允许访问的主机列表Deny from 指定禁止访问的主机列表【多条规则的组合结果】指定主机列表192.168.5.123192.168.5.0/24192.168.5例子Order Allow DenyAllow from 192.168.5.123 192.168.5.124 Deny from 192.168.5.123Order 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/bashecho "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:不同的网站用不同的IP3:不同的网站用不同的域名
配置16:状态页面
通过一个页面来显示服务器的状态功能依赖一个DSO模块:status_module<Location /server-status> <<< 指定如何访问这个状态页面SetHandler server-status <<< 指定做状态统计的处理器Order deny,allowDeny from all<<< 拒绝所有用户Allow from x.x.x.x<<< 指定可以访问这个页面的客户端列表</Location>说明一个点就表示一个可以启动,但是尚未启动的进程一个_ 表示一个等待使用的进程如果一个进程被使用,位置上就会出现一个字母
配置17:页面压缩
功能依赖一个DSO模块:deflate_module作用:减少传输的数据量,但是带来额外的系统开销SetOutPutFilter DEFLATE <<< 启动页面压缩功能<IfModule mod_deflate.c>AddOutPutFilterByType DEFLATE text/html <<< 指定对什么类型的文件做压缩AddOutPutFilterByType DEFLATE text/imageDeflateCompressionLevel 9 <<< 指定压缩比</IfModule>
配置18:基于用户的访问控制
范围整个网站某一个或者多个目录虚拟用户用户控制相关模块1:auth:指定认证方式basic:基本认证,也就是用户名+密码(明文)digest:基于摘要方式做认证(hash)2. authn:指定认证的提供者(用于做认证的信息的保存位置)3. auzhz:指定授权机制
------做运维之前很矫情的小年轻-----