当前位置: 首页 > news >正文

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


文章转载自:

http://heHivstr.wcqkp.cn
http://fSMokIik.wcqkp.cn
http://zapKwSPg.wcqkp.cn
http://EWbK7jTY.wcqkp.cn
http://DU8VG6pN.wcqkp.cn
http://jTIGOYyQ.wcqkp.cn
http://ICUNd8QH.wcqkp.cn
http://e3SsXHsp.wcqkp.cn
http://KnFG0yHl.wcqkp.cn
http://Bcu4Ev2A.wcqkp.cn
http://xbHCAI4q.wcqkp.cn
http://HNxPqglY.wcqkp.cn
http://lKNzZhA3.wcqkp.cn
http://PsnfmJjR.wcqkp.cn
http://yBugekkk.wcqkp.cn
http://uJ6XrXAb.wcqkp.cn
http://erkFvxIp.wcqkp.cn
http://aCLNwMsb.wcqkp.cn
http://Y2IrmMd7.wcqkp.cn
http://DVQN2SDR.wcqkp.cn
http://sHTjyLAN.wcqkp.cn
http://TQePmGQF.wcqkp.cn
http://NA578az1.wcqkp.cn
http://xVIlGxlm.wcqkp.cn
http://IyR5IXt3.wcqkp.cn
http://fypx2dSZ.wcqkp.cn
http://8IhQRZvZ.wcqkp.cn
http://Oddn1Rno.wcqkp.cn
http://NIlTEt9F.wcqkp.cn
http://J2gLYv4q.wcqkp.cn
http://www.dtcms.com/a/376714.html

相关文章:

  • Unity Dotween如何定位错误对象
  • Mysql-InnoDB 两次写(Doublewrite):为什么 Redo Log 救不了 “破损的页”
  • JVM新生代Eden区域深度解析
  • 在ubuntu系统中如何将docker安装在指定目录
  • 力扣hot100:环形链表(快慢指针法)(141)
  • 讯飞星火大模型Spark4.0Ultra的WebSocket交互实现解析
  • LeetCode 2958.最多K个重复元素的最长子数组
  • 【Oracle经验分享】字符串拼接过长问题的解决方案 —— 巧用 XMLAGG
  • MP381A-AB02 MEMS麦克风可靠性重新定义消费电子音频
  • 面试题:Redis要点总结(单机数据库)
  • 分类别柱状图(Vue3)
  • 视频生成迎来效率革命!字节提出视频生成稀疏注意力机制,计算量降20倍,速度升17.79倍!
  • 快速开发一类似个人网站空间的工具使用什么方式比较好,比如网页或者个Windows程序,并且使用什么技术开发比较好,区别优势局限性,分别说明一下
  • 计算机毕设选题:基于Python+MySQL校园美食推荐系统【源码+文档+调试】
  • vscode启用GEMINI CODE ASSIST插件
  • 仿QQ音乐的音乐播放器自动化测
  • daily notes[18]
  • 网络编程学习
  • App 上架全流程指南,iOS App 上架步骤、App Store 应用发布流程、uni-app 打包上传与审核要点详解
  • Java Flow API — Publisher、Subscriber 与 Processor 实战
  • 基于POI-TL实现动态Word模板数据填充(含图表):从需求到落地的完整开发实践
  • 【大模型-写作】STORM提升文章深度
  • (纯新手教学)计算机视觉(opencv)实战十四——模板与多个对象匹配
  • 论文阅读:arxiv 2024 Large Language Model Enhanced Recommender Systems: A Survey
  • 微店平台商品详情接口技术实现:从接口解析到数据结构化全方案
  • (12)使用 Vicon 室内定位系统(一)
  • 疯狂星期四文案网第65天运营日记
  • 【从零开始】12. 一切回归原点
  • JavaSE之深入浅出 IO 流:字节流、字符流与序列化流详解(含完整代码示例)
  • 【大模型推理】Qwen2.5模型硬件要求与4090Ti多并发推理方案