目录
1. 引言
在现代Web开发和服务器管理中,httpd(Apache HTTP Server)是最流行的Web服务器软件之一。作为开源项目,Apache HTTP Server为用户提供了稳定、灵活和高度可配置的Web服务解决方案。本文将详细介绍httpd服务的各个方面,包括其定义、架构、工作原理、应用场景、常见命令体系以及实验场景模拟。
2. httpd 的定义
Apache HTTP Server,通常称为httpd或Apache,是一个开源的Web服务器软件,由Apache软件基金会开发和维护。httpd支持HTTP/1.1和HTTPS协议,广泛应用于全球各类网站和Web应用。作为一款高度可扩展和灵活的Web服务器,httpd支持多种模块扩展,可以满足各种不同的需求。
3. httpd 的架构
Apache HTTP Server的架构设计高度模块化,主要包括以下几个核心组件:
1.核心模块:处理基本的HTTP请求和响应。
2.多处理模块(MPM):负责管理服务器的并发处理能力,如worker、event和prefork等不同的MPM模块。
3.扩展模块:提供额外的功能,如mod_ssl(支持SSL/TLS)、mod_rewrite(URL重写)、mod_proxy(反向代理)等。
4.配置文件:主要是httpd.conf文件,用于定义服务器的行为和设置。
5.日志系统:记录服务器的访问日志和错误日志,用于监控和调试。
4. httpd 的工作原理
httpd的工作流程可以简要分为以下几个步骤:
1.接受请求:服务器监听指定端口(默认是80或443端口),等待客户端发送HTTP请求。
2.解析请求:服务器接收并解析HTTP请求头,提取请求方法、URI、协议版本等信息。
3.处理请求:根据配置文件和请求信息,服务器选择适当的模块处理请求,如静态文件请求或动态内容生成。
4.生成响应:服务器生成HTTP响应头和响应体,将结果返回给客户端。
5.记录日志:服务器将请求和响应的信息记录到日志文件中。
5. httpd 的应用场景
httpd在许多场景下得到了广泛应用,主要包括以下几个方面:
1.静态网站托管:提供静态文件(如HTML、CSS、JavaScript等)的托管服务。
2.动态Web应用:与后端服务器(如PHP、Python、Node.js等)协作,生成动态内容。
3.反向代理:作为前端代理服务器,分发请求到后端服务器集群,提高系统的性能和可用性。
4.SSL/TLS 加密:通过mod_ssl模块提供HTTPS服务,确保数据传输的安全性。
5.负载均衡:通过mod_proxy_balancer模块实现负载均衡,提高服务器的处理能力。
6. httpd 在 CentOS 上的常见命令
在CentOS上使用httpd服务,可以通过以下步骤进行安装、配置和使用:
网址:wWelcome to The Apache Software Foundation!
这里面有历史版本
httpd
wget https://archive.apache.org/dist/httpd/httpd-2.4.53.tar.gz
解压 tar -zxvf httpd-2.4.53.tar.gz
进入 cd httpd-2.4.53/
./configure --prefix=/user/local/httpd/ 检查编译环境
报错,缺少APR,下载APR进行安装
APR
wget https://archive.apache.org/dist/apr/apr-1.7.0.tar.gz
解压tar -zxvf apr-1.7.0.tar.gz
进入 cd apr-1.7.0/
./configure --prefix=/usr/local/apr 检查编译环境
yum -y install gcc gcc-c++ autoconf make #安装gcc
继续编译apr
./configure --prefix=/usr/local/apr
检查是否安装libtool,如未安装,执行安装
rpm -qa|grep libtool #检查是否安装
yum install libtool -y #安装libtool
之后继续安装,如依然报错,修改文件configure第31280行
ll 查询
vim configure
31280 G
继续编辑apr
make 编译
make install 编译安装
Apr-util
Wget https://archive.apache.org/dist/apr/apr-util-1.6.1.tar.gz
进入apr-util cd apr-util-1.6.1/
./configure --prefix=aprutil的安装路径 --with-依赖软件的名称=依赖软件的安装路 径/bin/apr-1-config
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1- config
检查编译
make 编译
编译报错,缺少expat包
安装expat
yum install -y expat-devel*
继续编译apr –util
make && make install
继续检查HTTPd的编译环境
./configure --prefix=/usr/local/httpd
依然报错
添加apr 和apr-util 的路径
./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config
Pcre
wget
https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.39/pcre2-10.39.tar.gz
tar -zxvf pcre2-10.39.tar.gz #解压
./configure --perfix=/usr/local/pcre #检查编译环境
make && make install #编译安装
继续检查HTTPd的编译环境,添加pcre的路径
./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --with-pcre=/usr/local/pcre/bin/pcre2-config
安装编译 make
报错 缺少libxml2-devel 安装
yum install -y libxml2-devel
等上面的弄了一遍之后重新运行安装
进入 cd apr-1.7.0/
./configure --prefix=/usr/local/apr
make && make install
进入apr-util
cd apr-util-1.6.1/
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1- config
make && make install
进入 pcre
cd pcre2-10.39
./configure --prefix=/usr/local/pcre
make && make install
进入 httpd
进入 cd httpd-2.4.53/
./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --with-pcre=/usr/local/pcre/bin/pcre2-config
make && make install
安装完成后设置防火墙
配置防火墙
firewall-cmd --permanent --add-service=http
者将80端口配置到防火墙
firewall-cmd --zone=public --add-port=80/tcp --permanent
重新启动防火墙
firewall-cmd –reload
启停HTTPD服务
/usr/local/httpd/bin/apachectl start 启动
/usr/local/httpd/bin/apachectl stop 停止
报错,配置httpd/conf/htttpd.conf文件,查找添加: 195行
#ServerName www.example.com:80
ServerName localhost:80
编写测试网页 在/usr/local/httpd/htdocs路径下编写index.html文件
总结:到最后 访问页面如果端口号冲突 用 rpm –q httpd 查询是否存在
存在就删除