Web 基础——Apache

news2024/12/23 10:08:46

在这里插入图片描述

Event
  • Worker 的升级版、把服务器进程和连接进行分析,基于异步 I/O 模型。

  • 请求过来后进程并不处理请求,而是直接交由其它机制来处理,通过 epoll 机制来通知请求是否完成;

  • 在这个过程中,进程本身一直处于空闲状态,可以一直接收用户请求。可以实现一个进程响应多个用户请求。

  • 并且 Event 模式对于 Keep-Alive 连接处理也有所优化,Event 模式由单独的线程处理 Keep-Alive 长连接,执行完毕后,又允许它释放。

  • 这样增强了高并发场景下的请求处理能力。

  • 特点:支持海量级高并发负载、消耗资源少、但其对 https 支持的不完美。

在这里插入图片描述

Keep-Alive 长连接:

  • TCP 连接在发送后将依然保持打开状态,于是浏览器可以继续通过相同的连接发送请求。

  • 保持连接节省了为每个请求建立新连接所需的时间,还节约了带宽。

  • 减少重复请求的次数,进而加快访问速度,实现长连接要客户端和服务端都支持长连接。

总结:

  • 不同模式效率不同,主要用来调优。使用 httpd -V | grep 'MPM' 可以查看当前使用模式。

二、部署 Apache 网站服务

===================================================================================

准备工作

| 主机名 | 操作系统 | IP地址 | 版本号 |

| — | — | — | — |

| Apache | CentOS 7.4 | 192.168.1.1 | httpd-2.2.17.tar.gz |

1.编译安装 Apache


  • 静态编译:将模块直接编译进 httpd 的核心中。静态编译的所有模块都会随着 httpd 的启动而启动。

  • 动态编译:将模块编译好,但不编译到 httpd 的核心中。要启动动态编译的模块,需要在配置文件中使用 LoadModule 指令加载。

[root@Apache ~]# wget http://archive.apache.org/dist/httpd/httpd-2.2.17.tar.gz

[root@Apache ~]# tar zxf httpd-2.2.17.tar.gz -C /usr/src/

[root@Apache ~]# cd /usr/src/httpd-2.2.17/

[root@Apache httpd-2.2.17]# ./configure \

–prefix=/usr/local/httpd \

–enable-so \

–enable-rewrite \

–enable-cgi && make && make install

注解:

  • --enable-so:开启动态加载模块的功能。

  • --enable-rewrite:开启地址重写、重定向功能。

  • --enable-cgi:开启与一些动态编程语言之间进行交互的接口。

在这里插入图片描述

动态编译:

./configure \

–prefix=/usr/local/httpd \

–enable-so \

–enable-modules=most \

–enable-mpms-shared=all && make && make install

  • 注意:本次实验并不需要做动态编译。

查看模块

/usr/local/httpd/bin/apachectl -D DUMP_MODULES # 会显示静态编译还是动态编译

2.安装后优化调整


[root@Apache httpd-2.2.17]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ # 优化执行路径

[root@Apache ~]# httpd -v # 查看httpd版本

