Linux 环境下 Apache HTTP Server (httpd) 的安装、配置与基础使用指南

📅 2026/7/22 18:25:58 👁️ 阅读次数 📝 编程学习
Linux 环境下 Apache HTTP Server (httpd) 的安装、配置与基础使用指南

1. 引言

在 Linux 服务器上搭建 Web 服务是开发者和运维人员的必备技能之一。Apache HTTP Server(通常简称为 httpd)作为一款历史悠久、功能强大且稳定的开源 Web 服务器软件,是构建网站和应用服务的首选。本文将基于 CentOS/RHEL 及其衍生系统(如 Rocky Linux、AlmaLinux),详细介绍如何从零开始安装、配置 Apache,并完成本地回环地址(127.0.0.1/localhost)的访问测试,最后部署一个简单的前端页面。

  • 检查系统是否已安装 httpd。
  • 使用 yum 包管理器安装 Apache。
  • 启动、停止、重启服务以及查看服务状态。
  • 理解并修改核心配置文件/etc/httpd/conf/httpd.conf
  • 通过 rz 命令上传文件到 Web 根目录。
  • 在本地浏览器访问搭建的网站。

2. 环境准备与安装

2.1 检查是否已安装 httpd

在开始安装之前,建议先检查系统中是否已经存在 Apache 服务。打开终端,执行以下命令:

which httpd

如果命令返回了类似/usr/sbin/httpd的路径或列出了相关的软件包名,则说明 httpd 已经安装。如果没有任何输出,则表示系统尚未安装 Apache。

2.2 使用 yum 安装 httpd

在 CentOS/RHEL 系列系统中,推荐使用yum(或新系统的dnf)包管理器进行安装。执行以下命令:

sudo yum -y install httpd

命令解析:

  • sudo:以管理员权限执行。
  • yum -y install:使用 yum 安装指定软件包,-y参数表示自动确认所有提示
  • httpd:Apache HTTP Server 的软件包名称。

安装过程会自动解决依赖关系并下载安装所需的文件。安装完成后,可以通过以下命令验证安装版本:

httpd -v

3. 服务管理与状态查看

3.1 启动 Apache 服务

安装完成后,需要启动 httpd 服务才能对外提供 Web 服务。使用 systemctl 命令启动服务:

sudo systemctl start httpd

3.2 设置开机自启

为了确保服务器重启后 Apache 能自动运行,建议启用开机自启:

sudo systemctl enable httpd

3.3 查看服务状态

启动服务后,务必检查其运行状态,这是排查问题的重要步骤:

sudo systemctl status httpd

如果服务正常运行,你将看到类似 “active (running)” 的绿色提示。如果状态异常(如 failed),可以查看更详细的日志:

sudo journalctl -u httpd -f

3.4 其他常用服务管理命令

  • 停止服务sudo systemctl stop httpd
  • 重启服务sudo systemctl restart httpd(常用于应用配置更改后)
  • 重新加载配置sudo systemctl reload httpd(不中断现有连接,仅重载配置文件)

4. 核心配置文件详解

4.1 配置文件位置

Apache 的主配置文件位于:

/etc/httpd/conf/httpd.conf

你可以使用任何文本编辑器(如 vim, nano)来查看和修改它:

sudo vim /etc/httpd/conf/httpd.conf

4.2 关键配置项说明

打开配置文件后,你会看到许多配置指令。以下是几个最常用且可能需要修改的项:

  • Listen:指定 Apache 监听的端口号。默认是Listen 80,即监听所有网络接口的 80 端口(HTTP)。如果你想更改端口(例如改为 8080),可以修改为Listen 8080
  • ServerName:设置服务器的主机名和端口。对于本地测试,可以设置为ServerName localhost:80
  • DocumentRoot:定义网站文件的根目录。默认是/var/www/html。你上传的所有网页文件都应放在这个目录或其子目录下。
  • Directory指令块:用于对特定目录(如/var/www/html)设置访问权限。确保其中包含Require all granted以允许访问。

注意:修改配置文件后,必须重启或重新加载 httpd 服务才能使更改生效。(reboot)

5. 部署网站内容

5.1 进入 Web 根目录

Apache 默认的网站根目录是/var/www/html。首先切换到这个目录:

cd /var/www/html

你可以使用ls -la命令查看目录下已有的文件(通常有一个默认的测试页面index.html)。

5.2 上传文件 (rz 命令)

如果你在本地开发了前端页面(如 HTML、CSS、JavaScript 文件),需要将它们上传到服务器。在支持 Zmodem 协议的终端(如 Xshell, SecureCRT)中,可以使用rz命令。

  1. 确保已安装 lrzsz 工具:sudo yum -y install lrzsz
  2. /var/www/html目录下执行:rz
  3. 此时会弹出文件选择对话框,选择你要上传的本地文件即可。

如果无法使用rz,也可以使用 SCP 或 SFTP 等工具进行文件传输。

5.3 设置文件权限

确保上传的文件对 Apache 进程(通常运行在apachewww-data用户下)是可读的。通常,将文件所有者设为apache用户并给予适当权限:

sudo chown -R apache:apache /var/www/html sudo chmod -R 755 /var/www/html

6. 本地测试与访问

6.1 理解本地回环地址

127.0.0.1是一个特殊的 IPv4 地址,称为“回环地址”或“本地主机”。它指向你正在操作的机器本身,不经过物理网络接口。localhost是一个主机名,在大多数系统的 hosts 文件(/etc/hosts)中默认被解析为 127.0.0.1。因此,127.0.0.1localhost在本地网络环境中是等价的。

6.2 在服务器本地测试

在服务器终端中,可以使用curl命令测试 Apache 是否正常工作:

curl http://localhost

或者

curl http://127.0.0.1

如果返回了你部署的 HTML 页面内容,说明服务运行正常。

6.3 在本地浏览器访问

如果你的服务器有图形界面,可以直接打开浏览器访问http://localhosthttp://127.0.0.1

如果服务器是远程的(无图形界面),你需要在你自己的电脑上打开浏览器,输入服务器的公网 IP 地址进行访问。前提是服务器的防火墙已放行 80 端口(或你自定义的端口)。

7. 防火墙配置(默认永久关闭)

如果无法从外部访问,很可能是防火墙阻止了 HTTP 端口。在 CentOS/RHEL 7+ 上,默认的防火墙工具是 firewalld。

  • 停止防火墙:systemctl stop firewalld
  • 禁止防火墙开机启动systemctl disable firewalld
  • 永久开放 80 端口sudo firewall-cmd --permanent --add-service=http
  • 永久开放 443 端口 (HTTPS)sudo firewall-cmd --permanent --add-service=https
  • 重新加载防火墙规则sudo firewall-cmd --reload
  • 查看已开放的服务sudo firewall-cmd --list-services

8. 总结与故障排查

至此,你已经成功在 Linux 上搭建了一个基础的 Apache Web 服务器。整个过程可以概括为:检查 → 安装 → 启动 → 配置 → 部署 → 测试

常见问题排查思路:

  1. 服务启动失败:检查配置文件语法sudo apachectl configtest;查看错误日志sudo tail -f /var/log/httpd/error_log
  2. 无法访问页面:确认服务状态是否为 “active (running)”;检查防火墙设置;确认DocumentRoot目录下存在有效的索引文件(如 index.html)。
  3. 权限拒绝 (403 Forbidden):检查/var/www/html目录及其内部文件的权限和 SELinux 上下文。