设为首页 收藏本站
查看: 925|回复: 0

[经验分享] apache服务的原理解析

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-5-3 09:41:24 | 显示全部楼层 |阅读模式
IANA:互联网地址分配机构

        0-1023:众所周知,永久地分配给固定的应用使用,特权端口;
        1024-41951:亦为注册端口,但要求不是特别严格,分配给程序注册为某应用使用;3306/tcp, 11211/tcp;
        41952+:客户端程序随机使用的端口,动态端口,或私有端口;其范围定义在
/proc/sys/net/ipv4/ip_local_port_range;
BSD Socket:IPC的一种实现,允许位于不同主机(也可以是同一主机)上的进程之间进行通信;
        Socket API(封装了内核中的socket通信相关的系统调用)
                SOCK_STREAM: tcp套接字
                SOCK_DGRAM: UDP套接字
                SOCK_RAW:raw套按字
根据套按字所使用的地址格式,Socket Domain:

                AF_INET:Address Family,IPv4
                AF_INET6:ipv6
                AF_UNIX:同一主机上的不同进程间基于socket套接字通信使用的一种地址;Unix_SOCK        
                TCP FSM: CLOSED, LISTEN,SYN_SENT, SYN_RECV, ESTABLISHED, FIN_WAIT1, CLOSE_WAIT, FIN_WAIT2, LAST_ACK, TIMEWAIT,  CLOSED
TCP协议的特性:
        建立连接:三次握手;
        将数据打包成段:校验和(CRC32)
        确认、重传及超时;
        排序:逻辑序号;
        流量控制:滑动窗口算法;
        拥塞控制:慢启动和拥塞避免算法;
http:hyper text transfer protocol超文本传输协议,是一种应用层协议, 端口是80/tcp,  文本协议

[扩展]
html:hyper text mark language, 编程语言,超文本标记语言;
1
2
3
4
5
6
7
8
9
10

   
    TITLE
   
   
        
         blabla... bla...

        ...
   




css: Cascading Style Sheet

js:JavaScript, 客户端脚本;
http协议版本:

        http/0.9:原型版本,功能简陋
        http/1.0: cache, MIME, method,                                 
                MIME:Multipurpose Internet Mail Extesion
                method:GET, POST, HEAD,PUT, DELETE,TRACE, OPTIONS
        http/1.1:增强了缓存功能;
                spdy
http/2.0:
                rfc
    工作模式:

            http请求报文:http request
            http响应报文: http response
                一次http事务:请求<-->响应
wKioL1clrD3Azi5fAABTj30dmHk435.jpg
web资源:web resource

        静态资源(无须服务端做出额外处理): .jpg, .png, .gif, .html, txt, .js, .css, .mp3, .avi
        动态资源(服务端需要通过执行程序做出处理,发送给客户端的是程序的运行结果): .php, .jsp
                注意:一个页面中展示的资源可能有多个;每个资源都需要单独请求;


资源的标识机制:URL

        Uniform Resource Locator统一资源定位符:用于描述服务器某特定资源的位置;
                例如:  http://www.sina.com.cn/index.html
                Scheme://Server[:Port][/PATH/TO/SOME_RESOURCE]

一次完整的http请求处理过程:

        (1) 建立或处理连接:接收请求或拒绝请求;
        (2) 接收请求:接收来自于网络上的主机请求报文中对某特定资源的一次请求的过程;
        (3) 处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法等相关信息;
        (4) 访问资源:获取请求报文中请求的资源;
        (5) 构建响应报文:
        (6) 发送响应报文:
        (7) 记录日志:
接收请求的模型:

并发访问响应模型:
        单进程I/O模型:启动一个进程处理用户请求;这意味着,一次只能处理一个请求,多个请求被串行响应;
        多进程I/O结构:并行启动多个进程,每个进程响应一个请求;
        复用的I/O结构:一个进程响应n个请求;
        多线程模式:一个进程生成n个线程,一个线程处理一个请求;
        事件驱动(event-driven):一个进程直接n个请求;
        复用的多进程I/O结构:启动多个(m)个进程,每个进程生成(n)个线程;
        响应的请求的数量:m*n
处理请求:分析请求报文的http请求报文首部

        http协议:
                http请求报文首部
                http响应报文首部
请求报文首部的格式:

         
        HEADERS: (name: value)
        
访问资源:获取请求报文中请求的资源

web服务器,即存放了web资源的主机,负责向请求者提供对方请求的静态资源,或动态资源运行生成的结果;这些资源通常应该放置于本地文件系统某路径下;此路径称为DocRoot;

        /var/www/html/:
        web服务器的资源路径映射方式:
                (a) docroot
                (b) alias
                (c) 虚拟主机的docroot
                (d) 用户家目录的docroot
http请求处理中的连接模式:

        保持连接(长连接):keep-alive
                时间:
                数量:
        非保持连接(短连接):
http服务器程序:
        httpd (apache)
        nginx
        lighttpd(轻量级)
应用程序服务器:
        IIS: .Net 都是微软的
        tomcat: .jsp
httpd的安装和使用:

        ASF: apache software foundation(apache软件基金会)
                httpd:apache
                a patchy server = apache
                httpd
