1. Httpd 简介
Httpd 是 C 语言编写的遵从 Http 协议的服务器,是一个高度模块化软件,由 Server 和 Module 组成。这些模块大都是动态模块,因此可以随时加载。
Httpd 作为起步比较早的一个 Web 开源项目,代码的稳定性/社区/文档 都是比较可靠的,他支持的功能非常丰富,并且可以按需地引入自己所需要的模块。
Httpd 一般比较的对象是 Nginx 服务器,他们两个是静态资源服务器的首选:
- Nginx 轻量且并发能力高于 Httpd;
- Nginx 能够实现负载均衡;
- Httpd 支持的功能模块比较丰富;
- Httpd 的
rewrite
功能强于 Nginx。
当然,也有的网站架构同时用到了 Nginx 和 Httpd ,用 Nginx 作为负载均衡,将流量分发到后面的 Httpd Web服务端。
2. Httpd 的工作模型
对于请求 Httpd 有 3 种处理模型,MPM(Mulit Path Modules,多路径处理模块)它们会影响到 Httpd 的速度和可伸缩性。在编译的时候可以根据需要使用 --with-mpm
选项来指定 Httpd 的工作方式,默认是 prefork
模式。
可以通过 httpd -V
命令查看当前的工作模型:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
不同的工作模式,对应着不同的配置。
prefork
- 1
- 2
- 3
- 4
- 5
- 6
- 7
worker
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
event
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
2.1 工作模型切换
prefork
模式效率比较高,但要比 worker
使用内存更大,根据自己的需求选择合适的工作模式,假如要切换工作模式可以通过下面的方法。我们前面提到,工作模式需要编译的时候指定,下面操作生效的前提是编译的时候选择了所有模式 --enable-mpms-shared=all
:
- 1
- 2
- 3
- 4
3. Httpd 安装
安装模式有 2 种,手动离线安装和 yum 安装,由于 httpd 是 C 程序,如果是手动安装的话要先安装 C 对应的环境和 httpd 依赖的一些包。yum 的安装方式相对比较简单。
3.1 yum 安装 Httpd
- 1
3.2 Httpd 的主要配置
/etc/httpd/conf/httpd.conf
:主配置文件;/etc/httpd/conf.modules.d/*.conf
:模块配置文件;/etc/httpd/conf.d/*.conf
:辅助配置文件;/var/log/httpd/access.log
:访问日志;/var/log/httpd/error_log
:错误日志;/var/www/html/
:用户的 html 项目代码。
3.3 启动
添加 Httpd 开机启动:
- 1
启动 Httpd 服务:
- 1
Httpd 启动后默认进入的是欢迎界面,我们的 Html 工程可以放在 /var/www/html
,写个 demo 的 index.html 。
- 1
- 2
- 3
- 4
4. Httpd 常用命令
- httpd -v:查看 httpd 的版本号;
- httpd -l:查看编译进 httpd 程序的静态模块;
- httpd -M:查看已经编译进 httpd 程序的静态模块和已经加载的动态模块。
5. 小结
Httpd 是上面几种服务器诞生最早的一个,所以它的代码经过长时间的修改和生产实际相对来说成熟很多,功能也很丰富,有强大的 rewrite
机制,模块化按需加载,连工作模式都可以根据自己的需要在编译的时候指定,但是因为灵活性比较高,初学者反而不容易掌握