WWW服务器搭建(2)——Apache服务器配置与管理

一、Apache简介

1.1 关于Apache

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的Web服务器,可以在大多数计算机操作系统中运行,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

1.2 Apache 的特点
  • 具有开放的源代码。

  • 跨平台应用。Apache 服务器可以运行在绝大多数软硬件平台上,几乎所有 UNIX 操作系统都可以运行,同时也可以在 Windows 系统平台上良好的运行。

  • 支持各种 Web 编程语言。

  • 模块化设计。Apache 不是将所有的功能集中在固定的服务程序内部,而是尽可能地通过标准的模块实现特有的功能,因此 Apache 服务器具有良好的扩展性。

  • 运行稳定。Apache 服务器可以用于构建具有大负载访问量的 Web 站点。

  • 良好的安全性。开源软件共同具有的特性。

二、Apache服务器的安装

本文基于CentOS 7.5系统安装并配置Apache服务器,Apache的版本是2.4.6。

[root@apache ~]# uname -r
3.10.0-862.el7.x86_64
[root@apache ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
2.1 安装Apache

Apache的主程序名称是httpd,服务器配置好YUM源后,使用如下命令安装httpd,并可同时安装其依赖包。依赖包主要包括apr、apr-utils和httpd-tools。

[root@apache ~]# yum install httpd -y
2.2 启动Apache

httpd安装后,系统会生成一个名为httpd.service的服务,启动此服务便可以启动Apache。

[root@apache ~]# systemctl list-unit-files --type=service | grep httpd
httpd.service                                 disabled
[root@apache ~]# systemctl start httpd.service
[root@apache ~]# systemctl enable httpd.service

Apache服务器的守护进程为httpd,默认在TCP 80端口侦听用户请求。

[root@apache ~]# netstat -nptl | grep 80
tcp6     0      0 :::80           :::*            LISTEN      70787/httpd

在浏览器中输入服务器的http://IP地址可以浏览Apache的默认网站。

2.3 Apache相关目录和文件

1、Apache主配置文件

/etc/httpd/conf/httpd.conf ,是Apache的主配置文件,几乎包含了所有的配置。有的版本将主配置文件拆分成数个小配置文件,分别管理不同的参数。后面会详细解释Apache主配文件。

2、额外配置文件目录

为了便于管理和维护,可以将一些配置参数从主配置文件分离出来,形成额外的配置文件,以.conf结尾,存放在/etc/httpd/conf.d/目录中,在主配置文件中配置IncludeOptional conf.d/*.conf,从而当重启Apache的时候,可以将它们读入主配置文件。

3、默认网站主目录

/var/www/html/这个目录就是Apache默认的存放Web页面的目录、即默认网站主目录。

4、模块文件目录

Apache采用了模块化设计,Apache 的模块分为静态模块和动态模块两种。Apache 最基本的模块是静态模块,静态模块不能够随意的添加或卸载;而动态模块则可以进行添加和删除操作,因此使 Apache 具有很大的灵活性。Apache支持的外挂模块的模块文件默认是放置在/usr/lib64/httpd/modules目录中。

使用命令httpd -M可以查看哪些是静态模块(static),哪些是动态模块(shared)。

5、日志目录

/var/log/httpd/是Apache日志文件默认的保存位置,对于流量比较大的网站来说,这个目录要格外注意,这里的数据文件可能会非常大。

6、CGI程序目录

/var/www/cgi-bin/是Apache保存可执行的CGI程序的默认位置。

三、Apache配置文件详解

3.1 主站点的基本配置
ServerRoot "/etc/httpd"
# Apache软件安装的位置。若配置文件中其他目录没有指定绝对路径,则目录是相对于该目录。 
​
Listen 80 
# 服务器监听的端口号。 
​
ServerName www.example.com:80
# 主站点名称(网站的主机名)。 
​
ServerAdmin root@localhost
# 管理员的邮件地址。 
​
DocumentRoot "/var/www/html"
# 主站点的网页存储位置。 
​
User apache
Group apache
# 运行httpd进程的用户和组(都是apache)
 
3.2 对目录的访问控制

1、语法:

<Directory></Directory>用于封装一组指令,使之仅对某个目录及其子目录生效。

<Directory “目录路径”> ... </Directory>

2、例如:

<Directory "/var/www/html">Options Indexes FollowSymLinksAllowOverride NoneRequire all granted
</Directory>

3、说明:

(1)Options:配置在特定目录使用的特性,有以下8种选项

#1、All: 所有特性全部选择,除了MultiViews
#2、None: 所有特性全部不选择
#3、Indexes: 如果访问网站的目录中没有DirectoryIndex (如index.html),则返回该目录文件列表
#4、Includes: 允许服务端包含功能
#5、FollowSymLinks: 允许在目录中使用符号链接引导到其他目录
#6、SymLinksifOwnerMatch: 当符号链接和其指向的目录的所有者是同一用户时,才会使用符号链接
#7、ExecCGI: 允许使用CGI
#8、MultiViews: 允许使用内容协商的"多重视图",如果请求的路径可能对应多种类型的文件,那么服务器将根据请求的具体情况自动选择最匹配项
# 例如在网站根目录下有demo.jpg和demo.html的两个文件,此访问http://localhost/demo,如果根目录中没有demo子目录,那么服务器将会继续查找形如demo.*的文件,然后根据具体情况返回最匹配的demo.jpg或者demo.html

(2)AllowOverride:用于配置是否允许使用.htaccess文件中的配置覆盖当前配置生效,有6种选项

#1、All: 允许使用
#2、None: 不允许使用,.htaccess文件配置将被忽略
#3、FileInfo: 允许使用文件控制类型的配置指令,包括:AddEncoding, AddLanguage, AddType等
#4、AuthConfig: 允许使用认证类型的配置指令,包括:AuthDBMGroupFile, AuthDBMUserFile等
#5、Indexes: 允许使用控制目录索引的配置指令,包括:AddDescription, AddIcon等
#6、Limit: 允许使用权限控制类型的配置指令,包括:Allow, Deny和Order

(3)Require:用于配置访问权限,常见的配置如下:

# Require all denied: 拒绝所有访问请求,也是Require缺省配置
# Require all granted: 允许所有访问请求
# Require ip 192.168 10.10.10: 允许特定IP段的访问请求
# Require not ip 192.168 10.10.10: 不允许特定IP段的访问请求
# Require命令缺省标签为 <RequireAny>...</RequireAny>,表示任何一条规则满足即可访问
# 如果要表示所有规则同时满足时才可访问,需要使用标签 <RequireAll>...</RequireAll>
3.3 文件访问控制

1、语法

提供基于文件名的访问控制,文件名也可以是一个包含通配符的字符串,其中"?"匹配任何单个字符,"*"匹配任何字符串序列。在"~"字符之后可以使用正则表达式。

<Files "文件名"> ... </Files>

2、例如

<Files ".ht*">Require all denied #禁止访问.ht开头的文件
</Files>
3.4 模块配置

模块文件位于/usr/lib64/httpd/modules目录中,这些模块是否被加载,可以参考配置/etc/httpd/conf.modules.d目录中的配置文件。

在主配置文件中,使用<IfModule 模块名></IfModule >用于封装一组指令,使如果加载了对应的模块,封装的指令才有效。

3.5 默认访问页面

例如:

<IfModule dir_module>DirectoryIndex index.html#默认首页文件
</IfModule>
3.6 日志配置

1、错误日志

ErrorLog "logs/error_log"
#日志的保存位置/etc/httpd/logs/error_log
LogLevel warn
#指定错误日志的级别,对应级别及该级别以上的错误日志信息才会记录到错误日志中。

Apache的错误日志级别用于控制Apache服务器记录错误信息的严重程度。Apache的错误日志级别包括:

  • emerg:紧急(会导致服务器不能正常工作)

  • alert:需要立即修复的问题

  • crit:严重错误

  • error:错误

  • warn:警告

  • notice:需要注意的信息

  • info:一般信息

  • debug:调试信息(可能包含大量信息)

2、日志格式

<IfModule log_config_module>LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedLogFormat "%h %l %u %t \"%r\" %>s %b" common
​<IfModule logio_module># You need to enable mod_logio.c to use %I and %OLogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio</IfModule>
​#定义访问日志的保存位置和日志别名nicknameCustomLog "logs/access_log" combined
</IfModule>

格式中的各个参数,如:

  • %h:客户端的ip地址或主机名

  • %l:这是由客户端 identd 判断的RFC 1413身份,输出中的符号 "-" 表示此处信息无效。

  • %u:由HTTP认证系统得到的访问该网页的客户名。有认证时才有效,输出中的符号 "-" 表示此处信息无效。

  • %t:服务器完成对请求的处理时的时间。

  • %r:引号中是客户发出的包含了许多有用信息的请求内容。

  • %>s:这个是服务器返回给客户端的状态码。

  • %b:最后这项是返回给客户端的不包括响应头的字节数。

  • %{Referer}i:此项指明了该请求是从被哪个网页提交过来的。

  • %{User-Agent}i:此项是客户浏览器提供的浏览器识别信息。

3、例如

192.168.200.1 - - [29/Apr/2024:21:24:09 +0800] "GET /noindex/css/bootstrap.min.css HTTP/1.1" 200 19341 "http://192.168.200.100/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
3.7 网页重定向和虚拟目录配置
<IfModule alias_module># Redirect: 用于将访问的文件重定向到新的目录# Example:# Redirect permanent /foo http://www.example.com/barRedirect    /mastc          https://www.mastc.edu.cn/# Alias: 将网站路径映射到文件系统路径,用于访问不在网站根目录下的内容,即虚拟目录# Example:# Alias /webpath /full/filesystem/pathAlias /images /var/images# ScriptAlias: 脚本映射,与Alias类似,只是目标文档被视为脚本# 并在请求时由服务器运行,而不是作为发送到客户端的文档ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
例1:网页跳转
Redirect    /mastc      https://www.mastc.edu.cn/

例2:虚拟目录

  • 准备目录和文件

[root@centos-teach ~]# mkdir /var/images
[root@centos-teach ~]# cp /usr/share/backgrounds/*.jpg /var/images/
  • 配置主配置文件

Alias /images /var/images
<Directory "/var/images">AllowOverride NoneOptions  Indexes FollowSymLinksRequire all granted
</Directory>
3.8 其他配置
# 响应内容的默认编码格式
# 通常,文件的字符编码和客户端浏览器编码相同时,页面才会正常显示,否则会乱码。
# 可以通过meta标签或header()函数可以设置客户端浏览器的编码。
# 优先级:header() >> AddDefaultCharset >> meta
AddDefaultCharset UTF-8
# 导入额外配置文件
IncludeOptional conf.d/*.conf
# 导入功能模块配置文件
Include conf.modules.d/*.conf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/696416.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爆款小红书免费流量体系课程(两周变现),小红书电商教程

课程下载&#xff1a;小红书电商教程-课程网盘链接提取码下载.txt资源-CSDN文库 更多资源下载&#xff1a;关注我。 课程内容&#xff1a; 10-爆款标题(三段式取标题).mp3 11-爆款封面怎么作图.mp3 12-爆款内容的模板(三段式模板).mp3 13-小红书流量推荐背后的秘密(四大流…

P6397 [COI2008] GLASNICI

题目描述 一条直线上有 &#x1d45b; 个信使&#xff0c;将他们按照从左至右的顺序以 1 至 &#x1d45b; 编号。换句话说&#xff0c;设 &#x1d456; 号信使的的坐标为 &#x1d451;&#x1d456;​&#xff0c;则对于 1≤&#x1d456;<&#x1d45b;&#xff0c; &am…

ubuntu server 22.04 安装docker、docker-compose

ubuntu server 22.04安装docker有两种方式&#xff0c;第一种是使用ubuntu镜像源的软件包进行安装&#xff0c;第二种使用官方GPG密钥手动添加Docker存储库方式进行安装&#xff0c;两种方式都可以&#xff0c;但第二种方式略复杂&#xff0c;这里介绍第一种比较简单的安装方式…

保研机试之【同步操作】

我们先来看一下这六个选项是什么意思&#xff1a; 思考一下&#xff0c;给出你的答案~ 再来总结一下六个选项的考点&#xff1a; 我认为答案选择B&#xff0c;因为&#xff08;延迟敏感&#xff09;&#xff08;短&#xff09;&#xff08;更新&#xff09;

让 计算机 将 数学 公式 表达式 的计算过程绘制出来 【mathematical-expression(MAE)】

目录 文章目录 目录介绍开始实战引入数学表达式计算库引入流程图代码生成库开始进行生成 介绍 大家好 今天我们来分享一个新知识&#xff0c;将数学表达式的整个计算过程&#xff0c;以及计算繁多结果在 Java 中绘制出来&#xff0c;计算机中的数学表达式计算的功能很常见了&a…

Java中PriorityQueue的用途和性能深度剖析

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

[C++核心编程-09]----C++类和对象之继承

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

探究NVMe SSD HMB应用场景与影响-<续>

如果需要采用HMB功能&#xff0c;需要SSD支持NVME协议且NVMe 1.2及以上版本。NVME协议中对HMB对应有2个关键参数&#xff1a; HMB建议值&#xff08;HMPRE&#xff09;&#xff1a;设定实际分配给HMB使用的主机内存容量&#xff0c;为设备提供最优性能的内存分配量。 HMB最小值…

Offer必备算法38_贪心算法四_八道力扣题详解(由易到难)

目录 ①力扣56. 合并区间 解析代码 ②力扣435. 无重叠区间 解析代码 ③力扣452. 用最少数量的箭引爆气球 解析代码 ④力扣397. 整数替换 解析代码1_递归改记忆化搜索 解析代码2_贪心策略 ⑤力扣354. 俄罗斯套娃信封问题 解析代码1_动态规划&#xff08;超时&#xf…

盛最多水的容器(双指针)

解题思路&#xff1a; 1&#xff0c;暴力解法&#xff08;超时&#xff09; 我们可以使用两层for循环进行遍历。找到那个最大的面积即可&#xff0c;这里我就不写代码了&#xff0c;因为写了也是超时。 2&#xff0c;双指针法 先定义两个指针一个在最左端&#xff0c;一个在…

C++入门-stack和queue(下)

大家好啊&#xff0c;在这先祝天下的母亲节日快乐啦&#xff01;现在呢&#xff0c;给大家带来C中priority_queue和容器适配器的相关知识点 3.1 C 中的优先队列&#xff08;priority_queue&#xff09;介绍 优先队列&#xff08;priority_queue&#xff09;是一种特殊的队列…

(三)小程序样式和组件

视频链接&#xff1a;尚硅谷2024最新版微信小程序 文章目录 小程序的样式和组件介绍样式-尺寸单位 rpx样式-全局样式和局部样式组件-组件案例演示组件案例-轮播图区域绘制组件案例-轮播图图片添加组件案例-绘制公司信息区域组件案例-商品导航区域组件案例-跳转到商品列表组件案…