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.mzph.cn/web/11625.shtml

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

相关文章

01-02-5

1、单链表中按位置查找 a.原理 通过传递的位置&#xff0c;返回该位置对应的地址&#xff0c;放到主函数定义的指针变量中。 我们认为位置从&#xff1a;有数据的节点开始计数 即如下结构&#xff1a; 查找位置&#xff0c;就是返回该位置对应的空间地址。 b.代码说明 Ⅰ…

H5嵌入原生----兼容安卓与ios

主要分UI展示&#xff0c;键盘&#xff0c;输入框等等。解决bug最苦恼的问题不是没有解决方案&#xff0c;而是你没有找到真正的原因。再就是现象难以重现&#xff0c;每次都要发布代码&#xff0c;然后到手机app中去测试&#xff0c;模拟。这些地方会耗费大量的精力。 一、UI…

【软设】常见易错题汇总

目录 计算机系统基础 程序语言基础 数据结构 算法设计与分析 计算机网络与信息安全 软件工程基础 开发方法&#xff08;结构化与面向对象&#xff09; 数据库 操作系统 知识产权相关的法律法规 &#x1f92f;&#x1f92f;&#x1f92f;&#x1f92f;&#x1f92f;&#x1f9…

《系统架构设计师教程(第2版)》第10章-软件架构的演化和维护-07-软件架构维护

