如何在 Fedora Linux 上安装 Apache HTTPD

在 Fedora 上安装 Apache HTTPD将您的工作站或 VPS 转变为可靠的 Web 服务器,用于暂存应用程序、托管内部工具或为生产工作负载提供动力。 Apache 经过验证的模块生态系统和 Fedora 快速移动的堆栈提供了为静态站点、PHP 应用程序和反向代理后端提供服务的灵活性。

本演练涵盖更新 Fedora地下城与勇士、安装 Apache、打开防火墙端口、启动时启用服务、配置虚拟主机以及自动化 TLS 证书。您将获得一个经过调整的 Apache 部署,您可以长期维护。

更新您的 Fedora 系统可确保它运行最新的软件,即对于兼容性和安全性至关重要。在安装新软件之前,最好确保您的系统是最新的。

按Ctrl+Alt+T打开终端,然后运行以下命令来更新您的软件包:

sudo dnf upgrade --refresh

该命令使用sudo行政权利和dnf upgrade更新所有包。这--refresh选项可确保您从存储库中获取最新信息。让此过程完成,然后再进行下一步,以保持系统完整性和平稳运行。系统更新后,您可以继续安装 Apache。

使用 DNF 安装 Apache HTTPD

当您的系统是最新的时,安装 Apache(也称为httpd)使用 Fedora 很简单DNF 包管理器。您可以使用单个命令安装 Apache。

在您的终端中,运行以下命令:

sudo dnf install httpd

此命令获取并安装阿帕奇在您的 Fedora 系统上。 DNF 处理所有必要的依赖关系和初始配置,简化了安装。该过程通常很快,完成后 Apache 就可以使用了。

安装完成后,验证服务并确保其按预期运行。这有助于确认您的 Fedora 系统已准备好提供 Web 内容。让我们启用并启动 Apache 服务。

启动时启用 Apache 服务

安装 Apache 后,下一个关键步骤是启动并启用httpd服务以确保它在系统启动时运行。如果在安装过程中没有自动激活,请使用以下命令:

sudo systemctl start httpd
sudo systemctl enable httpd

这里,sudo systemctl start httpd启动 Apache 服务,并且sudo systemctl enable httpd将其设置为在启动时启动。这种两步方法可确保 Apache 处于活动状态并持续可用。

或者,您可以组合以下步骤:

sudo systemctl enable httpd --now

这--now标志与sudo systemctl enable httpd立即启动 Apache,同时将其配置为在启动时启动,从而简化了流程。 Apache 在重新启动后将始终可用。

验证 Apache 服务状态

验证 Apache 的状态以确保一切顺利运行非常重要:

systemctl status httpd

该命令提供 Apache 的运行状态。输出包括服务的当前状态(例如,活动(运行))以及任何最近的日志消息,这对于故障排除至关重要。定期检查状态有助于在 Fedora 系统上维护稳定且功能齐全的 Apache 设置。如果您发现任何问题,请在继续之前解决它们。

在 Firewalld 中打开 HTTP 端口

Apache 运行后,Fedora 使用防火墙作为其默认的防火墙管理工具。如果您需要有关 Firewalld 配置的更多详细信息,请参阅我们的综合指南。为了增加安全性,您可能还需要配置以防止暴力攻击。

允许 Web 流量通过 Firewalld

后在 Fedora 上安装 Apache (HTTPD),必须要配置防火墙允许端口上的流量80(HTTP)和443(HTTPS)。这些步骤对于 Web 服务器的安全性和可访问性至关重要。如果没有正确的防火墙配置,您的服务器可能无法通过互联网访问。

Firewalld 提供两种等效的方法:使用服务名称或直接指定端口号。推荐服务名称因为它们更具可读性和可维护性,但是了解这两种方法可以帮助您使用不同的防火墙配置。

方法1:使用服务名称(推荐)

最简洁的方法是使用 Firewalld 的预定义服务名称。每个服务定义映射到特定端口:http使用端口 80,并且https使用端口 443:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

