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.知识点补充
若没有默认网页文件?
- 以链接的方式显示所有文件
- 报错403,(没有给权限,即Options为None)
例:将index.html改名
例:在主配置文件中,改:Options None
客户端访问Apache服务的方式
- Client用ip访问——找到Server端的Apache——找配置文件——用ip匹配——找网页根目录——找到index.html文件
- Client用域名访问(实验需写入hosts)——dns解析的ServerIP——找Server端的Apache——找配置文件——用域名匹配——找到网页根目录——找到index.html
- 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表示这是多线程的进程状态