如何在 Debian11 上安装和保护 Apache

2023-10-25

Apache HTTP Web 服务器是广泛使用的 Web 服务器之一,尤其是在 Linux 发行版上,它是一种免费的跨平台,被互联网上的大量网站使用。 Apache Web 服务器使用 HTTP 来处理请求并接收 Web 信息。 Apache 拥有大量有用的功能,并且可以通过额外的模块来增强其功能。它还允许程序员在互联网上发布他们的作品。

因此,在本文中,我们将讨论 Apache Web 服务器的安装以及在 Debian 11 上安装后如何保护它。

要求

安装之前,您必须登录具有所有 sudo 权限的 Debian 系统。我们还建议完成初始服务器设置在新安装的 Debian 11 系统上。

步骤 1 – 在 Debian 上安装 Apache

最新版本的 Apache 软件包可在默认的 Debian 11 存储库中获取。所以我们可以直接使用包管理器安装它。

登录后,打开终端并通过以下命令更新 apt 缓存:

sudo apt update 

更新 apt 缓存后,现在通过以下命令在 Debian 11 Bullseye 上安装 Apache2:

sudo apt install apache2 

按“y”以获取安装程序提示的任何确认。

安装过程完成后。通过运行以下命令验证已安装的 Apache 版本:

apache2 -v 

Output:
Server version: Apache/2.4.48 (Debian) Server built: 2021-08-12T11:51:47

验证 Apache 安装的另一种方法是使用服务器的 IP 地址或主机名访问 Apache2 默认页面。如果您不知道主机名,请先运行以下命令:

hostname -I 
Check IP Address of Local system
Check IP Address of Local System

在浏览器的 URL 栏中输入服务器的主机名或 IP 地址,然后按 Enter,将打开 Apache2 Debian 默认页面,如下所示:

Apache default page on Debian 11
Apache default page on Debian 11

第 2 步 – 管理 Apache 服务

安装成功后,可以使用systemctl命令管理Apache服务,运行以下命令检查服务器的状态:

sudo systemctl status apache2.service 
Check Apache Service Status on Debian 11
Check Apache Service Status on Debian 11

Press “q”退出。在 Debian 11 中管理 Apache 服务的命令有:

要启动服务器,请使用以下命令:

sudo systemctl start apache2.service 

同样,要停止服务,请将上述命令中的 start 替换为 stop:

sudo systemctl stop apache2.service 

可以使用以下命令重新启动该服务:

sudo systemctl restart apache2.service 

步骤 3 – 配置防火墙设置

如果您的系统有防火墙,您需要授权访问某些 Web 端口,以便外部用户可以使用它们。运行以下命令以在 Debian 终端中允许端口 80 (HTTP) 和 443 (HTTPS):

sudo ufw allow 80/tcp 
sudo ufw allow 443/tcp 
Allow HTTP and HTTPS port in UFW
Allow HTTP and HTTPS port in UFW

现在通过检查状态来验证:

sudo ufw status 

如果它未激活,则使其能够使用:

sudo ufw enable 

步骤 4 – 在 Apache 中创建虚拟主机

在 Apache 中,虚拟主机允许您在单个服务器上运行多个网站。在 Apache Web 服务器中,我们将创建一个虚拟主机。为了实现这一目标,我们首先使用 Apache 标配的服务器块创建一个名为 example.com 的网站。

让我们首先设置 Apache 服务器的第一个虚拟主机。我们将使用示例域“sample.com”,但您可以根据自己的喜好命名它:

sudo mkdir -p /var/www/sample.com 

现在通过以下命令更改权限和所有者:

sudo chown -R www-data:www-data /var/www/sample.com 
sudo chmod -R 755 /var/www/sample.com 

运行下面提到的命令,为了测试我们的 testdomain.info 站点,我们现在将构建一个示例索引页面。为此,我们将使用 nano 编辑器生成一个如下所示的 HTML 文件:

sudo nano /var/www/sample.com/index.html 

将以下内容插入索引页,然后按 Ctrl+O 保存文件,按 Ctrl+X 退出文件并返回终端:

1
2
3
4
5
6
7
8
   欢迎来到 Sample.com 页面!标题>
