如何在 Ubuntu 或 Debian VPS 上配置 Apache Web 服务器

简介

Apache 是互联网上最流行的 Web 服务器之一。它用于为超过一半的活跃网站提供服务。虽然有许多可行的 Web 服务器可以为您提供内容,但由于其普及性,了解 Apache 的工作原理是很有帮助的。

本文将检查一些常规配置文件以及其中可以控制的选项。本文将遵循 Apache 文件的 Ubuntu/Debian 布局,这与其他发行版构建的配置层次结构不同。

先决条件

在开始探索 Apache 配置之前,您应该在服务器上安装 Apache。您可以通过阅读我们的《如何在 Ubuntu 20.04 上安装 Apache Web 服务器》教程或《如何在 Debian 10 上安装 Apache Web 服务器》教程来学习如何安装。

Apache 文件层次结构

Apache 将其主要配置文件保存在 /etc/apache2 文件夹中。执行以下命令将列出此文件夹中的所有文件:

ls -f /etc/apache2
envars sites-available . apache2.conf .. sites-enabled mods-available ports.conf magic mods-enabled conf-enabled conf-available

该目录中有许多纯文本文件和一些子目录。以下是一些有用的位置,需要熟悉:

  • apache2.conf:这是服务器的主要配置文件。几乎所有的配置都可以在此文件中完成,尽管建议使用单独的指定文件以简化操作。此文件将配置默认值,并且是服务器读取配置详细信息的中心点。
  • ports.conf:此文件用于指定虚拟主机应监听的端口。如果您正在配置 SSL,请确保检查此文件是否正确。
  • sites-available/sites-enabled/sites-available 目录包含虚拟主机文件配置。此文件夹中的配置将确定为哪些请求提供哪些内容。这是通过链接到 sites-enabled 目录来启用的,后者存储已激活的虚拟主机配置文件。当 Apache 启动或重新加载时,它会读取配置文件和链接,从 sites-enabled 目录中编译出完整的配置。
  • conf-available/conf-enabled/:这些目录包含未附加到虚拟主机配置文件的配置片段。
  • mods-enabled/mods-available/:这些目录定义可以选择加载的模块。这些目录包含两个组成部分:以 .load 结尾的文件,其中包含加载特定模块的片段,以及以 .conf 结尾的文件,其中存储这些模块的配置。

Apache 配置不是在单个单片文件中进行的,而是通过模块化设计进行的,可以根据需要添加和修改新文件。

探索 Apache2.conf 文件

您的 Apache 服务器的主要配置详细信息保存在 /etc/apache2/apache2.conf 文件中。
此文件分为三个主要部分:

  • 全局 Apache 服务器进程的配置
  • 默认服务器的配置
  • 虚拟主机的配置

使用您喜欢的文本编辑器打开此文件。以下示例使用 nano

sudo nano /etc/apache2/apache2.conf

在 Ubuntu 和 Debian 中,此文件用于配置全局定义。使用 Include 指令来处理默认服务器和虚拟主机的配置。
Include 指令允许 Apache 在当前文件中读取其他配置文件,位置在该语句出现的位置。结果是 Apache 在启动时动态生成一个全面的配置文件。

在此文件中可以找到许多不同的 IncludeIncludeOptional 语句。这些指令加载模块定义、ports.conf 文档、conf-enabled/ 目录中的特定配置文件以及 sites-enabled/ 目录中的虚拟主机定义:

…
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
…
Include ports.conf
…
IncludeOptional conf-enabled/*.conf
…
IncludeOptional sites-enabled/*.conf

全局配置

有一些选项您可能希望在全局配置中进行修改:

超时

默认情况下,此参数设置为 300。这意味着服务器最多有 300 秒来完成每个请求。
此参数可以安全地降低到 3060 秒之间。

KeepAlive

如果设置为 On,此选项将允许每个连接保持打开状态,以处理来自同一客户端的多个请求。
如果设置为 Off,每个请求都将需要建立一个新的连接,这可能会导致根据您的设置和流量情况产生重大开销。

MaxKeepAliveRequests

这控制每个连接在关闭之前将处理多少个单独的请求。保持此数字较高将使 Apache 更有效地为每个客户端提供内容。
默认设置为 100。将此值设置为 0 将允许 Apache 为每个连接提供无限数量的请求。

KeepAliveTimeout

此设置指定在完成上一个请求后等待下一个请求的时间。如果达到超时阈值,连接将会断开。
这意味着下次请求内容时,服务器将建立一个新的连接来处理客户端正在访问的页面内容的请求。默认设置为 5

检查完这个配置文件的内容后,您可以按 CTRL+X 来关闭它。

多处理模块

多处理模块(MPM)扩展了 Apache 的模块化设计。MPM 负责监听、指导和处理不同的网络请求。您可以使用以下命令交叉引用您的 Apache 安装是在哪个部分编译的:

apache2 -L
编译的模块:
  core.c
  mod_so.c
  mod_watchdog.c
  http_core.c
  mod_log_config.c
  mod_logio.c
  mod_version.c
  mod_unixd.c

您可以使用 a2query -M 命令检查服务器上的 MPM 类型:

a2query -M
event

输出显示此服务器使用 event MPM。您的安装可能有多个可供选择,但只能选择一个。

虚拟主机文件

默认虚拟主机声明可以在名为 000-default.conf 的文件中找到,该文件位于 sites-available/ 目录中。您可以通过检查此文件来了解虚拟主机文件的一般格式。

使用以下命令打开文件:

sudo nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
…
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
…
ErrorLog ${APACHE LOG DIR}/error.log
CustomLog ${APACHE LOG DIR}/access.log combined
…

默认虚拟主机配置为处理端口 80 上的任何请求,即标准 HTTP 端口。这在声明头部中定义为 *:80,表示任何接口上的端口 80
但这并不意味着它一定会处理此端口上的服务器的每个请求。Apache 使用最匹配请求的最具体的虚拟主机定义。如果有更具体的定义,它可能会取代此定义。检查完文件后,您可以按 CTRL+X 来关闭它。

虚拟主机配置选项

以下选项设置在虚拟主机定义之外的任何其他较低级别子声明中。它们适用于整个虚拟主机。
首先,打开 conf-available/ 目录中的 security.conf 文件:

sudo nano /etc/apache2/conf-available/security.conf

该文件包含 Server Signature 指令,允许您指定在服务器出现问题时应使用的联系电子邮件。您可以将默认选项从 On 更改为 EMail 以显示服务器管理员电子邮件地址。如果您调整此设置,请确保愿意接收邮件:

…
ServerSignature EMail
…

CTRL+X 退出文件。编辑配置文件后,会提示您确认更改。按 Y 保存更改到文件,按 N 放弃更改。

在虚拟主机文件中,您可以添加 ServerName 指令,指定此请求应处理的域名或 IP 地址。这是可以为虚拟主机添加特定性的选项,允许它覆盖默认定义,如果匹配 ServerName 值的话。

运行以下命令打开您的虚拟主机文件,确保将 your_domain 变量替换为您的实际域名:

sudo nano /etc/apache2/sites-available/your_domain.conf

your_domain 追加到 ServerName 指令:

…
ServerName your_domain
…

同样,您还可以使用 ServerAlias 指令使虚拟主机适用于多个名称。这提供了访问相同内容的备用路径。一个很好的用例是添加相同的域名,前面加上 www

…
ServerAlias www.your_domain.com
…

DocumentRoot 指令指定此虚拟主机请求的内容将位于何处。在 Ubuntu 上,默认虚拟主机设置为从 /var/www/ 目录提供内容:

…
DocumentRoot /var/www/your_domain/public_html
…

目录定义

在虚拟主机定义中,有关服务器如何处理文件系统中的不同目录的定义。Apache 将按照从最短到最长的顺序应用所有这些方向,因此再次有机会覆盖先前的选项。

使用以下命令打开 apache2.conf 文件:

sudo nano /etc/apache2/apache2.conf
…
<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
…

第一个目录定义适用于 /root 目录。这将为您的虚拟主机提供基线配置,因为它适用于文件系统上提供的所有文件。请注意此文件中包含的目录配置选项以及一些有用的注释。此默认配置拒绝对所有内容的访问,除非在后续目录定义中另有规定。

Require 指令可以限制或打开服务器内不同资源的访问。
AllowOverride 指令用于决定是否允许 .htaccess 文件覆盖设置,如果它放置在内容目录中。默认情况下不允许,但在各种情况下启用它可能很有用。
检查完文件内容后,您可以按 CTRL+X 来关闭它。

别名和 ScriptAlias 语句

有时目录定义前会有 AliasScriptAlias 指令。
使用以下命令打开您的虚拟主机配置文件,并将 your_domain 变量替换为您的域名:

sudo nano /etc/apache2/sites-available/your_domain.conf

Alias 指令将 URL 路径映射到目录路径。例如,在处理对 your_domain 的请求的虚拟主机中,以下内容将允许在导航到 your_domain.com/content/ 时访问 /usr/local/apache/content/ 中的内容:

Alias “/content/” “/usr/local/apache/content/”

ScriptAlias 指令以相同的方式操作,但用于定义其中包含可执行组件的目录:

ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"

请记得按照前一节中讨论的方式定义具有访问权限的目录。完成文件的编辑后,按 CTRL+X 退出文件。如果对此文件进行了任何更改,请按 Y 保存更改到文件中,或按 N 保持文件在进行任何更改之前的状态。

启用站点和模块

一旦您有一个满足您要求的虚拟主机文件,您可以使用 Apache 提供的工具将其转换为实时网站。
要在 sites-enabled 目录中为 sites-available 目录中的现有文件创建符号链接,请发出以下命令。确保将 your_domain 替换为您自己的虚拟主机站点配置文件的名称:

sudo a2ensite your_domain

启用站点后,发出以下命令告诉 Apache 重新加载其配置文件,以使更改生效:

sudo systemctl restart apache2

还有一个用于禁用虚拟主机的伴侣命令。它通过从 sites-enabled 目录中删除符号链接来操作。例如,启用了您的虚拟主机站点后,您可以禁用默认的 000-default 站点:

sudo a2dissite 000-default

模块可以通过使用 a2enmoda2dismod 命令来启用或禁用。它们的工作方式与 a2ensitea2dissite 命令的版本相同。例如,要启用 info 模块,您可以使用以下命令:

sudo a2enmod info

同样,您可以使用 a2dismod 命令禁用模块:

sudo a2dismod info

在修改配置文件并启用或禁用模块后,请记得重新启动 Apache。

结论

Apache 非常灵活和模块化,因此根据您的设置,配置需求会有所不同。
通过上面的一些常见用例,您应该对主要配置文件的用途以及它们之间的交互有了很好的理解。如果您需要了解特定的配置选项,提供的文件都有很好的注释,而 Apache 也提供了出色的文档。希望现在配置文件不再那么令人生畏,您会感到更舒适地进行实验和修改以满足您的需求。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

质量管理,怎能不知道SPC?

SPC&#xff08;统计过程控制&#xff09;是质量管理的一个重要组成部分&#xff0c;它可以帮助企业更好地控制生产过程、提高产品质量、降低生产成本、增强企业的竞争力。 SPC是一种应用统计技术对过程中的各个阶段进行评估和监控&#xff0c;建立并保持过程处于可接受的并且稳…

深入理解Linux调试工具eBPF和strace、内存泄漏处理、Kubernetes容器调试以及C++协程的崩溃信息收集

在软件开发领域&#xff0c;无论是初级开发者还是资深工程师&#xff0c;都需要面对复杂的调试工作。本文将介绍几个重要的调试工具和技术&#xff0c;并提供实际调试方法的指导&#xff0c;包括Linux环境下的eBPF和strace&#xff0c;内存泄漏问题的处理&#xff0c;Kubernete…

020Node.js的FS模块使用fs.mkdir创建目录

Node.js的FS模块使用fs.mkdir创建目录 //fs.mkdir 创建目录 /*path 将创建的目录路径mode 目录权限&#xff08;读写权限&#xff09;&#xff0c;默认777callback 回调&#xff0c;传递异常参数err*/ const fsrequire(fs);fs.mkdir(./css,(err)>{if(err){console.log(err)…

时间序列模型(含python程序实现)

常用按时间顺序排列的一组随机变量来表示一个随机事件的时间序列&#xff0c;简记为 用表示该随机序列的n个有序观察值&#xff0c;称之为序列长度为n的观察值序列。 常用的时间序列模型 时间序列的预处理 拿到一个观察值序列后&#xff0c;首先要对它的纯随机性和平稳性进行…

PC-3000 Mobile Pro: 智能手机及平板设备数据提取及取证工具

天津鸿萌科贸发展有限公司从事数据安全业务20余年&#xff0c;在数据恢复、数据取证、数据备份等领域有丰富的案例经验、前沿专业技术及良好的行业口碑。同时&#xff0c;公司面向取证机构及数据恢复公司&#xff0c;提供数据恢复实验室建设方案&#xff0c;包含数据恢复硬件设…

书生·浦语 大模型(学习笔记-9)大模型微调的相关概念 预训练 与 微调 全量微调FFT 与 PEFT的区别

目录 一、什么是大模型微调 二、指令微调 三、微调的目的 三、微调的方式 四、微调的步骤 五、微调数据准备 六、微调的数据质量 一、什么是大模型微调 预训练和微调的区别&#xff0c;这个很关键 二、指令微调 这个地方主要是微调的角度不同&#xff0c;简单理解&#…

linux jmeter ant下载并安装【2024-亲测】

环境 centos7 一、下载jmeter 在这里插入代码片wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.3.tgz --no-check-certificate解压 tar -zxvf apache-jmeter-5.6.3.tgz复制到安装目录、设置环境变量 vim /etc/profile添加环境变量&#xff0c;路径改成…

YOLOv8: 快速而准确的对象检测

YOLOv8: 快速而准确的对象检测 背景 对象检测是计算机视觉中的一个关键任务,它可以帮助我们在图像或视频中识别和定位感兴趣的物体。其中,YOLO(You Only Look Once)系列是一类非常出色的实时对象检测算法,以其快速和准确的特点而闻名。YOLOv8是YOLO系列的最新版本,由Ultralyti…

【ESP32S3】使用 Flash 下载工具完成 Flash 加密功能

此篇文档记录通过 Flash 下载工具 完成 Flash 加密 功能的实现&#xff0c;此文档不启用 Flash 加密方案的 NVS 加密。 Flash 加密启动的验证代码&#xff1a;esp-idf/components/bootloader_support/src/flash_encrypt.c Flash 加密测试例程&#xff1a;esp-idf/examples/sec…

【yolov8目标检测部署】TensorRT int8量化

原作者github&#xff1a;https://github.com/xuanandsix/Tensorrt-int8-quantization-pipline/tree/main 改进&#xff1a; 源代码支持的TensorRT版本为7.许多属性已经弃用&#xff1b; 在原有的代码上将支持的TensorRT版本从7改到8. &#xff01;&#xff01;不知道如何安装T…

酷得电子机器狗玩具 MCU方案介绍

机器狗是一种多功能、互动性强的机器人&#xff0c;适合家庭和学校环境。它不仅可以陪伴孩子们玩耍&#xff0c;还能帮助他们学习和成长。功能如下&#xff1a; 关节可动&#xff1a;机器狗的关节设计灵活&#xff0c;可以执行各种动作&#xff0c;如“坐下”、“俯卧撑”、“…

【Ant-Desgin-React 步骤条】步骤条配合组件使用

步骤条配合组件使用 基础使用多分组进度 基础使用 /* eslint-disable no-unused-vars */ import React, { useState } from react import { Button, message, Steps, theme } from antd import After from ./components/after import Now from ./components/now const steps …

纯js对比excel小工具

如何使用JavaScript和xlsx.js实现Excel文件对比&#xff1a;实战指南 在日常办公或数据分析工作中&#xff0c;我们经常需要比较两个Excel文件中的数据差异。手动对比不仅耗时费力&#xff0c;还容易出错。本文将带你通过一个简单的网页应用&#xff0c;利用JavaScript和开源库…

【产品经理】如果人人都是产品经理,那么如何提升自己的不可替代性?

任何职业都需要有危机感&#xff0c;不只是产品经理。 人有生老病死&#xff0c;相应的职场上也有升降变离。当乔布斯站在宇宙之巅望着芸芸众生说“活着就是为了改变世界”的时候&#xff0c;这话着实燃烧了我们一把。随之&#xff0c;马化腾、周鸿祎、张小龙、王小川等汹涌而入…

前端canvas项目实战——在线图文编辑器(九):逻辑画布

目录 前言一、 效果展示二、 实现步骤1. 调整布局&#xff0c;最大化利用屏幕空间2. 添加逻辑画布3. 添加遮罩4. 居中显示逻辑画布5. 一个容易被忽视的bug点 三、Show u the code后记 前言 上一篇博文中&#xff0c;我们实现了一组通用的功能按钮&#xff1a;复制、删除、锁定…

Eclipse内存分析器 Java内存分析工具MAT(Memory Analyzer Tool)的介绍与使用

1.visualvm实时监测 2.Memory Analyzer Tool打开 3.工具的使用可以参考 Java内存分析工具MAT(Memory Analyzer Tool)的介绍与使用 ------------------------ 1.我远程发现是其中一个客户端A请求服务器页面响应&#xff0c;一直得不到响应&#xff0c;然后客户端A一直请求&am…

js 字符串 第一个斜杠前最后一次出现英文字母的位置并添加自定义值,返回新值

要找到字符串中第一个斜杠&#xff08;/&#xff09;前最后一次英文字母出现的位置&#xff0c;可以使用正则表达式配合lastIndexOf方法。以下是实现这一功能的示例代码&#xff1a; 如果是匹配第一个数字前的字母加值可以看这里 function findLastLetterIndexBeforeSlash(str…

外贸旺季外贸人如何做好时间管理

第1步 记住这些原则 50-30-20原则 你工作日里50%的时间应该花在有益于你长期发展目标的事情上&#xff0c;30%的时间应该用于你完成中期(两年左右)目标的事情&#xff0c;20%的时间用于完成未来90天以内需要完成的任务。 “一个篮子”原则 One Bucket 尽可能减少自己接收新任务…

《QT实用小工具·四十六》多边形窗口

1、概述 源码放在文章末尾 该项目实现了可以移动的多边形窗口&#xff0c;项目demo演示如下所示&#xff1a; 项目部分代码如下所示&#xff1a; #include "polygonwindow.h"#include <QBitmap> #include <QQuickItem> #include <QQmlFile> #in…

JAVASE->数据结构|顺序表底层逻辑

✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;再无B&#xff5e;U&#xff5e;G-CSDN博客 目标&#xff1a; 1. 什么是 List 2. List 常见接口介绍 3. …
最新文章