[root@Apache ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd # 复制启动文件

[root@Apache ~]# sed -i 1a’#chkconfig: 35 85 15’ /etc/init.d/httpd # 在第一行后面插入

[root@Apache ~]# chmod +x /etc/init.d/httpd # 添加可执行权限

[root@Apache ~]# chkconfig --add httpd # 添加为系统服务

[root@Apache ~]# chkconfig httpd on # 设置开机自启

[root@Apache ~]# systemctl start httpd # 开启httpd服务

[root@Apache ~]# netstat -anpt | grep 80 # 查看端口是否开启

在这里插入图片描述

3.使用浏览器访问验证


在这里插入图片描述

4.配置多个网页


[root@Apache ~]# cd /usr/local/httpd/htdocs/

[root@Apache htdocs]# rm -rf index.html

[root@Apache htdocs]# mkdir baidu

[root@Apache htdocs]# mkdir sina

[root@Apache htdocs]# echo “

www.baidu.com

” > baidu/index.html

[root@Apache htdocs]# echo “

www.sina.com

” > sina/index.html

在这里插入图片描述

使用浏览器访问验证:

在这里插入图片描述

解决方法:

[root@Apache ~]# vim /usr/local/httpd/conf/httpd.conf

将主配置文件中的:

144 Options Indexes FollowSymLinks

替换为:

144 Options FollowSymLinks

[root@Apache ~]# systemctl restart httpd # 重启httpd服务

[root@Apache ~]# netstat -anpt | grep 80 # 查看端口是否开启

在这里插入图片描述

使用浏览器访问验证:

在这里插入图片描述

5.调整工作模式


  • 注意:设置工作模式时,不仅要考虑网站的并发连接等工作效率,也要考虑服务器硬件占用情况,内存尤为重点考虑。

1)查看工作模式

[root@Apache ~]# httpd -V | grep ‘MPM’

在这里插入图片描述

2)Prefork 工作模式

| 参数 | 作用 |

| :-- | :-- |

| StartServers | 服务器启动时建立的子进程数量 |

| MinSpareServers | 空闲子进程最小数量,当空闲子进程数小于该数值将产生新的子进程 |

| MaxSpareServers | 空闲子进程最大数量,当空闲子进程数大于该数值将杀死多余子进程 |

| MaxClinets | 限制用户最大并发数 |

| MaxRequestsPerChild | 每个子进程在其生存期内允许处理的最大请求数量 |

[root@Apache ~]# vim /usr/local/httpd/conf/extra/httpd-mpm.conf

36

37 StartServers 5

38 MinSpareServers 5

39 MaxSpareServers 20

40 MaxClients 150

41 MaxRequestsPerChild 10000

42

[root@Apache ~]# vim /usr/local/httpd/conf/httpd.conf

将主配置文件中的:

370 #Include conf/extra/httpd-mpm.conf # 去掉注释

替换为:

370 Include conf/extra/httpd-mpm.conf

[root@Apache ~]# systemctl restart httpd # 重启httpd服务

[root@Apache ~]# netstat -anpt | grep 80 # 查看端口是否开启

在这里插入图片描述

3)Worker 工作模式

| 参数 | 作用 |

| :-- | :-- |

| StartServers | 服务器启动时建立的子进程数量 |

| MinSpareServers | 空闲子线程最少数量,当空闲子线程数量少于该数值将产生新的子线程 |

| MaxSpareServers | 空闲子线程最大数量,当空闲子线程数量大于该数量将杀死多余子线程 |

| MaxClients | 限制用户最大并发数 |

| MaxRequestsPerChild | 每个子进程在其生存期内允许处理的最大请求数量 |

[root@Apache ~]# vim /usr/local/httpd/conf/extra/httpd-mpm.conf

51

52 StartServers 2

53 MaxClients 150

54 MinSpareThreads 25

55 MaxSpareThreads 75

56 ThreadsPerChild 50

57 MaxRequestsPerChild 10000

58

切换到 Worker 工作模式

[root@Apache ~]# systemctl stop httpd

[root@Apache ~]# cat /usr/local/httpd/build/config.nice # 查看之前安装httpd的配置信息

[root@Apache ~]# cd /usr/src/httpd-2.2.17/

[root@Apache ~]# ./configure \

–prefix=/usr/local/httpd \

–enable-so \

–enable-rewrite \

–enable-cgi \

–with-mpm=worker && make clean && make && make install

在这里插入图片描述

查看当前工作模式

[root@Apache ~]# httpd -V | grep ‘MPM’ # 查看当前工作模式

[root@Apache ~]# systemctl start httpd # 开启httpd服务

[root@Apache ~]# netstat -anpt | grep 80 # 查看端口是否开启

[root@Apache ~]# ps aux | grep httpd # 查看httpd进程

在这里插入图片描述

4)Event 工作模式

| 参数 | 作用 |