头>
  

恭喜!您的 example.com 服务器成功!
正文>

在终端中运行下面提到的命令,我们将构建一个虚拟主机文件,它将提供服务器的内容:

sudo nano /etc/apache2/sites-available/sample.com.conf 

将打开一个文本文件,插入以下内容:

1
2
3
4
5
6
7
8
<虚拟主机 *:80>
服务器管理员 admin@sample.com
服务器名称 sample.com
服务器别名 www.sampe.com
文档根目录 /var/www/sample.com
错误日志 ${APACHE_LOG_DIR}/error.log
自定义日志 ${APACHE_LOG_DIR}/access.log combined
</虚拟主机>

Press Ctrl+O保存文件并Ctrl+X退出文件并返回终端。

步骤 5 – 启用域配置

运行以下命令开启虚拟主机文件:

sudo a2ensite sample.com.conf 

通过运行下面提到的命令禁用默认 Apache 配置:

sudo a2dissite 000-default.conf 

通过运行下面提到的命令可以应用对 Apache 的新更改:

sudo systemctl restart apache2 

步骤 6 – 解决主机名错误

现在,我们必须检查我们的配置是否有任何语法错误,要测试配置,请运行以下命令:

sudo apache2ctl configtest 
Could not resolve system hotname
Could not resolve system hotname issue with Apache

这会导致错误,但不用担心,我们会解决这个问题。创建一个新配置“servername.conf”并在文本编辑器中编辑:

sudo nano /etc/apache2/conf-avaialable/servername.conf 

现在将以下内容插入到文件中:


ServerName sample.com
  

按 Ctrl+O 保存文件,按 Ctrl+X 退出文件。确保将“sample.com”更改为您的实际域名。现在要启用conf服务器名称,请运行以下命令:

sudo a2enconf servername 

现在再次运行上面的命令来测试配置:

sudo apache2ctl configtest 

您将看到主机名错误现已解决。

步骤 7 – 如何在 Debian 11 上保护 Apache2

要保护 Apache 服务器,请编辑“安全.conf”文件,运行以下命令打开该文件:

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

将以下内容插入或更新到文件中:

1
2
3
4
5
6
7
8
服务器令牌 Prod
服务器签名 Off
跟踪使能 Off
Header always append X 框架选项 同源
Header always set X-XSS-保护: “1;模式=块”
Header always set X-内容类型选项: “嗅嗅”
Header always set 严格的运输安全 “最大年龄=31536000;包括子域”
Header always edit 设置Cookie ^(.*)$ $1;HttpOnly;Secure

保存文件并关闭它。

通过编辑设置服务器范围的 SSLCipherSuite 和 SSL 协议以使用安全密码为网站提供服务ssl.conf file:

sudo nano /etc/apache2/mods-enabled/ssl.conf 

现在将以下内容插入到文件中,然后按 Ctrl+O 保存文件,按 Ctrl+X 退出文件:

1
2
SSL协议 -all +TLSv1.2
SSL密码套件 HIGH:!aNULL:!MD5

现在运行Apache的reload命令来保存配置:

sudo systemctl restart apache2.service 

就是这样。您已成功安装并保护 Apache 服务器。

结论