Fedora 文档推荐使用此方法,因为服务定义是集中管理的并自动处理端口映射。这--permanent标志确保规则在重新启动后仍然存在。

方法二:直接使用端口号

或者,您可以直接指定端口。这种方法为您提供了明确的控制,并且在非标准端口上运行服务时非常有用:

sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload

这里,80/tcp显式打开 TCP 端口 80 (HTTP),并且443/tcp打开 TCP 端口 443 (HTTPS)。两种方法获得相同的结果,方法 1 只是将端口号抽象为服务名称。

应用任一方法后,验证防火墙规则:

sudo firewall-cmd --list-all

你应该看到services: http https(方法1)或ports: 80/tcp 443/tcp(方法2)在输出中。您的服务器现在已准备好接受 HTTP 和 HTTPS 上的 Web 流量。

防火墙规则的安全注意事项

了解这些变化的安全影响至关重要。仅打开必要的端口,例如80 和 443最大限度地减少潜在的漏洞,保护您的服务器免受未经授权的访问和威胁。进行更改后,请务必仔细检查您的防火墙设置。

在 Web 浏览器中检查 Apache

要确认配置成功,请访问 Apache (HTTPD) 默认登录页面:

  1. 打开您的网络浏览器。
  2. 导航至https://localhost或者https://<your_server_ip>。

如果配置正确,则Apache 默认页面应该出现,确认服务器的运行状态。否则,请重新访问前面的步骤来解决任何问题。

Fedora 上的 Apache 安装后故障排除

如果您在安装后遇到问题,例如服务无法启动或网页无法加载,请检查您的防火墙设置,SELinux 状态和阿帕奇的配置文件(通常在/etc/httpd/conf/和/etc/httpd/conf.d/)。

Fedora 上 Apache 的 SELinux 故障排除技巧

暂时将 SELinux 设置为宽容模式sudo setenforce 0可以帮助诊断 SELinux 是否阻止了 Apache。然而,这是仅用于故障排除。始终将 SELinux 返回到强制模式(sudo setenforce 1)解决问题后维护系统安全。允许 SELinux 可能会让您的系统容易受到攻击。当您遇到访问问题时,请谨慎使用此技巧。

在 Fedora 上安装 Apache HTTPD 后创建虚拟主机

第 1 步:创建并配置网站目录

首先在 Fedora Linux 上为虚拟主机创建一个目录。该目录将充当您网站文件的文档根目录。对于像这样的域example.com,使用以下命令:

sudo mkdir /var/www/example.com

代替example.com与您的实际域名。该目录(/var/www/example.com)将保存所有网站文件,包括 HTML、图像和脚本。出于组织和安全的目的,建议为不同的虚拟主机创建单独的目录。

设置目录的所有权和权限,以便 Apache 可以访问它:

sudo chown -R apache:apache /var/www/example.com
sudo find /var/www/example.com -type d -exec chmod 755 "{}" \;
sudo find /var/www/example.com -type f -exec chmod 644 "{}" \;

第一个命令将目录所有权更改为apache 用户和组。这命令使用设置必要的权限:目录获得 755(为所有者读取、写入、执行;为组和其他人读取和执行),文件获得 644(为所有者读取和写入;为其他人读取)。

创建一个index.html该目录中的文件(例如,/var/www/example.com/index.html)。该文件通常是访问者看到的第一页。使用文本编辑器,例如纳米创建此文件:

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

在编辑器内,您可以添加以下示例 HTML 结构:

<html>
  <head>
    <title>Welcome to example.com</title>
  </head>
  <body>
    <h1>Welcome to Example Domain</h1>
    <p>This is a sample page for the domain example.com.</p>
  </body>
</html>

自定义此 HTML 以满足您网站的需求。保存并退出编辑器(在 Nano 中,这通常是Ctrl + X, 然后是来确认,然后进入)。您现在已准备好配置您的虚拟主机。

步骤 2:为虚拟主机配置 Apache

A. 在 Apache 配置中设置虚拟主机目录

创建sites-available和sites-enabledApache 配置路径中的目录。这些目录有助于组织您的虚拟主机配置文件:

sudo mkdir -p /etc/httpd/sites-available /etc/httpd/sites-enabled

将阿帕奇指向sites-enabled带有一个小嵌入式文件的目录。这使您的配置与 Fedora 的打包默认设置分开,因此更新不会覆盖您的更改:

sudo tee /etc/httpd/conf.d/z-sites-enabled.conf >/dev/null <<'EOF'
IncludeOptional sites-enabled/*.conf
EOF

这z-前缀确保包含在其他配置文件之后加载,并且IncludeOptional指令会自动选取您符号链接到的任何虚拟主机sites-enabled。您现在可以继续创建特定的虚拟主机配置文件。

B. 创建虚拟主机配置文件

现在,为您的域创建一个新的配置文件(例如,example.com.conf)内/etc/httpd/sites-available/目录:

sudo nano /etc/httpd/sites-available/example.com.conf

在该文件中,添加以下基本虚拟主机配置。记得调整一下ServerName,ServerAlias, 和DocumentRoot根据您的域和目录结构的需要:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/
    ErrorLog /var/log/httpd/example.com-error.log
    CustomLog /var/log/httpd/example.com-access.log combined
</VirtualHost>

C. 授予 Apache 访问文档根目录的权限

允许 Apache 为您的新文档根目录中的文件提供服务 (/var/www/example.com/)并确保公共访问,添加<Directory>阻止在您的站点特定配置中。保留该节/etc/httpd/sites-available/example.com.conf(或您控制的另一个插件)意味着 Fedora 软件包更新永远不会覆盖它。

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/
    ErrorLog /var/log/httpd/example.com-error.log
    CustomLog /var/log/httpd/example.com-access.log combined

    <Directory /var/www/example.com/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

保存并退出配置文件。此设置将访问规则与虚拟主机一起保留,这更容易维护并且可以干净地进行软件包升级。

步骤 3:在 Fedora 上启用 Apache 虚拟主机

创建虚拟主机配置文件后(例如,example.com.conf在/etc/httpd/sites-available/),您需要启用它。为此,请从您的配置文件创建一个符号链接 (symlink)sites-available到sites-enabled目录:

sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/

在退回服务之前,验证配置以捕获拼写错误或丢失的指令:

sudo apachectl configtest

如果输出显示语法确定,继续服务重启或重新加载以激活虚拟主机。

最后,重新启动 Apache 以应用所有配置更改。要使您的新虚拟主机处于活动状态,必须执行此步骤:

sudo systemctl restart httpd

重启Apache后,访问https://example.com(或您的实际域名)在您的网络浏览器中。如果您尚未为域配置 DNS,并且正在本地测试,则可能需要编辑本地/etc/hosts文件或使用服务器的 IP 地址(如果配置正确以直接 IP 访问虚拟主机)(尽管基于域的虚拟主机是标准配置)。你应该看到index.html您之前创建的登陆页面。如果没有,请仔细检查您的配置文件是否有拼写错误或错误,并查看 Apache 的错误日志(/var/log/httpd/error_log或您的自定义虚拟主机错误日志)。

在 Fedora 上管理 Apache HTTPD 服务

在 Fedora 上禁用 Apache 测试页

默认情况下,当您访问服务器时,Fedora 会显示一个没有任何内容的测试页面。这对于验证 Apache 的工作非常有用,但是一旦配置了实际内容或虚拟主机,您将需要禁用它。

要禁用测试页,请注释掉中的所有行/etc/httpd/conf.d/welcome.conf:

sudo nano /etc/httpd/conf.d/welcome.conf

添加一个#在每行的开头将其注释掉,或者简单地重命名文件:

sudo mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.disabled

禁用测试页后,重新启动 Apache 以应用更改:

sudo systemctl restart httpd

现在,当您在没有配置虚拟主机的情况下访问服务器的 IP 地址时,您将看到标准的 403 Forbidden 错误,而不是 Fedora 测试页面。一旦您为特定域配置了虚拟主机,这就是预期的行为。

了解 Apache 服务器日志

Apache 服务器日志对于监控服务器活动和故障排除问题至关重要。默认情况下,在 Fedora 上,Apache 的主日志通常位于/var/log/httpd/。标准文件名是access_log用于访问日志(服务器处理的所有请求的记录)和error_log用于错误日志(Apache 遇到的错误的记录)。但是,如虚拟主机示例所示,您可以(并且应该)在每个虚拟主机的基础上自定义这些日志文件名(例如,example.com-access.log,example.com-error.log)。定期查看这些日志有助于您快速识别并解决潜在问题。

Fedora 在 systemd 下运行 Apache,因此当您需要重新启动时的实时视图时,您还可以跟踪日志:

sudo journalctl -u httpd --follow

调整 Fedora 打包 Web 应用程序以进行远程访问

当您从 Fedora 存储库安装 Web 应用程序时,它们通常默认为Require local里面/etc/httpd/conf.d/appname.conf。这使得仪表板锁定到主机。如果您希望远程用户访问该应用程序,请编辑相关<Directory>阻止并交换Require ip 192.0.2.0/24对于受信任的子网或Require all granted用于全球访问。保存文件,运行sudo apachectl configtest,确认语法后重新加载Apache。在您的情况允许的情况下,让您的规则尽可能狭窄。

Fedora 配置文件最佳实践

Fedora 的 Apache 配置遵循特定的层次结构,您在进行更改之前应该了解该层次结构。主要配置文件是/etc/httpd/conf/httpd.conf,以及其他配置/etc/httpd/conf.d/*.conf。文件位于conf.d/按字母顺序阅读,所以z-foo.conf覆盖设置foo.conf。

重要的:不要直接编辑 Fedora 软件包附带的配置文件(例如httpd.conf或文件在conf.d/)。当软件包更新时,您的更改将保存为.rpmsave文件,新的默认值将被写入.rpmnew文件,迫使您手动合并更改。

相反,请使用按字母顺序排列的名称创建新的覆盖文件。例如,要覆盖中的设置/etc/httpd/conf.d/ssl.conf, 创造/etc/httpd/conf.d/z-ssl-local.conf与您的自定义设置。这z-前缀确保您的文件最后被读取并且优先。这种方法使您的自定义与包管理的文件分开,并在更新后保持干净。

进行任何配置更改后,请务必在重新加载之前测试语法:

sudo apachectl configtest

如果测试显示“语法正常”,请重新加载或重新启动 Apache 以应用更改:

sudo systemctl reload httpd

从访问日志中过滤健康检查

如果负载均衡器或监控作业攻击特定 URL,请使用以下标记标记该流量SetEnvIf并告诉 Apache 忽略它。将以下内容添加到特定于站点的配置文件:

SetEnvIf Request_URI "^/status$" skip_log
CustomLog /var/log/httpd/example.com-access.log combined env=!skip_log

匹配的请求/status路径得到skip_log标志,以及env=!skip_log条件将它们排除在访问日志之外。调整正则表达式以匹配您自己的运行状况检查端点。

示例:虚拟主机中的自定义日志文件名

要更改特定虚拟主机的日志文件名,您可以编辑其配置文件(例如,/etc/httpd/sites-available/example.com.conf)。例如,以下是您如何在<VirtualHost>堵塞:

<VirtualHost *:80>
    ServerName www.example.com
    DocumentRoot /var/www/example.com
    
    # Custom log file names for this virtual host
    CustomLog /var/log/httpd/www.example.com-access.log combined
    ErrorLog /var/log/httpd/www.example.com-error.log
</VirtualHost>

此配置将访问日志定向到www.example.com-access.log和错误日志到www.example.com-error.log内/var/log/httpd/目录。请记住提供完整、正确的文件路径。进行此类更改后,请务必重新启动 Apache (sudo systemctl restart httpd)来应用它们。

基本 Apache 服务管理命令

管理 Apache 服务(httpd)涉及一组systemctl允许您控制其操作的命令。使用这些命令,您可以根据需要启动、停止、重新启动或重新加载 Apache。

停止阿帕奇:

要停止 Apache 服务器,请使用:

sudo systemctl stop httpd

此命令会停止 Apache 服务。当您需要执行需要服务器脱机的维护或更新时,应使用此选项。

启动阿帕奇:

要启动已停止的 Apache 服务器,请使用:

sudo systemctl start httpd

此命令激活 Apache 服务,使其准备好提供 Web 内容。

重新启动阿帕奇:

要停止然后启动 Apache 服务器(完全重新启动),请使用:

sudo systemctl restart httpd

大多数配置更改都需要重新启动才能生效或从某些错误中恢复。通常,您应该在进行重大修改后重新启动 Apache。

重新加载阿帕奇:

要在不删除活动连接的情况下正常应用配置更改,请使用:

sudo systemctl reload httpd

重新加载会应用许多配置更改,而不会中断正在运行的服务。如果所做的更改支持的话,这通常比重新启动进行小更新更可取。

在启动时禁用 Apache:

要防止 Apache 在系统启动时自动启动,请使用:

sudo systemctl disable httpd

此命令将 Apache 从系统启动时启动的服务列表中删除。如果您想手动控制 Apache 的运行时间,请使用此选项。

在启动时启用 Apache:

要将 Apache 设置为在系统引导时自动启动(如果之前已禁用),请使用:

sudo systemctl enable httpd

这可确保 Apache 在系统启动时启动,从而提供一致的 Web 服务可用性。因此,您的网站通常在重新启动后始终可以访问。

使用 Let's Encrypt 证书保护 Apache

安装 mod_ssl 以支持 HTTPS

在请求证书之前,Apache 依赖于mod_sslTLS 模块。 Fedora 将其保存在基础存储库中,因此在请求证书之前验证它是否可用:

sudo dnf install mod_ssl

这将安装/etc/httpd/conf.d/ssl.conf使用 Fedora 的强化默认设置并自动启用该模块。如果您之前剥离了该软件包,重新安装它比手动重建配置更快。

安装 Certbot 以实现 SSL/TLS 证书自动化

首先,首先安装 Certbot,这是一个用于自动获取和续订 SSL/TLS 证书的工具,从而确保您的网站的 HTTPS 加密。要安装 Certbot,请执行以下命令:

sudo dnf install certbot python3-certbot-apache

为您的域生成 SSL/TLS 证书

安装后,使用以下命令为您的域生成 SSL/TLS 证书:

sudo certbot --apache -d example.com -d www.example.com

将示例域替换为您所服务的主机名。包括顶端域和www别名涵盖单个证书中最常见的访问者路径。

Certbot 的可选强化标志

对于具有严格传输安全性的全自动 HTTPS 设置,请使用以下扩展命令:

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d example.com -d www.example.com
  • –apache:表示证书用于 Apache 服务器。
  • –agree-tos:同意 Let's Encrypt 的服务条款。
  • –redirect:将 HTTP 流量重定向到 HTTPS。
  • –hsts:启用 HTTP 严格传输安全,确保仅安全 HTTPS 连接。
  • –staple-ocsp:激活 OCSP 装订以验证 SSL 证书。
  • –email:与证书关联的您的电子邮件地址。
  • -d:列出证书涵盖的每个域和子域。

添加--dry-run和--staging仅在针对 Let's Encrypt 的测试环境排练该过程时。当您准备好颁发真实证书时,请删除这些选项。

配置 Apache 以使用 SSL 证书

证书生成后,Certbot 会自动将文件放置在/etc/letsencrypt/live/example.com/具有正确的 SELinux 上下文。但是,如果您手动安装证书或进行故障排除,则可能需要恢复 SELinux 上下文以确保 Apache 可以访问这些文件:

sudo restorecon -Rv /etc/letsencrypt/

此命令递归地恢复 Let's Encrypt 目录中所有文件的默认 SELinux 安全上下文。在 Fedora 上,SELinux 默认启用并强制执行严格的访问控制。如果上下文不正确,即使文件权限正确,Apache 也将无法读取证书文件。

首选:将 HTTPS 块添加到您的虚拟主机

设置 SELinux 上下文后,将证书连接到您之前启用的同一虚拟主机。编辑/etc/httpd/sites-available/example.com.conf(或您符号链接的文件)并附加引用您的 Let's Encrypt 文件的 HTTPS 块:

<VirtualHost *:443>
  ServerAdmin webmaster@localhost
  ServerName example.com
  ServerAlias www.example.com
  DocumentRoot /var/www/example.com/
  ErrorLog /var/log/httpd/example.com-ssl-error.log
  CustomLog /var/log/httpd/example.com-ssl-access.log combined

  SSLEngine on
  SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

  <Directory /var/www/example.com/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
  </Directory>
</VirtualHost>

保存文件,然后在重新加载 Apache 之前重新运行语法测试,以便 HTTPS 虚拟主机干净地上线:

sudo apachectl configtest
sudo systemctl reload httpd

后备:手动更新 ssl.conf

如果您更喜欢单个全局 TLS 配置,请将证书指令放在/etc/httpd/conf.d/z-ssl-local.conf或者,作为最后的手段,编辑/etc/httpd/conf.d/ssl.conf。 Fedora 软件包更新可能会造成.rpmnew或者.rpmsave文件,因此请准备好在重新加载 Apache 之前合并更改。

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

调整全局配置后,运行sudo apachectl configtest其次是sudo systemctl reload httpd。保留所有手动编辑的最新备份,以便在更新覆盖库存文件时可以重新应用它们。

验证和更新 SSL 证书

安装后,一旦您启用 Certbot 的重定向选项,访问者就会通过 https://www.example.com 访问您的网站(在提示时回答“是”或包含--redirect)。为了保持证书有效,您仍然需要定期更新。

设置自动证书续订

在依赖自动化之前,请运行一次试运行以确认 Certbot 可以端到端地完成该过程:

sudo certbot renew --dry-run

此命令使用 Let's Encrypt 的临时基础设施来验证您的配置,而无需修改生产证书。在进行自动化之前解决所有报告的问题。

SSL证书续订和管理

要保持 TLS 证书的健康,首先要清楚地了解其当前状态,然后自动续订,以便 HTTPS 保持不间断。以下步骤可帮助您确认到期日期并自动执行续订任务。

验证 SSL 证书状态

在自动化续订过程之前,了解 SSL 证书的当前状态至关重要。要检查状态,包括 Certbot 管理的所有证书的到期日期,请使用以下命令:

sudo certbot certificates

此命令提供 Certbot 处理的所有 SSL 证书的列表及其各自的到期日期。此信息对于确认您的证书处于活动状态并了解何时需要续订至关重要。了解状态后,您可以继续自动续订。

自动续订 SSL 证书

为了保证HTTPS服务不间断,必须定期更新SSL证书。自动化此过程对于维护安全网站至关重要。幸运的是,Certbot 让这一切变得简单。

启用 Certbot Systemd 计时器

Fedora 的 Certbot 软件包附带了一个 systemd 计时器,可以为您处理续订。启用它以便 systemd 自动运行配对服务:

sudo systemctl enable --now certbot-renew.timer

定时器时间表certbot-renew.service每天两次,并且仅续订过期后 30 天内的证书。每当您需要保证时,请验证时间表和上次运行:

systemctl list-timers certbot-renew.timer

要进行故障排除,请检查计时器状态或查看最近的日志:

sudo systemctl status certbot-renew.timer
sudo journalctl -u certbot-renew.service --since "24 hours ago"

当计时器处于活动状态时,systemd 可以使您的证书自动化与 Fedora 的其他服务保持同步,而无需维护任何额外的脚本。

可选:在最小系统上使用 Cron

如果您禁用 systemd 计时器或维护较旧的主机,则 cron 作业仍然是可行的后备方案。安装 Cronie 并确保调度程序正在运行:

sudo dnf install cronie
sudo systemctl enable --now crond.service

编辑 root 的 crontab 并添加更新条目。选择适合您的维护时段的计划并保持输出安静,除非出现故障:

sudo crontab -e
0 6,18 * * * certbot renew --quiet

不要同时启用 systemd 计时器和 cron 作业;选择一个调度程序以避免重复续订。确认您的选择已激活sudo systemctl status crond或通过检查/var/log/cron在旧设置上。

了解 Certbot 的续订流程

Certbot 智能地管理更新过程。它仅尝试续订到期后 30 天内的证书。如果证书不需要续订,Certbot 将不会执行任何操作。这种效率可确保您的服务器不会受到不必要的进程的负担,并且您的 SSL 证书始终是最新的。您可以放心,您的网站仍然安全。

设置此自动续订流程是维持持续 HTTPS 加密的最佳实践,可确保您的网站保持安全并受到用户和搜索引擎的信任。自动化可以节省时间并降低证书过期的风险。

生成用于测试的自签名证书

实验室机器或离线演示需要 HTTPS?直接在 Fedora 上创建自签名证书。下面的示例生成一年期 RSA 证书并将其放入系统范围的 TLS 目录中:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 \
  -keyout /etc/pki/tls/private/example.com.key \
  -out /etc/pki/tls/certs/example.com.crt

点SSLCertificateFile和SSLCertificateKeyFile将虚拟主机中的指令添加到这些路径并重新加载 Apache。浏览器会警告用户,因为证书是自签名的,因此请为受信任的环境保留此方法。

部署其他机构的证书

如果您从商业提供商处购买证书(或从企业 PKI 接收证书),请将证书、匹配的私钥和任何中间包复制到/etc/pki/tls/。将钥匙锁定sudo chmod 600 /etc/pki/tls/private/yourdomain.key, 恢复 SELinux 标签sudo restorecon -Rv /etc/pki/tls,并更新您的<VirtualHost>块引用新文件。完成与sudo systemctl reload httpd因此 Apache 为新链提供服务。

Apache HTTPD Fedora 安装的维护和清理

服务器上线后,日常维护可保持高性能并防止配置漂移。使用以下清单来保护目录、掌握更新并在未使用的组件造成麻烦之前将其删除。

Fedora 上 Apache 的安全目录和文件

确保服务器的安全涉及为文件和目录设置适当的权限。过于宽松的设置可能会使您的服务器面临风险。始终使用应用程序运行所需的最少许可设置。

设置安全权限

对于 /var/www/example.com/ 下的目录和文件,请使用以下命令:

sudo find /var/www/example.com/ -type d -exec chmod 755 "{}" \;
sudo find /var/www/example.com/ -type f -exec chmod 644 "{}" \;

这些命令与将目录设置为755(所有者读取、写入、执行,其他人读取和执行),将文件设置为644(所有者读取和写入,其他人读取),这是标准的安全权限。遵循这些步骤可以显着降低未经授权访问的风险。

特定应用程序的特殊权限

请注意,某些应用程序(例如 phpBB)可能需要某些文件夹的 777 权限。始终根据应用程序要求调整权限。然而,除非绝对必要,否则避免使用 777 至关重要。

全面的安全方法

请记住,设置权限只是安全性的一方面。实施 SSL 证书和正确的防火墙配置对于强大的服务器保护也至关重要。这些措施共同确保您的服务器安全。

在 Fedora 上安装后更新 Apache HTTPD

保持 Apache 处于最新状态对于安全性和性能至关重要。养成定期检查 Apache HTTPD Fedora 设置更新的习惯。

更新阿帕奇

要更新 Apache 以及其他系统软件包,请使用以下命令:

sudo dnf update --refresh

此命令刷新包数据库并更新所有已安装的包,包括 Apache。更新后,明智的做法是测试您的配置以确保一切按预期工作。

从 Fedora 卸载 Apache HTTPD

在需要从系统中删除 Apache 的情况下,请按照以下步骤操作以确保干净卸载。从 Fedora 中删除 Apache HTTPD 非常简单。

禁用和停止 Apache

禁用并停止 Apache 服务,如下所示:

sudo systemctl disable httpd --now

此命令停止 Apache 服务并防止其在引导时自动启动。

卸载阿帕奇

要从系统中删除 Apache,请执行以下命令:

sudo dnf remove httpd

此命令卸载 Apache 软件包。

清理剩余文件

卸载后,查看 Apache 配置目录并备份要保留的任何自定义虚拟主机、证书或脚本。快速存档可以保留您的工作,以便您稍后重新安装:

sudo tar -czf ~/httpd-config-backup-$(date +%F).tar.gz /etc/httpd

确认备份安全后,仅删除您创建的目录(例如sites-available,sites-enabled,或自定义片段)。保持打包的默认值完好无损,可以避免破坏将来的重新安装。

Fedora 上的 Apache HTTPD 快速参考表

行动命令
更新系统包sudo dnf upgrade --refresh
安装阿帕奇sudo dnf install httpd
启动阿帕奇sudo systemctl start httpd
在启动时启用 Apachesudo systemctl enable httpd
检查 Apache 状态systemctl status httpd
重新启动阿帕奇sudo systemctl restart httpd
重新加载 Apache 配置sudo systemctl reload httpd
停止阿帕奇sudo systemctl stop httpd
启动时禁用 Apachesudo systemctl disable httpd
测试 Apache 配置sudo apachectl configtest
测试 Apache 配置(简短)sudo apachectl -t
显示虚拟主机配置sudo apachectl -S
查看错误日志sudo tail -f /var/log/httpd/error_log
查看访问日志sudo tail -f /var/log/httpd/access_log

Fedora 上 Apache HTTPD 的实际配置示例

<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost>

自定义错误页面

将默认的 Apache 错误页面替换为与您的站点设计相匹配的自定义 HTML 文件。将这些指令添加到您的虚拟主机配置中:

ErrorDocument 404 /custom_404.html
ErrorDocument 500 /custom_500.html

在文档根目录中创建相应的 HTML 文件(/var/www/example.com/),然后重新加载 Apache 以应用更改。

密码保护目录

<Directory /var/www/example.com/secure>
    AuthType Basic
    AuthName "Restricted Content"
    AuthUserFile /etc/httpd/.htpasswd
    Require valid-user
</Directory>

使用以下命令创建密码文件:sudo htpasswd -c /etc/httpd/.htpasswd username

Apache HTTPD Fedora 安装的高级技巧

要在 Fedora 上充分利用 Apache HTTPD,请探索高级模块、性能调整和安全最佳实践。 Fedora 与 Apache 的集成使您可以根据需求的增长轻松扩展 Web 服务器的功能。随着经验的积累,您可以进一步优化您的设置。

Fedora 上 Apache HTTPD 的最佳实践和提醒

  • 备份配置和网络数据在进行重大更改之前:例如,sudo cp -a /etc/httpd /etc/httpd.bak和sudo cp -a /var/www /var/www.bak
  • 保持 Apache 和您的系统更新为了安全和稳定。
  • 最小化启用的模块以减少攻击面。
  • 使用强权限并避免 777 除非绝对需要(并且永远不要在配置文件中)。
  • 定期监控日志异常活动或错误。
  • 测试配置更改和sudo apachectl configtest在重新启动 Apache 之前。

减少错误页面中的版本详细信息

默认情况下,Apache 在错误页面和响应标头中公布其构建详细信息。通过创建来修剪足迹/etc/httpd/conf.d/z-hardening.conf包含以下几行:

ServerTokens Prod
ServerSignature Off

ServerTokens Prod限制了Server:标题仅Apache, 尽管ServerSignature Off从目录列表和错误页面中删除横幅。添加文件后重新加载 Apache。请密切关注供应商支持要求,因为一些安全扫描器希望看到这些指令。

结论

Apache HTTPD 通过 Fedora 快速移动的软件包堆栈提供了一个经过验证的 Web 服务器平台。安装涵盖存储库更新、防火墙配置、虚拟主机设置以及通过 Certbot 自动续订 SSL。您的 Fedora 系统现在运行一个生产就绪的 Web 服务器,该服务器处理静态站点、PHP 应用程序和反向代理后端,同时保持最新状态并进行定期更新和监控。