Loading... <p><span style="font-size: 20px"><strong>一、httpd 简介 </strong></span></p> <p><strong>1. httpd 历史:</strong> </p> <p>httpd daemon 最早诞生于1995年二月, 伊利诺伊大学香槟分校的美国国家超级计算应用中心(NCSA),由Rob McCool开发。当这个项目完成后,Rob 老兄离开RCSA以后,这个项目组就解散了,这个项目也随之终止。 但是,由Brian Behlendorf 和 Cliff Skolnick这两位老兄,带领一班民间的小伙伴,继续为这个项目以补丁(patch)的形式进行维护,修复bug等等。</p> <p>因此他们也戏称为,a pachey server , 意思为一群补丁拼起来的服务器。 后来,由于apache 直升机比较酷,所以也就使用apache这个名字当然现在,apache 已经不仅仅是httpd而已,apache是一个软件基金会。</p> <p> 目前的版本: httpd-1.3, httpd-2.0, httpd-2.2, httpd-2.4</p> <p></p> <p><strong>2. httpd是高度模块: </strong></p> <p> core + modules : 包含两种功能特性模块</p> <p> DSO: Dynamic Shared Object (可以单独编译,并且需要时直接挂载使用)</p> <p> MPM: Multipath Processing Modules (多道处理模块,非一个模块,而是一种功能特性 ) </p> <p></p> <p><strong>3. MPM的模型</strong> </p> <p> 1) web服务的基本模型 </p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180243-43.jpg" title="1430834643360560.jpg" alt="幻灯片1.jpg" width="890" height="676" style="width: 890px;height: 676px" /></p> <p><strong> 2) httpd 并行模型 </strong></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180243-98.jpg" title="1430834726523153.jpg" alt="httpd多道处理模块.jpg" width="861" height="663" style="width: 861px;height: 663px" /></p> <p><strong> prefork :</strong> 一个进程,一个请求。 在空闲时,会有一定数量进程待命, 进程间需要切换。</p> <p> 1) 响应进程由主进程复制,为了节省响应时间,在空闲时会预先生成一定数量的空闲进程预备</p> <p> 2) 当任务响应完毕后,部分进程会被回收成为空闲进程,超出空闲进程上限的进程将被销毁 </p> <p> 3) 每个进程间不能通信,消耗同等资源 </p> <p> 4) 进程间调度,需要消耗CPU时长 </p> <p> <strong> worker:</strong> 一个进程多个线程,一个线程一个请求, 线程间同样需要切换。</p> <p> 1) 一个进程可以管理多个线程,有上限</p> <p> 2) 每个进程所管理的线程可进行资源交换,但是有时会发生资源征用</p> <p> 3) 线程需要调度,消耗CPU时钟周期 </p> <p> event: 一个线程,多个请求,event driven, 实现带线程响应多个请求。</p> <p><strong>4. httpd 功能特性 </strong></p> <p> 1) 路径别名: alias </p> <p> 2) 用户认证: authentication </p> <p> 3) 虚拟主机(virtual host ): 一台主机可以建立多个站点 </p> <p> 4) 反向代理: 负载均衡 </p> <p> 5) 用户站点: CGI , Common Gateway Interface </p> <p></p> <p><span style="font-size: 20px"><strong>二、httpd的基本安装和组件组成</strong></span></p> <p><strong>1. httpd的快速安装 </strong></p> <pre class="brush:bash;toolbar:false"># yum -y install httpd</pre> <p><strong>2. 生成的重要目录 </strong></p> <pre class="brush:bash;toolbar:false">/etc/httpd 配置文件所在位置 /etc/httpd/conf 主配置文件 /etc/httpd/conf.d 配置文件的片段 /etc/httpd/logs -> ../../var/log/httpd 日志文件链接 /etc/httpd/modules -> ../../usr/lib64/httpd/modules 模块链接 /etc/logrotate.d/httpd 日志滚动脚本配置位置 /etc/rc.d/init.d/httpd 服务脚本 /etc/sysconfig/httpd 脚本的配置文件 /var/www 服务跟目录 /var/www/html 默认文档根目录 Docroot /var/www/cgi-bin/ cgi脚本所在位置</pre> <p></p> <p><strong>3. 服务启动 </strong></p> <pre class="brush:bash;toolbar:false"># service httpd start # ss -tnlp</pre> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180244-80.png" title="1430896459138862.png" alt="QQ图片20150506151121.png" /></p> <p>TCP/80 端口已被监听</p> <pre class="brush:bash;toolbar:false"># pstree</pre> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180244-89.png" title="1430896587679013.png" alt="QQ截图20150506151615.png" /></p> <pre class="brush:bash;toolbar:false"># ps -elFH</pre> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180244-37.png" title="1430897187874931.png" alt="QQ截图20150506152626.png" /></p> <p>需要在内核上创建小于1023端口只能是管理员用户</p> <p>属主为管理员用户的httpd进程,为主进程,其余属主为apache的为工作进程 </p> <p>此时,httpd服务已然启动, 浏览器中输入服务器IP, 将会开启测试页</p> <p></p> <p>在/var/www/html下面创建一个简单主页,使用telnet尝试请求 </p> <pre class="brush:bash;toolbar:false">[root@www ~]# telnet 192.168.233.128 80 Trying 192.168.233.128... Connected to 192.168.233.128. Escape character is '^]'. GET a.html http/1.1 Host: 192.168.233.128</pre> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180244-9.png" title="1430921256252685.png" alt="QQ截图20150506220712.png" /></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信