Apache Web Server 是互联网上许多网站使用的开源服务器,允许开发人员在互联网上发布他们的作品。该服务器可在所有操作系统上使用,但在本文中,我们讨论其在最新版本 Debian(Linux 操作系统)上的安装,并介绍如何在成功安装后对其进行测试和保护。完成本指南后,您将能够在 Debian 11 Bullseye 上成功安装 Apache2 并配置服务器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Debian11 上安装和保护 Apache 的相关文章

  • 如何在Wamp服务器中启用SSL?

    我尝试在网上搜索它 但我很困惑 我没有得到任何澄清 逐步教程 http blog facilelogin com 2008 07 enabling ssl on wamp html 从链接复制 在 WAMP 上启用 SSL 本分步指南介绍了
  • Android SSL 无对等证书

    我有一个例外 没有同行证书 当我询问谷歌时 我得到了解决方案 我信任所有证书 但这个问题的答案是 它是不安全的 所以我给班级打电话 HostnameVerifier hostnameVerifier org apache http conn
  • 通过 HTTPS 加载页面但请求不安全的 XMLHttpRequest 端点

    我有一个页面 上面有一些 D3 javascript 该页面位于 HTTPS 网站内 但证书是自签名的 当我加载页面时 我的 D3 可视化效果不显示 并且出现错误 混合内容 页面位于 https integration jsite com
  • PHP和.htaccess认证解决方案

    这是布局 web root admin dir index php js img other files dirs dir files 到目前为止 我使用 htaccess passwd 保护管理目录 因为我希望对该目录中的所有文件 包括
  • Elastic Beanstalk 添加多个 ssl 证书

    我有一个 Docker Django api 应用程序 可以从多个域 abc xyx com 或 def lmn com 调用 我已从 Elastic beanstalk 中的配置控制台成功添加了 abc xyz com 的 ssl 证书
  • proc_open() 失败并显示“权限被拒绝”

    我正在尝试使用proc open 执行程序并打印结果 但是 我不断收到 许可被拒绝 的消息 已将脚本和可执行文件的 chmod 设置为 0777 但无济于事 ini get safe mode 是假的 可能出什么问题了 我正在使用 Cent
  • 为什么Apache MPM prefork.c 使用互斥体来保护accept()?

    我坐下来读书Apache 的 MPM prefork c http code metager de source xref apache httpd server mpm prefork prefork c这段代码使用了一个名为accept
  • 如何将域添加到 aws 上的现有 SSL 证书

    我有一个与 Amazon Web Services 上的负载均衡器关联的 SSL 证书 我想在该证书上有一个额外的域 我的问题是 是否可以向 aws 上现有的 ssl 证书添加额外的域 我发现您可以在创建证书时添加其他名称 但我不知道如何使
  • Capistrano 和 XSendFile 配置

    我正在尝试使用 Apache 2 2 Passenger 4 0 59 和 XSendFile 0 12 配置 Rails 生产服务器 应用程序通过 Capistrano 部署 部署的应用程序生成 可能很大 PDF Rails root t
  • 是否可以使用流上下文在 PHP 下使用 FTPS?

    我了解到使用ftpsPHP for Windows 下的 ftp ssl connect 很困难 您被要求进入构建自己的二进制文件以包括 Open SSL 的漫长旅程 我找到了以下建议phpseclib http phpseclib sou
  • 如何使用 Gmail 的 SMTP 和 Indy 10 发送电子邮件?

    我正在使用 Delphi 2009 和 svn 中最新的 Indy 10 通过 SMTP 发送电子邮件 但它不适用于 Gmail Google Apps 托管域 当我尝试发送电子邮件时 我收到 必须首先发出 STARTTLS 命令 我尝试用
  • AH10411 错误:在 apache mod_rewrite 中管理空格和 %20

    我今天更新了 Apache 到 2 4 56 1 并且加载了 htaccess过去有效的重写现在出现了 AH10411 错误 与查询中的空格有关 我正在努力寻找 适当 的解决方案 用户单击一个链接 例如 a href FISH 20J123
  • 信任库是否需要子 ca 证书?

    我正在尝试设置分层 PKI 我是否可以创建仅包含根 ca 证书的信任库 这是否意味着我的应用程序信任由子 ca 证书签名的证书 而子 ca 证书又由根 ca 签名 顺便说一句 您似乎必须提供整个证书链 包括根 ca 证书 当然 如果根 ca
  • SVN运行上下文错误:现有连接被远程主机强制关闭

    我在 Debian Wheezy 构建服务器上创建了一个 SVN 存储库 如下所示本教程 http www networkworld com article 2224093 opensource subnet use subversion
  • apache htaccess 将第一个段映射为参数而不干扰其他参数

    这可能是一个经典的 htaccess 问题 但我仍然找不到适合我的具体情况的问题 这是closest https stackoverflow com questions 9299793 apache httaccess rewriting我
  • .NET-MVC - 通过 SSL 重写 URL + 某些 URL?

    我有一个运行 IIS 6 NET MVC 和单个域名的网络服务器 该网站使用 URL 重写来生成如下 URL 域名 com controller action 我愿意强行一 1 个控制器 to use SSL 其他的应该无需 SSL 即可工
  • 如何在 Ruby 2.2 上删除不安全密码来强化 Rails+webrick+https

    更新 首先 我的测试代码没有充分显示 ruby 2 4 看到 SSLCiphers 选项 而 ruby 2 2 没有 我编辑了下面的示例代码以清楚地表明这一点 更新 由于我的问题未能得到社区的任何帮助 我继续前进 两天后找到了解决方案 我将
  • 如何在android网络库(ION)中使用自签名SSL?

    使用此网络库 https github com koush ion https github com koush ion 由于当前状态是开发 我想使用自签名 SSL 证书 图书馆论坛有一些讨论 https github com koush
  • phpinfo 说 php.ini 路径是 C:\Windows 但那里没有 php.ini

    我们正在尝试从 PHP5 切换到 PHP7 现在我们已经安装了 Apache 并且 PHP 可以运行了 然而 我们在php ini文件没有任何作用 Via phpinfo 我们意识到原因是Configuration File php ini
  • 让 Rails 生产在端口 80 上运行

    我正在尝试让我的 Rails 应用程序在生产模式下运行 但遇到了一些困难 我正在使用 Passenger 和 apache 并运行 Ubuntu 12 04 我已经配置和创建了生产数据库 并设置了乘客 状态如下 rvmsudo passen