httpd的特性:

        高度模块化: core + modules
        DSO:dynamic shared object
        MPM:Multipath processing Modules (多路处理模块)
prefork:多进程模型,每个进程响应一个请求;
        一个主进程:负责生成子进程及回收子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理;
        n个子进程:每个子进程处理一个请求;
        工作模型:会预先生成几个空闲进程,随时等待用于响应用户请求;最大空闲和最小空闲;
worker:多进程多线程模型,每线程处理一个用户请求;
        一个主进程:负责生成子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理;        
        多个子进程:每个子进程负责生成多个线程;
        每个线程:负责响应用户请求;
        并发响应数量:m*n
                m:子进程数量
                n:每个子进程所能创建的最大线程数量;
event:事件驱动模型,多进程模型,每个进程响应多个请求;
                一个主进程 :负责生成子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理;
                子进程:基于事件驱动机制直接响应多个请求;                        
httpd-2.2: 仍为测试使用模型;
httpd-2.4:event可生产环境中使用;
httpd的功能特性:
  • CGI:Common Gateway Interface公共网管接口
  • 虚拟主机:IP,PORT, FQDN
  • 反向代理
  • 负载均衡
  • 路径别名
丰富的用户认证机制

    • basic
    • digest
    • 支持第三方模块
安装httpd:
        rpm包:CentOS 发行版中直接提供;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[iyunv@server ~]# yum info httpd
Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile
* base: mirrors.pubyun.com
* extras: mirrors.btte.net
* updates: mirrors.neusoft.edu.cn
Installed Packages
Name       : httpd
Arch       : x86_64
Version    : 2.2.15
Release    : 5.el6.centos
Size       : 2.9 M
Repo       : installed
From repo  : anaconda-CentOS-201106060106.x86_64
Summary    : Apache HTTP Server
URL        : http://httpd.apache.org/
License    : ASL 2.0
Description: The Apache HTTP Server is a powerful, efficient, and extensible
           : web server.



编译安装:定制新功能,或其它原因;
CentOS 6:httpd-2.2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[iyunv@server ~]# rpm -ql httpd | less
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
/etc/httpd/logs
/etc/httpd/modules
/etc/httpd/run
/etc/logrotate.d/httpd
/etc/rc.d/init.d/httpd
/etc/sysconfig/httpd
/usr/lib64/httpd
/usr/lib64/httpd/modules
/usr/lib64/httpd/modules/mod_actions.so
/usr/lib64/httpd/modules/mod_alias.so
/usr/lib64/httpd/modules/mod_asis.so
/usr/lib64/httpd/modules/mod_auth_basic.so
/usr/lib64/httpd/modules/mod_auth_digest.so
/usr/lib64/httpd/modules/mod_authn_alias.so
/usr/lib64/httpd/modules/mod_authn_anon.so
/usr/lib64/httpd/modules/mod_authn_dbd.so
/usr/lib64/httpd/modules/mod_authn_dbm.so
/usr/lib64/httpd/modules/mod_authn_default.so
/usr/lib64/httpd/modules/mod_authn_file.so
/usr/lib64/httpd/modules/mod_authnz_ldap.so
/usr/lib64/httpd/modules/mod_authz_dbm.so
/usr/lib64/httpd/modules/mod_authz_default.so
/usr/lib64/httpd/modules/mod_authz_groupfile.so
/usr/lib64/httpd/modules/mod_authz_host.so
/usr/lib64/httpd/modules/mod_authz_owner.so
/usr/lib64/httpd/modules/mod_authz_user.so
/usr/lib64/httpd/modules/mod_autoindex.so
/usr/lib64/httpd/modules/mod_cache.so
/usr/lib64/httpd/modules/mod_cern_meta.so
/usr/lib64/httpd/modules/mod_cgi.so
/usr/lib64/httpd/modules/mod_cgid.so
/usr/lib64/httpd/modules/mod_dav.so
/usr/lib64/httpd/modules/mod_dav_fs.so
/usr/lib64/httpd/modules/mod_dbd.so



程序环境:

        配置文件:
            /etc/httpd/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                        
        服务控制和启动:
                chkconfig  httpd  on|off
                service  {start|stop|restart|status|configtest|reload}  httpd        
CentOS 7:httpd-2.4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[iyunv@localhost named]# yum info httpd
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base:
* extras: mirrors.aliyun.com
Available Packages
Name        : httpd
Arch        : x86_64
Version     : 2.4.6
Release     : 40.el7.centos
Size        : 2.7 M
Repo        : base/7/x86_64
Summary     : Apache HTTP Server
URL         : http://httpd.apache.org/
License     : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
            : web server.



        程序环境:
        配置文件:
                /etc/httpd/conf/httpd.conf
                /etc/httpd/conf.d/*.conf
模块相关的配置文件:/etc/httpd/conf.modules.d/*.conf
                systemd unit file:
                /usr/lib/systemd/system/httpd.service
        主程序文件:
                /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

wKioL1clrD3Azi5fAABTj30dmHk435.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-212005-1-1.html 上篇帖子: 在安装apache时遇到的困难 下篇帖子: 编译安装Apache+PHP
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表