Apache服务——安装与初识

发布于:2025-09-11 ⋅ 阅读:(16) ⋅ 点赞:(0)

一、源码包安装

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


网站公告

今日签到

点亮在社区的每一天
去签到