站点:httpd.apache.org
1)web请求的基本过程
建立连接
接受请求
处理请求
获取资源
构建响应
发送响应
记录日志
2)web服务器输入输出结构
单线程I/O模型
多线程I/O结构模型
复用的I/O结构:单个线程响应多个请求
复用多线程的I/O结构:多个线程,每个线程响应多个请求
3)http:模块化
core+modules:模块化设计
DSO:dynamic shared object动态装载模块
MPM:multipath processin module多道处理模块,非一个模块,而是对一种特性的称谓。
4)常用的工作模式:
prefork模式使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。prefork的无线程设计在某些情况下将比worker更有优势:它可以使用那些没有处理好线程安全的第三方模块,并且对于那些线程调试困难的平台而言,它也更容易调试一些。
worker模式使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的HTTP服务器上,Worker MPM是个比较好的选择,因为Worker MPM的内存使用比Prefork MPM要低得多。但worker MPM也由不完善的地方,如果一个线程崩溃,整个进程就会连同其所有线程一起"死掉".由于线程共享内存空间,所以一个程序在运行时必须被系统识别为"每个线程都是安全的"
event:一个线程响应多个请求。
5)httpd配置文件参数详解。
1,监听套接字。
Listen [ip:]port
默认80
可以出现多次,用于指定监听多个不同的套接字。
例如:
Listen 80
Listen 192.168.1.1:8080
grep "Section" /etc/httpd/conf/httpd.conf
### Section 1: Global Environment 全局配置
### Section 2: ‘Main‘ server configuration 主服务器
### Section 3: Virtual Hosts 虚拟主机
keepalived off关闭了持久连接
on开启后相关联的是超时和限制最大请求连接数。
2)配置使用keep alive
keepAlived{on|off}
keepalivedtimeout 2超时时间
maxkeepaliverequests 50最大请求连接数。
3)MPM
httpd -l查看默认模块。
vim /etc/sysconifg/httpd
HTTPD=/usr/sbin/httpd.worker直接改配置文件。重启即可更换工作模式。
<IfModule prefork.c>判断模块是否存在。httpd -l查看模块
StartServers 8默认启动的工作进程数
MinSpareServers 5最少空闲进程数
MaxSpareServers 20最大空闲进程数
ServerLimit 256最大活动进程数
MaxClients 256最大并发连接数
MaxRequestsPerChild 4000每个子进程在生命周期内所能够服务的最多请求个数;每个子进程最大所允许服务的请求个数。
</IfModule>
<IfModule worker.c>
StartServers 4启动的子进程的个数
MaxClients 300并发请求的最大数
MinSpareThreads 25最小空闲线程数
MaxSpareThreads 75最大空闲线程数
ThreadsPerChild 25每个子进程最多生成的线程数
MaxRequestsPerChild 0每个子进程在生命周期内所能服务的最多请求个数,0表示不限定。
</IfModule>
4)DSO模块的加载方式。
LoadModule module_name /path/to/module
httpd -M列出已装载的所有dso模块
httpd -l:列出支持使用的非dso模块
取消模块也是在配置文件中,把加载的模块用#号取消。
5)配置站点根目录
DocumentROot /path/to/somewhere默认是var/www/html
6)配置页面访问属性
<Directory "/path/to/somewhere">
Options:
Indexes:缺少指定默认页面时,允许将目录中的所有文件以列表形式返回给用户。
FollowSymlinks:允许跟随符号链接所指向的原始文件。
None:所有选项都不启用
All:所有都启用
ExecCGI:允许使用mod_cgi模块执行cgi脚本。
Includes:允许使用mod_include模块实现服务器的包含(杀死);
Multviews:允许使用mod_negotiation实现内容协商。
SymlinksIfownermatch:在连接文件属主属组与原始文件的属主属组相同时,允许跟随符号链接所指向的原始文件。
</Directory>
7)基于主机的访问控制。
<Directory "/path/to/somewhere">
options
Allowoverride None
order Allow,deny没有允许的都拒绝,order deny allow没有拒绝的都允许。
allow
deny
<directory>
order allow,deny表示允许所有人
allow from all
二者都匹配或二者都无法匹配项时,则以后者为准,否则,则以匹配到的为准。
最佳匹配:从列表中找到最小的能匹配到访问者的地址的条目为最终生效的。
8)定义默认主页面
directoryIndex index.php index.html 一次寻找。
9)用户目录
用户创建个人站点。http://server_ip/~username/
Userdir disable表示禁止
userdir public_html
public_html是用户目录下的目录名称,所有位于此目录中的文件均可通过前述的访问路径进行访问。 用户的家目录得赋予运行httpd进程的用户拥有执行权限;
UserDir disable这个禁用掉。
在配置文件中开启UserDir public_html就能使用用户的家目录了。
useradd hadoop
su - hadoop
mkdir /home/public_html
vim /home/public_html/创建网页
setfacl -m u:apache:x /home/hadoop
10)配置日志功能。
/var/log/httpd/
access.log:访问日志,其需要记录的内容需要自定义。
error.log:错误日志
访问日志:
CustomLog ”/path/to/access_log_file" LogFormat_Name
LogFormat
httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats 日志访问链接
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}
%h:客户端地址
%l:远程登录名,通常为-
%u:认证时的远程用户名,没有认证时为-
%t:收到请求的时间。
%r:请求报文的起始行。
%>s:响应状态码。
%b:响应报文的长度,单位为字节数。
%{HEader_Name}i:记录指定请求报文首部的内容(value)
%U:表示请求的Url。
错误日志:
ErrorLog
11)路径别名
Alias /images/ "/data/imgs" 定义别名。
访问images的内容来自imgs
Alias /alias/ "/path/to/somewhere"
意味着访问http://Server_IP/alias/时,其页面文件来自于/path/to/somewhere这个位置
12)设定默认字符集。
AddDefaultCharset UTF-8有时需要改变字符集。
13)CGI脚本路径别名
URL --》FileSystem Directory
CGI:通用网关接口,一种协议。Common Gateway Interface。
CGI:web和某个环境下的应用程序进行通信,从通信环境中获取结果。
mod_alias实现别名的
mod_cgi:实现cgi解析的。
Content-Type:text/html
SUID,SGID。
ScriptAlias /URL/ "/path/to/somewhere/"
#/bin/bash
cat <<EOF
content-Type: text/html
<pre>
<h1>The hostname is: `hostname`.</h1>
The time is: `date`.
</pre>
EOF
本文出自 “落叶飘远方” 博客,请务必保留此出处http://shunzi.blog.51cto.com/8289655/1379369
第二章之httpd配置文件详解,布布扣,bubuko.com
原文:http://shunzi.blog.51cto.com/8289655/1379369