www.httpd.apace.org
httpd:
事先创建进程
按需维持适当的进程
模块设计,核心比较小,各种功能都模块添加
支持运行配置,支持单独编译模块
支持多种方式的虚拟主机配置
Socket IP:Port
虚拟主机:
基于IP的虚拟主机;
基于端口的虚拟主机;
基于域名的虚拟主机;
支持https协议 (mod_ssl)
支持用户认证
支持基于IP或主机名的acl
支持每个目录的访问控制
支持URL重写,/image/a.jpeg, /bbs/images/a.jpeg
安装:
1.rpm包
2.源码编译
httpd:SELinux(事先关闭)
httpd:
/usr/sbin/httpd(MPM:prefork)
httpd: root:root 主导进程,管理空闲进程(master process)
httpd: apche:apche (worker process))
/etc/rc.d/init.d/httpd
Port: (80/tcp),(ssl:443/tcp)
/etc/httpd:工作的根目录,相当于程序安装的目录
/etc/httpd/conf:配置文件目录
主配置文件:httpd.conf
/etc/httpd/conf.d/*.conf
/etc/httpd/modules:模块目录
/etc/httpd/logs--> /var/log/httpd:日志目录
日志文件有两类:访问日志access_log,错误日志:err_log
/var/www/
html静态类容使用的路劲
cgi-bin动态类容使用的路劲
[[email protected] ~]# yum -y install httpd
service httpd start
[[email protected] ~]# ps aux |grep httpd 已经启动了多个空闲进程来准备相应客户
root 1848 0.0 0.3 11372 3332 ? Ss 09:24 0:00 /usr/sbin/httpd
apache 1850 0.0 0.2 11372 2116 ? S 09:24 0:00 /usr/sbin/httpd
apache 1851 0.0 0.2 11372 2116 ? S 09:24 0:00 /usr/sbin/httpd
apache 1852 0.0 0.2 11372 2116 ? S 09:24 0:00 /usr/sbin/httpd
apache 1853 0.0 0.2 11372 2116 ? S 09:24 0:00 /usr/sbin/httpd
apache 1854 0.0 0.2 11372 2116 ? S 09:24 0:00 /usr/sbin/httpd
apache 1855 0.0 0.2 11372 2116 ? S 09:24 0:00 /usr/sbin/httpd
apache 1856 0.0 0.2 11372 2116 ? S 09:24 0:00 /usr/sbin/httpd
apache 1857 0.0 0.2 11372 2116 ? S 09:24 0:00 /usr/sbin/httpd
root 1867 0.0 0.0 5976 728 pts/1 S+ 09:28 0:00 grep httpd
[[email protected] yum.repos.d]# vim /etc/httpd/conf.d/welcome.conf 默认欢迎界面
[[email protected] yum.repos.d]# cd/etc/httpd/conf
[[email protected] conf]# cp httpd.conf httpd.conf.back 备份一下原有的配置文件
[[email protected] conf]# grep "Section" httpd.conf
### Section 1: Global Environment
### Section 2: ‘Main‘ server configuration 主服务器段。和虚拟主机不能同时生效
### Section 3: Virtual Hosts 虚拟主机
[[email protected] conf]# vim httpd.conf
由指令和参数组成。指令不区分大小写
value则根据需要有可能要区分
[[email protected] conf]# yum -y install httpd-manual 安装此包可以自动生成配置文件
[[email protected] conf.d]# cd /etc/httpd/conf.d/
[[email protected] conf.d]# vim manual.conf
[[email protected] conf.d]# service httpd restart 改了配置文件后都需要重启服务器
URL Rewriting Guide 指令参考
默认地,服务器HTTP响应头会包含apache和php版本号。像下面的,这是有危害的,因为这会让黑客通过知道详细的版本号而发起已知该版本的漏洞攻击。
1.Server: Apache/2.2.17 (Unix) PHP/5.3.5
为了阻止这个,需要在httpd.conf设置ServerTokens为Prod,这会在响应头中显示“Server:Apache”而不包含任何的版本信息。
1.# vi httpd.conf
2.ServerTokens Prod
下面是ServerTokens的一些可能的赋值:
ServerTokens Prod 显示“Server: Apache”
ServerTokens Major 显示 “Server: Apache/2″
ServerTokens Minor 显示“Server: Apache/2.2″
ServerTokens Min 显示“Server: Apache/2.2.17″
ServerTokens OS 显示 “Server: Apache/2.2.17 (Unix)”
ServerTokens Full 显示 “Server: Apache/2.2.17 (Unix) PHP/5.3.5″ (如果你这指定任何的值,这个是默认的返回信息)
3.ServerRoot "/etc/httpd"服务器的工作目录
4.PidFile run/httpd.pid 进程的PID号,保存位置在 /etc/httpd/run/httpd.pid
5.Timeout 120 超时间,用户三次握手的等待时间
6.KeepAlive 0ff 是否使用长连接,只要服务器访问了不是很大,打开长连接可以提高效率
7.MaxKeepAliveRequests 100 开启长连接用户最多可以一次请求100个资源,设置为0代表无限次
8.KeepAliveTimeout 15 长连接的断开时长
LoadRunner测试服务器的工具
MPM多道处理模块
mpm_winnt 是专门针对Windows NT优化的MPM(多路处理模块),它使用一个单独的父进程产生一个单独的子进程,在这个子进程中轮流产生多个线程来处理请求。也就是说 mpm_winnt只能启动父子两个进程, 不能像Linux下那样同时启动多个进程。
prefork 一个请求用一个进程响应 ,稳定可靠。性能差
worker 一个请求用一个线程响应,启动多个进程,每个进程生成多个线程
event 一个进程处理多个请求
[[email protected] conf.d]# rpm -ql httpd |grep bin
/usr/sbin/apachectl
/usr/sbin/htcacheclean
/usr/sbin/httpd
/usr/sbin/httpd.event
/usr/sbin/httpd.worker
/usr/sbin/httxt2dbm
/usr/sbin/rotatelogs
/usr/sbin/suexec
/var/www/cgi-bin
/var/www/icons/binary.gif
/var/www/icons/binary.png
/var/www/icons/binhex.gif
/var/www/icons/binhex.png
/var/www/icons/small/binary.gif
/var/www/icons/small/binary.png
/var/www/icons/small/binhex.gif
/var/www/icons/small/binhex.png
[[email protected] conf.d]# vim /etc/sysconfig/httpd
HTTPD=/usr/sbin/httpd.worker 启用以后服务器改成worker模型
[[email protected] conf.d]# vim /etc/httpd/conf/httpd.conf 定义的模型
# prefork MPM
......
<IfModule prefork.c>
StartServers 8 服务器刚开机时定义几个空闲进程
MinSpareServers 5 最少几个空闲进程
MaxSpareServers 20 最大空闲进程
ServerLimit 256 最大客户端数
MaxClients 256 指定ServerLimit上限
MaxRequestsPerChild 4000 每个子进程最多可以响应多少次
</IfModule>
# worker MPM
......
<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25 最小空闲线程
MaxSpareThreads 75 最大空闲线程
ThreadsPerChild 25 一个进程生成多少个线程
MaxRequestsPerChild 0 每个进程最多响应多少个请求0表示不限定
</IfModule>
Listen指定监听的地址和端口,可以同时监听多个端口列如
Listen 80
Listen 8080
LoadModule指定httpd服务启动时装载的模块