Apache服务——安装与初识

一、源码包安装

1.准备工作

版本:httpd>=2.4.17;openssl>=1.0.2

查看加密版本:openssl version

下载源码包和依赖包

复制代码
#安装源码包
httpd-2.4.62.tar.gz
apr-1.7.5.tar.gz
apr-util-1.6.3.tar.gz
#解决依赖关系
#安装支持http2协议的,需要httpd在2.4.17以上;需要openssl在1.0.2及以上

#安装nghttp2依赖
libnghttp2-1.43.0-5.el9_4.3.x86_64.rpm
libnghttp2-devel-1.43.0-5.el9_4.3.x86_64.rpm

2.安装源码包

复制代码
#安装基础依赖
$ dnf -y install openssl openssl-devel zlib zlib-devel pcre pcre-devel gcc gcc-
c++ perl expat-devel libxml2-devel

#解压源码包并解决依赖关系
$ tar -zxf httpd-2.4.62.tar.gz
$ tar -zxf apr-1.7.5.tar.gz
$ tar -zxf apr-util-1.6.3.tar.gz

#解决依赖关系
$ cp -a apr-1.7.5 httpd-2.4.62/srclib/apr
$ cp -a apr-util-1.6.3 httpd-2.4.62/srclib/apr-util

#安装支持http2协议的,需要httpd在2.4.17以上;需要openssl在1.0.2及以上
#查看openssl版本
$ openssl version
OpenSSL 3.0.7 1 Nov 2022

#安装nghttp2依赖
$ dnf -y install libnghttp2-1.43.0-5.el9_4.3.x86_64.rpm
$ dnf -y install libnghttp2-devel-1.43.0-5.el9_4.3.x86_64.rpm

#编译、安装,每步执行完用echo $?检测
#prefix:指定安装路径,
#enable-rewrite:开启地址重写,
#enable-so:开启dso(动态共享对象),
#enable-headers:允许修改http的请求头,
#enable-expires:允许客户端缓存,
#enable-modules=most:尽可能安装更多模块,
#enable-deflate:开启对压缩的支持,
#enable-ssl:开启https的支持,
#enable-http2:开启http2协议的支持

$ cd httpd-2.4.62
$ ./configure --prefix=/usr/local/apache2 --enable-rewrite --enable-so --
enable-headers --enable-expires --enable-modules=most --enable-deflate --
enable-ssl --enable-http2

#安装编译
$ make && make install

#检测配置文件、启动服务
$ /usr/local/apache2/bin/apachectl -t
$ /usr/local/apache2/bin/apachectl start

#添加或修改网页
$ vim /usr/local/apache2/htdocs/index.html

3.客户端检测

页面访问测试:http://192.168.77.77/index.html

虚拟机访问测试:

二、服务配置参数

1.源码包参数

  • 安装目录下:/usr/local/apache2
  • 端口:80
  • 配置文件:/usr/local/apache2/conf/httpd.conf
  • 日志文件:/usr/local/apache2/logs
  • 启停命令:bin/apachectl start/stop
  • 网页根目录:/usr/local/apache2/htdocs/index.html

2.查看配置文件

配置文件目录:/usr/local/apache2/conf

  • httpd.conf:主配置文件
  • extra:额外配置文件夹------其中文件通过include命令加载进主配置文件
  • original:备份配置文件夹(其中备份了主配置文件和额外配置文件)
  • mime.types:记录了互联网媒体类型,用户客户端和服务器间传输的类型
  • magic:把数据给一个模块去用,如果模块开启,则加载其中数据
  • 【.htaccess文件:第三类配置文件】

3.查看主配置文件

主配置文件:/usr/local/apache2/conf/httpd.conf文件

|---------------------------------------------------------|--------------------------------------------------------------|
| 参数 | 含义 |
| ServerRoot /var/local/apache2 | 根目录 |
| Listen 【ip】80 | 监听ip端口,没有写ip则监听在所有ip上,可以同时监听多个端口 |
| User Group | 启动进程的用户名、用户组 |
| LoadModule | 加载模块(-M可查看已加载模块) |
| IfModule 模块名 | 如果模块加载,标签内相关配置生效 |
| ServerAdmin | 网站管理员联系方式 |
| ServerName 域名:80 | 网站域名,写入hosts文件可访问 |
| Directory | 给目录设置权限的标签(/:全拒绝,htdocs:允许访问) |
| DocumentRoot | 网页根目录(htdocs),若要修改,则同时一定要给覆写权限,才能够正常使用新目录 |
| DirectoryIndex | 默认网页文件名(index.html),curl localhost命令可查看,同时支持多个文件,按顺序访问 |
| AllowOverride None | 定义是否允许目录下.htaccess文件中的权限生效 |
| Files | 给文件设权限(第三类配置文件不能让客户端访问到) |
| Errorlog logs/error_log | 错误日志 |
| LogLevel | 日志级别 |
| Logformat | 日志格式 |
| CustomLog "logs/access_log" | 客户端日志 |
| ScriptAlias | 脚本别名(httpd服务中,Alias可以设置客户端访问别名) |
| Options All | None | Indexes (Indexes FollowSymLinks) | 访问权限:None没有任何额外权限、All所有权限、Indexes浏览权限(当此目录下没有默认网页文件时,显示目录内容) |

