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

news2024/11/24 11:08:34

一、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 FollowSymLinks
     AllowOverride None
     Require 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\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
​
    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
​
    #定义访问日志的保存位置和日志别名nickname
    CustomLog "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/bar
    Redirect    /mastc          https://www.mastc.edu.cn/
    
    # Alias: 将网站路径映射到文件系统路径,用于访问不在网站根目录下的内容,即虚拟目录
    # Example:
    # Alias /webpath /full/filesystem/path
    Alias /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 None
  Options  Indexes FollowSymLinks
  Require all granted
</Directory>
3.8 其他配置
# 响应内容的默认编码格式
# 通常,文件的字符编码和客户端浏览器编码相同时,页面才会正常显示,否则会乱码。
# 可以通过meta标签或header()函数可以设置客户端浏览器的编码。
# 优先级:header() >> AddDefaultCharset >> meta
AddDefaultCharset UTF-8
# 导入额外配置文件
IncludeOptional conf.d/*.conf
# 导入功能模块配置文件
Include conf.modules.d/*.conf

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

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

相关文章

2024 年中国大学生程序设计竞赛全国邀请赛(郑州)暨第六届CCPC河南省大学生程序 设计竞赛Problem L. Toxel 与 PCPC II

//sort bug下标 遍历dp. //没修负的bug肯定连续 #include<bits/stdc.h> using namespace std; #define int long long const int n1e611; int a,b,c[n],dp[n]; signed main() {ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>a>>b;for(int i1;…

彻底搞定找不到msvcp100.dll,无法继续执行代码的问题

当您在使用电脑过程中遇到程序运行异常&#xff0c;提示“缺失msvcp100.dll文件”时&#xff0c;不必过于焦虑&#xff0c;此问题可通过一系列简单步骤得到有效解决。MSVCP100.dll是Microsoft Visual C库的一部分&#xff0c;主要用于支持某些应用程序运行所需的特定功能。如果…

C++ 派生类的引入与特性

一 继承与派生 从上面的例子可以看出&#xff1a; 继承&#xff1a;一旦指定了某种事物父代的本质特征&#xff0c;那么它的子代将会自动具有哪些性质。这就是一种朴素的可重用的概念。 派生&#xff1a;而且子代可以拥有父代没有的特性&#xff0c;这是可扩充的概念。 1 C 的…

论文翻译及部分笔记:LANDMARC: Indoor Location Sensing Using Active RFID

LANDMARC: Indoor Location Sensing Using Active RFID 摘要 移动计算设备和嵌入式技术的日益融合引发了“上下文感知”应用的发展和部署&#xff0c;其中位置是最重要的上下文。在本文中&#xff0c;我们介绍了一种名为LANDMARC的定位感知原型系统&#xff0c;该系统使用射频识…

四川汇昌联信:拼多多网点怎么开?大概需要多少钱?

想要开一家拼多多网点&#xff0c;你肯定很关心需要准备多少资金。下面&#xff0c;我们就来详细解答这个问题&#xff0c;并从多个角度分析开设网点的要点。 一、 开设拼多多网点&#xff0c;首要任务是确定启动资金。根据不同的经营模式和地区差异&#xff0c;成本会有所不同…

2年技术调研发现:做到这2点,升职加薪稳了!

一 背景介绍 近一年经历过2年技术调研&#xff0c;针对专业人才的评定原则及等级划分给与一定的指导&#xff0c;比如软件测试工程师需要具备哪些能力&#xff0c;工作职责及高、中、低级别如何进行区分。 在参与访谈过程中&#xff0c;发现针对测试的部分应该梳理出一份通用…

MP4视频转gif怎么做?看看这篇就会了

喜欢刷短视频的小伙伴经常会看到各种好玩有趣的片段&#xff0c;想要通过自己将这段视频制作成gif动态图片的还不想下载软件的时候要怎么办呢&#xff1f;这个很简单&#xff0c;不需要下载什么软件用专业的Gif动画制作网站&#xff0c;支持超清的画质导出&#xff0c;能够完成…

2024软件测试面试必备面试题大全

1. 请自我介绍一下(需简单清楚的表述自已的基本情况&#xff0c;在这过程中要展现出自信&#xff0c;对工作有激情&#xff0c;上进&#xff0c;好学) 面试官您好&#xff0c;我叫###&#xff0c;今年26岁&#xff0c;来自江西九江&#xff0c;就读专业是电子商务&#xff0c;…

44.WEB渗透测试-信息收集-域名、指纹收集(6)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a; web指纹&#xff1a; 每一个网站&#xff0c;前端开发语言&#xff0c;后端语言&#…

MT3034 算术招亲

跟MT3033新的表达式类似&#xff0c;只多了一个括号合法性的判断 #include <bits/stdc.h> using namespace std; const int N 40; bool tag[N]; bool is_op(char c) {return c || c - || c * || c / || c ^; } int priority(char op) { // 优先级排序if (op ||…

Electron-Vue 脚手架避坑实录,兼容Win11,升级electron22,清理控制台错误

去年的还是有用的&#xff0c;大家继续看&#xff0c;今年再补充一些Electron-Vue 异常处理方案 M1 和 Window10_electron异常处理-CSDN博客 代码gitee.com地址 electron-demo: electron 22 初始代码开发和讲解 升级electron为22版本&#xff08;这个版本承上启下&#xff0c…

15集合的应用

集合的概念 集合是一个容器&#xff0c;可以容纳其他类型的数据&#xff0c;前面所讲的数组就是一个集合。 所有的集合相关的类和接口都在java.util包下 特点 集合不能直接存储基本数据类型(但是代码上不需要体现&#xff0c;因为Java中有自动装箱)另外集合不能直接存储Java…

【基于element ui的color选择器】基于element ui的color选择器

技术版本如下&#xff1a; vue 2.6.14 less 3.13.1 element-ui 2.15.6 less-loader 5.0.0需求&#xff1a; 支持RGB、HEX编码、支持吸管吸取颜色、颜色选择器、颜色模板、透明度、色板、线性渐变颜色 效果图&#xff1a; 1.引入选择器的color-all文件 <template><…

代码随想录训练营Day 27|理论基础、力扣 77. 组合

1.理论基础 题目链接/文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;带你学透回溯算法&#xff08;理论篇&#xff09;| 回溯法精讲&#xff01;_哔哩哔哩_bilibili 来自代码随想录的网站&#xff1a; void backtracking(参数) {if (终止条件) {存放结果;return;}for (…

网络基础-SSH协议(思科、华为、华三)

SSH&#xff08;Secure Shell&#xff09;是一种用于安全远程访问和安全文件传输的协议。它提供了加密的通信通道&#xff0c;使得用户可以在不安全的网络上安全地远程登录到远程主机&#xff0c;并在远程主机上执行命令、访问文件以及传输文件&#xff0c;本篇主要讲解命令执行…

Java 对象序列化

序列化&#xff1a;把对象转化为可传输的字节序列过程称为序列化。 反序列化&#xff1a;把字节序列还原为对象的过程称为反序列化 序列化的作用是方便存储和传输&#xff0c;细节可参考如下文章&#xff1a; 序列化理解起来很简单 - 知乎序列化的定义 序列化&#xff1a;把对…

上海人工智能实验室浦视团队联培博士(2025)招生正式启动!

上海人工智能实验室浦视团队2025级联培博士招生计划开启啦&#xff01; 上海人工智能实验室作为国内领先的人工智能领域的新型科研机构&#xff0c;不仅致力于攻克重要基础理论难题&#xff0c;更着眼于构建全球领先的 AI 技术人才培养平台。浦视团队是大模型方向的核心科研团…

Sqli-labs第五~八关(布尔盲注)

目录 首先找到他们的闭合方式 操作 总结&#xff1a; 第五关根据页面结果得知是字符型但是和前面四关还是不一样是因为页面虽然有东西。但是只有对于请求对错出现不一样页面其余的就没有了。这个时候我们用联合注入就没有用&#xff0c;因为联合注入是需要页面有回显位。如果…

【工具推荐】好用的电脑文件检索工具 everything

之前每次想要检索一些电脑中的文件&#xff0c;软件什么之类的 只能在“我的电脑”里面&#xff0c;搜索 我去&#xff0c;真的是巨慢无比~&#xff0c;搜好了有些时候又忘记了&#xff0c;然后就得重新搜 直到我发现了…… Everything 他的名字起的确实好&#xff0c;想找…

网络工程师----第二十五天

计算机基础 第二章&#xff1a;物理层 物理层的功能&#xff1a;怎样在连接各种计算机的传输媒体上传输数据比特流&#xff0c;屏蔽不同传输媒体和通信手段的差异。 传输媒体接口的特性&#xff1a; 机械特性&#xff1a;接口所用接线器的形状和尺寸、引脚数目和排列、固定…