| :-- | :-- |

| ServerLimit | 服务器开启最大的进程数 |

| StartServers | 服务器启动时建立的子进程数量 |

| MaxClinets | 限制用户最大并发数 |

| MinSpareThreads | 空闲子线程最小数量,当空闲子线程数小于该数值将产生新的子线程 |

| MaxSpareServers | 空闲子线程最大数量,当空闲子线程数大于该数值将杀死多余子线程 |

| ThreadsPerChild | 每个子进程的最大并发线程数 |

| MaxRequestsPerChild | 每个子进程在其生存期内允许服务的最大请求数量 |

[root@Apache ~]# vim /usr/local/httpd/conf/extra/httpd-mpm.conf

最后

==
就答题情况而言,第一问100%都可以回答正确,第二问大概只有50%正确率,第三问能回答正确的就不多了,第四问再正确就非常非常少了。其实此题并没有太多刁钻匪夷所思的用法,都是一些可能会遇到的场景,而大多数人但凡有1年到2年的工作经验都应该完全正确才对。
只能说有一些人太急躁太轻视了,希望大家通过此文了解js一些特性。

并祝愿大家在新的一年找工作面试中胆大心细,发挥出最好的水平,找到一份理想的工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2123336.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【目标检测数据集】铁轨表面缺损检测数据集4789张VOC+YOLO格式

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4789 标注数量(xml文件个数):4789 标注数量(txt文件个数):4789 标注…

只有IP地址没有域名怎么实现HTTPS访问?

🔐 实现IP地址HTTPS访问 🌐 确认公网IP地址 公网IP:确保你拥有一个公网IP地址,或者内网映射公网,这是实现HTTPS访问的前提。 📝 选择证书颁发机构(CA) 选择CA:选择一个…

【Qt】Qt音频

Qt 音频 在 Qt 中,⾳频主要是通过 QSound 类来实现。但是需要注意的是 QSound 类只⽀持播放 wav 格式的⾳频⽂件。也就是说如果想要添加⾳频效果,那么⾸先需要将 ⾮wav格式 的⾳频⽂件转换为 wav 格式。 【注意】使⽤ QSound 类时,需要添加模…

【C#Mutex】 initiallyOwned错误引起的缺陷