4.知识点补充

若没有默认网页文件?

  1. 以链接的方式显示所有文件
  2. 报错403,(没有给权限,即Options为None)

例:将index.html改名

例:在主配置文件中,改:Options None

客户端访问Apache服务的方式

  1. Client用ip访问------找到Server端的Apache------找配置文件------用ip匹配------找网页根目录------找到index.html文件
  2. Client用域名访问(实验需写入hosts)------dns解析的ServerIP------找Server端的Apache------找配置文件------用域名匹配------找到网页根目录------找到index.html
  3. Client用随机域名访问(未注册,只写入hosts)------dns解析得ServerIP------找到Server端的Apache------找配置文件------用域名匹配失败------换ip匹配------找到网页根目录------找到index.html

三、Web服务相关

1.web服务简介

  • 使用http协议处理客户端http请求
  • 属于请求------响应协议,运行在tcp上
  • Http指定客户端发送什么信息,服务器端返回什么信息
  • Http的请求和响应用request和Response两个对象来封装(对象:属性和方法)

2.Requests Headers部分参数

  • keep alive:可以设置timeout超时时间,在一定时间范围内保持长连接
  • Host:指定访问的服务器是谁

补充知识点:长连接和短连接

  • 短连接:每个HTTP请求/响应对都在一个单独的TCP连接上进行。一旦服务器返回本次请求的响应,底层的TCP连接会立即被关闭。
  • 长连接:在一个TCP连接上,可以连续进行多个HTTP请求和响应。连接在发送完一个响应后不会立即关闭,而是保持打开状态,以供后续对相同服务器的请求复用。

3.返回状态码

  • 2XX:请求资源正常返回(200)
  • 3XX:请求资源被重定向(301:永久重定向;302:临时;304:使用浏览器缓存)
  • 4XX:客户端请求错误,如路径写错,请求名写错等(401:未通过认证;404:找不到;403:拒绝访问)
  • 5XX:服务器内部错误,如配置文件错,启动报错等(500:服务器内部配置错)

4.查看工作模式

命令:./bin/apachectl -V(RPM包可以用:httpd -V命令来查看)

5.三种工作模式

prefork模式

特点:

  • 预先创建一些子进程
  • 每个子进程只有一个线程
  • 一个时间内只处理一个请求

优点:

  • 成熟、文件、兼容所有新老模块
  • 不需要担心线程安全问题

缺点:

  • 一个进程占用较多的系统资源、消耗更多内存
  • 不擅长处理高并发请求

Worker模式

特点:

  • 预先创建一些子进程,数量较少
  • 每个子进程创建一些线程,包括一个监听线程
  • 每个线程处理一个请求

优点:

  • 占用较小内存
  • 较擅长处理高并发

缺点:

  • 需要考虑线程安全问题

event模式(同Worker模式)

  • 优点:解决了keep-alive类型的线程问题

补充:

命令:ps aux | grep httpd | grep -v grep------查看进程状态

注:Ss是守护进程,监管其他进程的,Sl表示这是多线程的进程状态

相关推荐
无巧不成书02183 小时前
Apache Tomcat 9 下载全指南(Windows,Linux,macOS):版本选型、国内镜像、SHA-512 与 PGP 完整性校验
windows·tomcat·apache
Dream-Y.ocean4 小时前
鸿蒙平台 Apache Tomcat 管理控制台适配实战:基于 Electron 壳方案的真实 HTTP 服务器实现
tomcat·apache·harmonyos
betazhou5 小时前
Apache seatunel常用配置参数解析说明
apache·seatunnel
凤山老林1 天前
Spring Boot 集成 Apache Kafka Streams 构建流处理应用:状态存储、窗口聚合与
spring boot·kafka·apache
DolphinScheduler社区2 天前
Apache DolphinScheduler 8 月报:权限安全加固,调度补火上线,性能与稳定性持续提升
大数据·安全·开源·apache·任务调度·海豚调度
sbjdhjd2 天前
从 7 字符文件名拼接到二维数组取值:PHP 无参函数限制下的受控靶场复盘 | (7字符绕过)
网络·nginx·安全·网络安全·云计算·php·apache
Jackyzhe3 天前
Apache Iceberg Variant 类型:v3 半结构化数据不再「二选一」
apache
Yeniden3 天前
Java 后端从零到企业级:第1篇 Java 基础语法——变量、数据类型与运算符
java·开发语言·apache
盟道科技5 天前
电商小程序SKU数据模型设计:SPU、规格组合、库存与价格的工程实践
服务器·小程序·apache
A-刘晨阳5 天前
时序数据基础设施选型手册:Apache IoTDB 技术深度解析与性能实战
apache·iotdb