Web 基础——Apache

<>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一些特性。

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

相关推荐
kyriewen8 分钟前
前端错误监控最全指南:捕获 JS 异常、Promise 拒绝、资源加载失败,附上报代码
前端·javascript·监控
狗哥哥19 分钟前
船队运营可视化技术方案
前端
大家的林语冰22 分钟前
ESLint 近期动态大全,新版本正式发布,antfu 大佬推荐的插件也更新了!
前端·javascript·前端工程化
只会cv的前端攻城狮24 分钟前
DSL 领域模型架构设计:消灭 CRUD 重复工作
前端·架构
码事漫谈1 小时前
时序数据库2026盘点:国产数据库如何以“融合多模”走出差异化之路?
前端·后端
道友可好1 小时前
让 AI 自己验收,等于让学生自己批卷
前端·人工智能·后端
yingyima1 小时前
Go 语言正则表达式速查手册:30 分钟掌握核心语法与实战技巧
前端
大蝴蝶博努奇a1 小时前
使用ChatGPT 解决各类代码报错
前端
胡志辉2 小时前
深入浅出 call、apply、bind
前端·javascript·后端
iccb10132 小时前
5年,一个程序员是如何把私有化在线客服系统做到第一名的
前端·后端·github