httpd-2.4安装配置
接收请求的类型:
并发访问响应模型:
单进程I/O模型:启动一个进程处理用户请求,这意味着一次只能处理一个请求,多个请求被串行响应;
多进程I/O模型:由父进程并行启动多个子进程,每个子进程响应一个请求;
复用的I/O结构:一个进程响应n个请求;
多线程模式:一个进程生成n个线程,一个线程处理一个请求;
事件驱动(event-driven):一个进程直接n个请求
复用的多进程I/O结构:启动多个进程,每个进程生成n个线程;
响应的请求数量:m*n
http的特性:
高度模块化:core+modules
DSO:dynamic shared object
MPM:Multipath processing Modules(多路处理模块)
prefork:多进程模型,每个进程响应一个请求;
一个主进程:负责生成子进程及回收子进程,负责创建套接字,负责接收请求,并将其派发给某子进程进行处理;
n个子进程:每个子进程处理一个请求;
工作模型:会预先生成几个空闲进程,随时等待用于响应用户请求,最大空闲和最小空闲;
worker:多进程多线程模型,每线程处理一个用户请求;
一个主进程:负责生成子进程,负责创建套接字,负责接收请求,并将其派发给某子进程进行处理;
多个子进程:每个子进程负责生成多个线程;
每个线程:负责响应用户请求;
并发响应数量:m*n
m:子进程数量
n:每个子进程所能创建的最大线程数量;
event:事件驱动模型,多进程模型,每个进程响应多个请求;
一个主进程:负责生成子进程,负责创建套接字,负责接收请求,并将其派发给某子进程进行处理;
子进程:基于事件驱动机制直接响应多个请求;
httpd的程序版本:
httpd 1.3:官方已停止维护
httpd 2.0:
httpd 2.2:
httpd 2.4:目前最新稳定版
httpd的功能特性:
CGI:Common Gateway Interface
虚拟主机:IP,PORT,FQDN
反射代理
负载均衡
路径别名
丰富的用户认证机制
basic
digest
支持第三方模块
...
Centos 6:httpd 2.2
程序环境:
配置文件:
/etc/ttpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
服务脚本:
/etc/rc.d/init.d/httpd
脚本配置文件:/etc/sysconfig/httpd
主程序文件:
/usr/sbin/httpd
/usr/sbin/httpd.event
/usr/sbin/httpd.worker
日志文件:
/var/log/httpd:
access_log:访问日志
error_log:错误日志
站点文档:
/var/www/html
模块文件路径:
/usr/lib64/httpd/modules
CentOS 7:httpd-2.4
程序环境:
配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
模块相关的配置文件:/etc/httpd/conf.modules.d
主程序文件:
/usr/sbin/httpd
httpd 2.4支持MPM动态切换
日志文件:
/var/log/httpd:
access_log:访问日志
error_log:错误日志
站点文档:
/var/www/html
模块文件路径:
/usr/lib64/httpd/modules
服务控制:
systemctl enable|disable httpd.service
systemctl {start|stop|restart|status} httpd.service
MPM:prefork,worker,event
prefork:两级进程模型,父进程管理子进程,每个子进程响应一个请求;
worker:三级模型,父进程管理子进程,子进程通过线程响应用户请求,每线程处理一个用户请求;
event:两级模型,父进程管理子进程,子进程通过event-driven机制直接响应n个请求;
httpd-2.4常用配置
主配置文件:/etc/httpd/conf/httpd.conf
###Section 1:Global Environment
###Section 2:'Main' Server configuration
###Section 3:Virtual Hosts
配置格式:
directive value
directive:不区分字符大小写;
value:为路径时,是否区分大小写,取决于文件系统;
常用配置:
1.修改监听的IP和PORT
Listen [IP:]PORT
1.省略IP表示为0.0.0.0
2.Listen指令可重复出现多次
Listen 80
Listen 8080
3.修改监听socket,重启服务进程方可生效;
2.持久连接
Persistent Connection:tcp连接建立后,每个资源获取完成后不全断开连接,而是继续等待其它资源的进程;
如何断开?
数量限制
时间限制
KeepAlive On|Off
KeepAliveTimeout 15
MaxKeepAliveRequests 100
测试:
telnet WEB_SERVER_IP PORT
GET /URL HTTP/1.1
Host:WEB_SERVER_IP
注意:httpd-2.4的KeepAliveTimeout可以是毫秒级
3.MPM
httpd-2.2不支持同时编译多个MPM模块,所以只能编译选定要使用哪个,CentOS 6的rpm包专门提供了三个应用程序文件,httpd(prefork),httpd.worker,httpd,event,分别用于实现对不同的MPM机制的支持,确认现在使用的是哪个程序文件的方法:
ps aux | grep httpd
默认使用的为/usr/sbin/httpd,其为prefork的mpm模块;
查看httpd程序的模块列表;
查看静态编译的模块:
#httpd -l
查看静态编译及动态编译的模块:
#httpd -M
更换 使用httpd程序,以支持其它MPM机制:
/etc/sysconfig/httpd
HTTPD=/usr/sbin/httpd.{worker,event}
注意:重启服务方可生效
MPM配置:
prefork的配置:
<ifModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</ifModule>
worker的配置:
<ifModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChile 25
MaxRequestsPerChild 0
</ifModule>
PV,UV
PV:Page View
UV:User View
IP:
DSO:
配置指定实现模块加载
LoadModule <mod_name> <mod_path>
模块文件路径可使用相对路径:
相对于ServerRoot(默认/etc/httpd)
定义"Main" Server的文档页面路径
ServerName
ServerName [scheme://]fully-qualified-domain-name[:port]
DocumentRoot " "
DocumentRoot directory-path
文档路径映射:
DocumentRoot指向的路径为URL路径的起台位置
其相当于站点URL的根路径;
站点访问控制常见机制
可基于两种机制指明对哪些资源进行何种访问控制
文件系统路径:
<Directory "">
...
</Directory>
<File "">
...
</File>
<FileMatch "PATTERN">
...
</FileMatch>
URL路径:
<Location "">
...
</Location>
<LocationMatch "PATTERN">
...
</LocationMatch>
<Directory>中基于源地址实现访问控制
1.Options
后跟1个或多个以空白字符分割的“选项列表”;
Index:指明URL路径下不存在与定义的主页面资源相符的资源文件时,返回索引列表给用户;
FollowSymLinks:允许跟踪符号链接文件所指向的源文件;
None:
All:
httpd-2.2
1.AllowOverride
与访问控制相关的哪些指令可以放在.htaccess文件(每个目录下都可以有一个)中;
All:
None
2.order和allow、deny
order:定义生效次序,写在后面的表示默认法则;
Alow from,Deny from
来源地址:
IP
NetAddr:
172.16
172.16.0.0
172.16.0.0/16
172.16.0.0/255.255.0.0
httpd-2.4
Requires
日志设定:
日志类型,访问日志,错误日志
错误日志:
Error logs/error_log
LogLevel warn
Possible values include:debug,info,notice,warn,error,crit,alert,emert
访问日志:
LogFormat ""%h%l%u%t\"%r\"%r\"%>s%b\"%{Referer}i\"\"%{User-Agent}|\""combined
CustomLog logs/access_log combined
LogFormat format strings:
http://httpd.apache.org/docs2.2/mod/mod_log_config.html#formats
%h:客户端IP地址
%l:Remote User,通常为一个减号("-")
%u:Remote user(from auth;may be bogus if return status(%s)ls 501);非为登录访问时,其为一个减号;
%t:服务器收到请求的时间;
%r:First line of request,请求报文的首行,记录了此次请求的"方法","URL"以及协议版本
%>s:响应状态码;
%b:响应报文的大小,单位是字节,不包括响应的文的http首部;
%{Referer}i:请求报文中首部"referer"的值,即是从哪个页面中的超链接跳转至当前页面的;
%{User-Agent}:请求报文中首部"User-Agent"的值,即发出请求的应用程序;
基于用户的访问控制
认证质询:
WWW-Authenticate:响应码为401,拒绝客户请求,并说明要求客户端提供账号和密码;
认证:
Authenticate:客户端用户填入账号和密码后再次发送请求报文,认证通过时,则服务器发送响应的资源;
认证方式有两种:
basic:明文
digest:消息摘要认证
安全域:需要用户认证后方能访问的路径,应该通过名称对其进行标识,以便于告知用户认证的原因;
账号存储位置:
文本文件
SQL数据库
ldap目录存储
basic认证配置示例:
1.定义安全域
<Directory "/var/www/html/admin">
Options None
AllowOverride None
AuthType Basic
AuthName "String"
AuthUserFile "/etc/httpd/conf.d/.passwd"
Require user username1 username2 ...
</Directory>
允许账号中的所有用户登录访问:
Require valid-user
2.提供账号和密码存储(文本文件)
使用专用命令完成此类文件的创建及用户管理
htpasswd [options] /etc/httpd/conf.d/.passwd
-c:自动创建指定文件,仅在首次创建使用
-m:md5格式加密
-s:sha格式加密
-b:命令行中直接输入密码
虚拟主机:
基于IP的虚拟主机
<VirtualHost 192.168.2.104:80>
ServerName www.ilinux.com
DocumentRoot "/data/web/ilinux"
<Directory "/data/web/ilinux">
Options None
AllowOverride None
Require all granted
</Directory>
CustomLog "logs/ilinux_access_log" combined
</VirtualHost>
<VirtualHost 192.168.2.105:80>
ServerName www.iunix.com
DocumentRoot "/data/web/iunix"
<Directory "/data/web/iunix">
Options None
AllowOverride None
Require all granted
</Directory>
CustomLog "logs/iunix_access_log" combined
</VirtualHost>
基于端口的虚拟主机
<VirtualHost>
ServerName www.ilinux.com
DocumentRoot "/data/web/ilinux"
<Directory "/data/web/ilinux">
Options None
AllowOverride None
Require all granted
</Directory>
CustomLog "logs/ilinux_access_log" combined
</VirtualHost>
Listen 10080
<VirtualHost 192.168.2.104:10080>
ServerName www.iunix.com
DocumentRoot "/data/web/iunix"
<Directory "/data/web/iunix">
Options None
AllowOverride None
Require all granted
</Directory>
CustomLog "logs/iunix_access_log" combined
</VirtualHost>
基于域名的虚拟主机
<VirtualHost 192.168.2.104:80>
ServerName www.ilinux.com
DocumentRoot "/data/web/ilinux"
<Directory "/data/web/ilinux">
Options None
AllowOverride None
Require all granted
</Directory>
CustomLog "logs/ilinux_access_log" combined
</VirtualHost>
<VirtualHost 192.168.2.104:80>
ServerName www.iunix.com
DocumentRoot "/data/web/iunix"
<Directory "/data/web/iunix">
Options None
AllowOverride None
Require all granted
</Directory>
CustomLog "logs/iunix_access_log" combined
</VirtualHost>
注意:如果是httpd-2.2,则使用FQDN的虚拟主机时,需要事先使用如下指令:
NameVirtualHost IP:PORT
status页面
LoadModule staus_module modules/mod_status.so
httpd-2.2
<Location /server-status>
SetHandler server-status
Order allow,deny
Allow from 192.168
</Location>
httpd-2.4
<Location /server-status>
SetHandler server-status
Require ip 192.168
</Location>
http://www.ilinux.com/server-status
root@node2:~/e/net34#
httpd-2.4安装配置的更多相关文章
- 关于httpd服务的安装、配置
httpd是Apache超文本传输协议(HTTP)服务器的主程序.通常,httpd不应该被直接调用,而应该在linux系统中由 apachectl 调用.接下来我们将了解有关httpd服务的安装与配置 ...
- CentOS 7 httpd服务的安装、配置
关于linux httpd的搭建和配置都需要基于yum源 1:安装httpd yum linstall httpd -y 2:进入html文件 cd /var/www/html 讲已经编辑的htm ...
- httpd的rpm包及源码安装配置
httpd的rpm包及源码安装配置 1.rpm包安装 系统环境: [root@zhaochj ~]# cat /etc/issue CentOS release 6.4 (Final) Kernel ...
- httpd服务的安装、配置
httpd服务是架设网站的必须服务下面我就来说下怎么安装配置 1.安装httpd服务 输入下面命令进行安装(如果没网络或者安装速度慢的请设置本地yum源进行安装,设置教程请点击这里查看) yum in ...
- 6、httpd服务的安装、配置
.本地yum源安装httpd服务 (必须是已搭建好本地yum源) yum install httpd -y (安装httpd) 2.systemctl restart httpd.service ...
- Redhat Server 5.7 安装配置PHP
PHP的简介 PHP于1994年由Rasmus Lerdorf创建,刚刚开始是Rasmus Lerdorf 为了要维护个人网页而制作的一个简单的用Perl语言编写的程序.这些工具程序用来显示 Rasm ...
- Linux下xampp集成环境安装配置方法 、部署bugfree及部署禅道
XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包.XAMPP 是一个易于安装且包含 MySQL.PHP 和 Perl 的 Apache 发行版.XAMPP 的确非 ...
- CentOS 6.6安装配置LAMP服务器(Apache+PHP5+MySQL)
准备篇: CentOS 6.6系统安装配置图解教程 http://www.osyunwei.com/archives/8398.html 1.配置防火墙,开启80端口.3306端口 vi /etc/s ...
- Linux下apache+phppgadmin+postgresql安装配置
Linux下apache+phppgadmin+postgresql安装配置 操作系统:CentOS 安装包:httpd(首选yum), php(包括php以及php-pgsql,php-mbstri ...
- 【环境配置】php5.5 + apache2.4 安装配置【转+修改】
转自 http://my.oschina.net/lilinzero/blog/180509 [转+修改][环境配置]php5.5.10 + apache2.4 安装配置 根据自己的实践所得,稍微修改 ...
随机推荐
- unity UGUI UI跟随
实现2dUI跟随游戏中角色的移动(应用于玩家名称,血条,称号) using UnityEngine; public class UI_Follow : MonoBehaviour { public C ...
- Go 初体验 - 令人惊叹的语法 - defer.3 - defer 函数参数计算时机
defer 函数的参数计算时机 定义一个 defer 函数,接收参数 n: 调用: 输出: 有点惊讶,为什么不是 100 200 200? go 语言里,defer 函数的参数是在定义位置被计算的,也 ...
- [转载]资深程序员点评当前某些对Lotus Domino 的不实评论
实现机关办公自动化工作需要计算机技术的支持,在计算机软件范围中,有网络操作系统软件.数据库软件和开发工具等基本系统软件,在此基础上开发出适合本单位使用的应用软件.对如何选用系统软件,笔者没有发言权,但 ...
- 常用python的标准库
1.itsdangerous # 加密签名的数据 2.re # 正则表达式 3.time # 时间模块 4.keyword # 查看关键字5.random # 随机6.uuid
- EPOCH batchsize
只有在数据很庞大的时候(在机器学习中,几乎任何时候都是),我们才需要使用 epochs,batch size,迭代这些术语,在这种情况下,一次性将数据输入计算机是不可能的.因此,为了解决这个问题,我们 ...
- Linux 跟踪连接netfilter 调优
Netfilter介绍 linux内核中的netfilter是一款强大的基于状态的防火墙,具有连接跟踪(conntrack)的实现.conntrack是netfilter的核心,许多增强的功能,例如, ...
- Windows server 2016安装Docker EE
Windows server 2016安装Docker EE 下载 windows server 2016 180天评估版本. 地址:https://www.microsoft.com/en-us/e ...
- shiro 分布式缓存用户信息
很多分布式缓存登录用户信息一般都是存在redis类似的缓存里面.其中实现细节或者拆分都是大同小异. 一般用户登录权限管理都用shiro处理. 如果仔细分应该就是一下3种. 1,有一个单独的用户权限管理 ...
- VR外包—长年承接虚拟现实项目和AR外包游戏、软件(北京动点飞扬软件)
VR外包AR外包公司(虚拟现实外包公司)承接虚拟现实项目开发(企业.教育.游戏) 可公对公签正规合同,开发票. 我们是北京的公司.专业团队,成员为专业 VR/AR 产品公司一线开发人员,有大型产品开发 ...
- Python 编程第一步
Python 编程第一步 在前面的教程中我们已经学习了一些 Python3 的基本语法知识,下面我们尝试来写一个斐波纳契数列. # Fibonacci series: 斐波纳契数列 # 两个元素的总 ...