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表示这是多线程的进程状态

相关推荐
一路向北North13 小时前
apache poi 导出复杂的excel表格
apache·excel
白鹭17 小时前
apache详细讲解(apache介绍+apache配置实验+apache实现https网站)
linux·运维·apache·apache配置·apache实现https网站
lifallen21 小时前
KafkaStreams 计算图节点设计:ProcessorNode、SourceNode、SinkNode
java·数据结构·算法·kafka·apache
Apache Flink1 天前
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
人工智能·flink·apache
索迪迈科技2 天前
Protobuf 新版“调试表示为什么有链接?为什么会打码?我该怎么改代码?
java·log4j·apache
yenggd3 天前
centos系统apache支持php配置
centos·php·apache
deepwater_zone4 天前
主流的开源协议(MIT,Apache,GPL v2/v3)
apache·开源协议
lingggggaaaa4 天前
小迪安全v2023学习笔记(七十九讲)—— 中间件安全&IIS&Apache&Tomcat&Nginx&CVE
笔记·学习·安全·web安全·网络安全·中间件·apache
lifallen4 天前
Kafka 内存池MemoryPool 设计
数据结构·kafka·apache