临界区只能对同一个进程的不同线程同步,互斥量可以跨进程同步。典型应用场景:两个exe会操作同一个注册表项。 错误代码 封装类 public class CMutexHelp : IDisposable {public CMutexHelp(){s_mutex.WaitOne();} private static Mutex s_mutex …

深度学习-目标检测(二)Fast R-CNN

一:Fast R-CNN Fast R-CNN 是一篇由Ross Girshick 在 2015 年发表的论文,题为 “Fast R-CNN”。这篇论文旨在解决目标检测领域中的一些问题,特别是传统目标检测方法中存在的速度和准确性之间的矛盾。 论文摘要:本文提出了一种基于…

关于tomcat如何设置自启动的设置

希望文章能给到你启发和灵感~ 如果觉得文章对你有帮助的话,点赞 关注 收藏 支持一下博主吧~ 阅读指南 开篇说明一、基础环境说明1.1 硬件环境1.2 软件环境 二、Windows 下的设置服务自启2.1 服务的注册2.2 开启自启 三、MacOS下设置服务自启…

ROS CDK魔法书:建立你的游戏王国(Python篇)

引言 在虚拟游戏的世界里,数字化的乐趣如同流动的音符,谱写着无数玩家的共同回忆。而在这片充满创意与冒险的乐园中,您的使命就是将独特的游戏体验与丰富的技术知识相结合,打造出令人难以忘怀的作品。当面对如何实现这一宏伟蓝图…

【数据结构】4——树和森林

数据结构——4树和森林 笔记 文章目录 数据结构——4树和森林树的存储结构双亲表示法孩子链表孩子兄弟表示法(二叉树表示法、二叉链表表示法) 树与二叉树转换森林和二叉树转化森林转二叉树二叉树转森林 树和森林的遍历树先根后根层次 森林 树的存储结构…

使用nvm工具实现多个nodejs版本的维护和切换

NodeJS的升级比较快,在开发中要使用最新的版本,必须经常升级,但对于一些老项目可能又要使用低版本的NodeJS,虽然可以在系统中同时安装多个NodeJS的版本,然后通过修改环境变量的方式实现切换,但这种方法太麻…

断点回归模型

断点回归(Regression Discontinuity Design, RDD)是一种准实验设计方法,用于评估政策或其他干预措施的效果。这种方法利用了一个清晰的阈值或“断点”,在这个阈值上,处理状态(例如是否接受某种干预&#xf…

浅谈为什么数据库要用B树

朋友,你有没有遇到过这样的情况?明明数据库里存的东西还不算太多,可一查数据,页面加载慢得像蜗牛?别急,问题可能出在你的数据库索引上。而今天我要跟你聊的,就是在数据库里被广泛应用的B树(B-Trees),它可是提升数据库性能的秘密武器。听起来有点深奥?别担心,我会用…

C程序设计——再说说函数参数的值传递

上一篇的最后,我强调了C语言里,所有函数参数的传递,都是值传递,即形参值改变,不影响实参的值。 指针作为函数参数 我们知道,指针也是C语言的一个类型,所以指针,也可以作为函数参数…

【TPAMI 2024】一种用于混合事件-帧摄像机的异步线性滤波器架构

题目:An Asynchronous Linear Filter Architecture for Hybrid Event-Frame Cameras 一种用于混合事件-帧摄像机的异步线性滤波器架构 作者:Ziwei Wang; Yonhon Ng; Cedric Scheerlinck; Robert Mahony 摘要 事件相机非常适合捕捉高动态范围(HDR)视觉…

运维保障高效化的智慧能源开源了

一、简介 AI视频监控平台, 是一款功能强大且简单易用的实时算法视频监控系统。愿景在最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,减少企业级应用约 95%的开发成本,在强大视频算…

【python因果推断库13】使用 PyMC 模型进行回归断点分析

目录 线性模型、主效应模型和交互作用模型 使用bandwidth 使用基样条 import causalpy as cp %load_ext autoreload %autoreload 2 %config InlineBackend.figure_format retina seed 42 df cp.load_data("rd") 线性模型、主效应模型和交互作用模型 PyMC 采样…

教学辅助微信小程序|基于SSM+vue的高校教学微信小程序系统(源码+数据库+文档)

高校教学 目录 基于SSM教学辅助微信小程序 一、前言 二、系统设计 三、系统功能设计 小程序端 后台功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师&#x…

【Python】01.Python 介绍及其环境配置

一、计算机的基础概念 1.1 什么是计算机 所谓计算机,不光能进行算术运算,还能进行逻辑判断、数据存储、网络通信等等功能,以至于可以自动的完成非常复杂的工作。以下这些都可以称为 “计算机” : 1.2 冯诺依曼体系结构 而一台…

媒体服务器软件BUG说明及改进方案

媒体服务器软件BUG说明及改进方案 一、BUG描述二、问题分析三、改进方案四、实施计划五、预期效果六、总结一、BUG描述 在当前版本的媒体服务器中,存在一个关于静音媒体流处理的问题。具体表现为:当主叫连续发送静音帧到媒体服务器时,媒体服务器并未将这些静音帧转发给被叫…

闯关leetcode——13. Roman to Integer

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/roman-to-integer/description/ 内容 Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. SymbolValueI1V5X10L50C100D500M1000 For example, 2 is written …

CVE-2024-37032-Ollama漏洞

简介 Ollama是一个专为在本地环境中运行和定制大型语言模型而设计的工具。它提供了一个简单高效的接口,用于创建、运行和管理这些模型,同时还提供了一个丰富的预构建模型库,可以轻松集成到各种应用程序中。Ollama的目标是使大型语言模型的部…