文章目录 1. 软件架构知识管理1.1 概念1.2 架构知识的获取1.3 作用1.4 架构知识管理的现状 2 软件架构修改管理3 软件架构版本管理4. 示例4.1 背景4.2 数据获取4.3 数据计算4.4 结果分析4.4.1 圈复杂度 (CCN)4.4.2 扇入扇出度 (FFC)4.4.3 模块间耦合度 (CBO)4.4.4 模块的响应 (…

mysql group by 细节介绍

mysql中group by的用法是配合聚合函数&#xff0c;利用分组信息进行统计&#xff0c;语句如“select name,sum(id) from test group by name,number”。 先来看下表1&#xff0c;表名为test&#xff1a; 执行如下SQL语句&#xff1a; SELECT name FROM test GROUP BY name 你…

OFDM802.11a的FPGA实现(十四)data域的设计优化,挤掉axi协议传输中的气泡

原文链接&#xff08;相关文章合集&#xff09;&#xff1a;OFDM 802.11a的xilinx FPGA实现 目录 1.前言 2.data域的时序要求 3.Debug 1.前言 前面12篇文章详细讲述了&#xff0c;OFDM 802.11a发射部分data域的FPGA实现和验证&#xff0c;今天对data域的设计做一个总结。在…

springboot306基于Java的民宿管理系统(源码+包运行+配套LW+技术指导)

项目描述 临近学期结束&#xff0c;开始毕业设计制作&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉的困难吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于Java的民宿管理…

CoSeg: Cognitively Inspired Unsupervised Generic Event Segmentation

名词解释 1.特征重建 特征重建是一种机器学习中常用的技术&#xff0c;通常用于自监督学习或无监督学习任务。在特征重建中&#xff0c;模型被要求将输入数据经过编码器&#xff08;encoder&#xff09;转换成某种表示&#xff0c;然后再经过解码器&#xff08;decoder&#x…

升级Microsoft 365后,SAP GUI中无法打开Excel的解决方案

最近&#xff0c;我们遇到了一个棘手的问题&#xff0c;一位客户在升级到Microsoft 365后&#xff0c;无法在SAP GUI中打开Excel。这个问题不仅影响了工作效率&#xff0c;也给用户的日常操作带来了不便。在本文中&#xff0c;我们将探讨问题的成因&#xff0c;并提供一种解决方…

泛微E9开发 添加多个多选框,实现单选框的效果

利用多个多选框实现单选框的效果 1、功能背景2、展示效果3、实现效果 1、功能背景 如下图所示&#xff0c;在表单中新增四个“选择框-复选框”类型的字段&#xff0c;并且设置其中的选项&#xff0c;每个多选框都只有一个选项&#xff0c;通过代码块实现单选框的效果 1.显示模…

邓闲小——生存、生活、生命|真北写作

人生有三个层次∶生存、生活、生命。 生存就是做必须做的事。生存的模式是邓&#xff0c;是交易&#xff0c;是买卖。别人需要的东西&#xff0c;你生产出来&#xff0c;卖给他。哪怕这个东西没啥用&#xff0c;也可以卖&#xff0c;情绪也可以卖。你需要的东西&#xff0c;你花…

分布式与一致性协议之POW算法

POW算法 概述 谈起比特币&#xff0c;你应该并不陌生。比特币是基于区块链实现的&#xff0c;而区块链运行在因特网上&#xff0c;这就存在有人试图作恶的情况。有些读者可能已经发现了&#xff0c;口信消息型拜占庭问题之解、PBFT算法虽然能防止坏人作恶&#xff0c;但只能防…

八、e2studio VS STM32CubeIDE之内存使用情况窗口

目录 一、概述/目的 二、STM32CubeIDE Build Analyzer 三、e2studio Memory Usage 八、e2studio VS STM32CubeIDE之内存使用情况窗口 一、概述/目的 1、嵌入开发最大特点之一就是资源受限&#xff0c;关注芯片资源使用详情是优秀工程师的技能之一 2、Keil和IAR都不支持内存…

CTFshow 信息搜集

第一题1 进入靶场 直接看源码发现flag 第二题 1 按右键没办法看源码 按ctrlu可以查看源码 第三题 0 查看源码 发现还是什么都没有 用bp抓包发现flag 第四题1 直接进robots.txt 访问flagishere.txt获得flag 第五题 0 提示了phps源码泄露 用目录扫描工具没扫出来 看wp 发现有…

网络编程套接字详解

目录 1. 预备介绍 2.网络字节序 3.udp网络程序 4.地址转换函数 5.udp网络编程 1.预备介绍 1.1源IP地址和目标IP地址 举个例子: 从北京出发到上海旅游, 那么源IP地址就是北京, 目标IP地址就是上海. 1.2 端口号 作用: 标识一个进程, 告诉OS这个数据交给那个进程来处理; (1)…

Oracle: 一个用户多个表空间处理

1.场景描述 今天工作中&#xff0c;同事说建了一个用户&#xff0c;往里面导入数据时提示表空间不存在&#xff0c;建了表空间后&#xff0c;部分仍然导不进去。期望帮忙创建表空间&#xff0c;并指定默认表空间&#xff0c;成功将数据导入。 &#xff08;1&#xff09;创建好的…

K8s:二进制安装k8s(单台master)

目录 一、安装k8s 1、拓扑图 2、系统初始化配置 2.1关闭防火墙selinx以及swap 2.2设置主机名 2.3在每台主机中添加hosts&#xff0c;做映射 2.4调整内核参数&#xff0c;将桥接的ipv4流量传递到iptables&#xff0c;关闭ipv6 2.4时间同步 3、部署docker引擎&#xff0…

使用LangChain和Neo4j快速创建RAG应用

大家好&#xff0c;Neo4j 通过集成原生的向量搜索功能&#xff0c;增强了其对检索增强生成&#xff08;RAG&#xff09;应用的支持&#xff0c;这标志着一个重要的里程碑。这项新功能通过向量索引搜索处理非结构化文本&#xff0c;增强了 Neo4j 在存储和分析结构化数据方面的现…

表征和基于结构的蛋白质工程:黄芪特异性皂苷乙酰转移酶-文献精读14

Characterization and structure-based protein engineering of a regiospecific saponin acetyltransferase from Astragalus membranaceus 表征和基于结构的蛋白质工程&#xff1a;黄芪特异性皂苷乙酰转移酶&#xff0c;一篇乙酰基转移酶文章精读分享~ 摘要 乙酰化有助于许…

【C++】继承相关(基类与派生类的继承关系以及细节整理)

目录 00.引言 01.继承的定义 02.基类和派生类对象 03.继承中的作用域 04.派生类的默认成员函数 05.友元、静态成员 00.引言 继承是面向对象编程中的一个重要概念&#xff0c;它的作用是创建一个新的类&#xff0c;该类可以从一个已存在的类&#xff08;父类/基类&#x…