随机推荐

  • Python range() 函数

    蟒蛇rangetype 通过定义范围的起点和终点来生成整数序列 它通常与for循环迭代数字序列 range 在 Python 2 和 3 中的工作方式有所不同 在Python 2中 有两个函数可以让你生成整数序列 range and xra
  • Linux 中的正常运行时间命令

    在本教程中 我们将介绍uptime命令 顾名思义 uptime命令显示系统已经运行了多长时间 它还显示当前时间 登录用户数以及过去 1 5 和 15 分钟的系统负载平均值 如何使用正常运行时间命令 uptime 命令的语法如下 uptime
  • 如何在 CentOS 7 上使用 VSFTPD 设置 FTP 服务器

    FTP 文件传输协议 是一种标准的客户端 服务器网络协议 允许用户在远程网络之间传输文件 有多种可用于 Linux 的开源 FTP 服务器 最流行和最广泛使用的是PureFTPd ProFTPD and vsftpd 在本教程中 我们将在
  • Python while 循环

    循环是编程语言的基本概念之一 当您想要多次重复特定的代码块直到满足给定条件时 循环会很方便 Python中有两种基本的循环结构 for and while loops 本教程涵盖了以下基础知识whilePython 中的循环 我们还将向您展
  • NumPy loadtxt 教程(从文件加载数据)

    在之前的教程中 我们讨论过NumPy 数组 我们看到了它如何使读取 解析和对数字数据执行操作的过程变得轻而易举 在本教程中 我们将讨论 NumPy loadtxt 方法 该方法用于解析文本文件中的数据并将其存储在 n 维 NumPy 数组中
  • Linux Bash 脚本编写第 3 部分 – 参数和选项

    到目前为止 您已经了解了如何编写无需用户输入即可完成工作的 Linux bash 脚本 今天我们将继续我们的 Linux bash 脚本系列 如果您想了解我们在谈论什么 我建议您查看之前的帖子 Bash 脚本基础知识 Bash 脚本 For
  • Pythonnamedtuple(将元组提升到一个新的水平)

    在本教程中 我们将深入研究命名元组 它们是什么 如何创建和操作它们 以及何时使用它们 或不使用它们 命名元组是Python内置的一部分收藏模块 并且它们提供了一种将数据捆绑在一个名称下的便捷方法 它们是 Python 内置元组数据类型的子类
  • 使用 Python 处理 CSV:综合教程

    CSV 逗号分隔值 文件是存储和共享表格数据的最常见方法之一 这些文件由行和列组成 其中每行代表一个记录 列包含由分隔符 通常是逗号 分隔的值 Python 提供了多种内置方法来处理 CSV 文件 使您可以高效地读取 写入和操作数据 本教程
  • Linux Bash 脚本编写第 5 部分 – 信号和作业

    在上一篇文章中 我们谈到了输入 输出和重定向在 bash 脚本中 今天我们将学习如何在Linux系统上运行和控制它们 到目前为止 我们只能从命令行界面运行脚本 但这并不是运行 Linux bash 脚本的唯一方法 这篇文章描述了控制 Lin
  • 使用curl命令的SSL/TLS:安全连接指南

    卷曲命令是一种发出网络请求的工具 它在通过 HTTPS 与安全服务器通信时使用 SSL TLS 默认情况下 curl尝试在可用时使用安全连接 但了解如何控制和诊断这些连接至关重要 目录 hide 1 使用客户端证书 2 指定证书类型 3 使
  • 如何使用 tqdm 创建 Python 终端进度条?

    进度条是估算和显示任务所需时间的宝贵工具 这些也可以添加到您的 Python 脚本或代码块中 以指示代码执行所需的时间 Python 中有多种可用的库 例如progressbar and tqdm可以用于此目的 目录 hide 1 什么是
  • 使用 Linux curl 命令管理 Cookie

    与 Web 应用程序交互时 您会遇到处理 cookie 和会话的需要 在本教程中 您将学习如何使用卷曲命令发送 接收和管理 cookie 目录 hide 1 手动发送 Cookie 标头 2 存储从服务器接收到的 Cookie 3 通过请求
  • 正确理解 Linux 运行级别

    您可以将 Linux 运行级别视为操作系统运行的不同 模式 每种模式或运行级别都有其打开或关闭的进程和服务列表 从 Linux 启动时起 它就始终处于某个运行级别 当您继续使用计算机时 此运行级别可能会发生变化 具体取决于操作系统需要访问的
  • Linux PS1 提示定制终极指南

    PS1 或提示字符串 1 是主要提示变量 它定义 Linux shell 环境中命令行提示的外观和元素 它提供了多个自定义选项 使您的命令提示符信息更丰富且更具视觉吸引力 本教程将讨论这些细节 增强您的命令行界面体验 目录 hide 1 查
  • 11 个令人惊叹的 NumPy Shuffle 示例

    蟒蛇的NumPy包提供了各种用于执行涉及随机性的操作的方法 例如从给定的数字列表中随机选择一个或多个数字的方法 或者生成给定范围内的随机数的方法 或者从给定分布 所有这些方法均在randomNumPy 包的模块 其中一种方法是numpy r
  • 使用 pyenv 管理多个 Python 版本

    pyenv 是一个简单而强大的工具 用于管理多个Python版本 作为一名 Python 开发人员 您可能面临过不同项目需要不同 Python 版本的情况 pyenv 为这个问题提供了一个优雅的解决方案 本质上 pyenv 是一个 Pyth
  • 如何在Ubuntu 20.04上安装Netdata监控工具

    Netdata是一款专为实时系统性能监控解决方案而设计的开源工具 它收集系统活动的实时指标 如 CPU 使用 内存使用 带宽使用和磁盘活动等 并通过图形图表在 Web 界面上显示信息 Netdata官方团队建议安装netdata监控工具使用
  • 用于删除重复数组元素的 JavaScript 程序

    数组是包含一组元素的数据结构 通常这些元素都是相同的数据类型 例如整数或字符串 但在 JavaScript 中 我们可以存储不同类型的元素 使用数组 您可以组织数据 以便可以轻松地对一组相关值进行排序或搜索 本教程向您介绍了如何使用 Jav
  • 如何在 Debian 9 上安装 Python 3.9

    Python 是一种面向对象的高级编程语言 它是一个拥有大型社区的开源软件 Python 被 Google 等顶级科技公司用作关键语言 Python 3 9 稳定版本已发布 包含多项改进和安全更新 它包括多个新模块 改进的现有模块和许多其他
  • 如何在 Debian11 上安装和保护 Apache

    Apache HTTP Web 服务器是广泛使用的 Web 服务器之一 尤其是在 Linux 发行版上 它是一种免费的跨平台 被互联网上的大量网站使用 Apache Web 服务器使用 HTTP 来处理请求并接收 Web 信息 Apache