在 CentOS 系统中,httpd(即 Apache HTTP Server)是企业级应用中最广泛使用的 Web 服务器软件之一,它以其稳定性、灵活性和强大的功能而著称,成功开启并配置 httpd 服务是部署网站或 Web 应用的第一步,本文将系统性地介绍在 CentOS 系统上安装、启动、配置并验证 httpd 服务的完整流程,旨在为系统管理员和开发者提供一份清晰、详尽的操作指南。

环境准备与安装
在开始之前,请确保您拥有一台已安装的 CentOS 7 或 CentOS 8 系统,并且具备 sudo 权限或以 root 用户身份登录,大多数情况下,系统默认并未预装 httpd,因此首先需要进行安装。
CentOS 使用 yum(在 CentOS 8 中也可使用 dnf)作为其包管理器,安装过程非常直接,只需执行以下命令:
sudo yum install httpd -y
这条命令会自动处理所有依赖关系,并从官方软件仓库中下载并安装 httpd 服务及其相关组件,参数 -y 表示在安装过程中自动回答“是”,无需手动确认。
启动与设置开机自启
安装完成后,httpd 服务处于停止状态,并不会自动运行,我们需要手动启动它,并设置其在系统重启后能够自动开启,这是保障 Web 服务持续可用的关键步骤。
-
启动 httpd 服务
使用
systemctl命令来启动服务,这是现代 Linux 系统(包括 CentOS 7 及以上版本)的标准服务管理工具。sudo systemctl start httpd
-
设置开机自启
为了确保服务器在意外重启或计划维护后能够自动恢复 Web 服务,需要将 httpd 服务添加到开机启动项中。
sudo systemctl enable httpd
执行此命令后,系统会创建相应的符号链接,使得在每次启动时都会自动加载 httpd 服务。
-
检查服务状态

为了确认服务是否已经成功启动并处于运行状态,可以使用以下命令查看其状态信息。
sudo systemctl status httpd
如果一切正常,输出信息中会包含
active (running)的字样,并显示服务的进程 ID(PID)、运行时间等详细信息。
配置防火墙
CentOS 默认使用 firewalld 作为防火墙管理工具,为了允许外部用户通过 HTTP(端口 80)和 HTTPS(端口 443)协议访问您的 Web 服务器,必须在防火墙中开放相应的服务。
-
永久开放 HTTP 和 HTTPS 服务
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https
--permanent参数表示此规则将永久生效,即使防火墙或系统重启也不会丢失。 -
重新加载防火墙配置
添加永久规则后,需要重新加载防火墙配置使其立即生效。
sudo firewall-cmd --reload
-
验证防火墙规则
可以通过以下命令查看当前防火墙的公共区域(
public)已开放的服务列表,确认http和https是否已成功添加。sudo firewall-cmd --list-all
验证 Web 服务器
至此,httpd 服务已经启动并配置好了防火墙,最简单直接的验证方法是在本地或远程客户端的浏览器中访问服务器的 IP 地址。

获取服务器的 IP 地址:
ip addr show
或者
hostname -I
找到您的公网或内网 IP 地址(168.1.100),然后在浏览器地址栏中输入 http://<您的服务器IP>,如果一切顺利,您将看到 CentOS 7/8 的 Apache HTTP Server 测试页面,这标志着 httpd 服务已经成功开启并正常运行。
关键目录与文件介绍
熟悉 httpd 的主要配置文件和目录对于后续的网站部署和故障排查至关重要,下表列出了最常用的一些路径及其说明。
| 路径 | 说明 |
|---|---|
/etc/httpd/conf/httpd.conf |
httpd 的主配置文件,包含全局性设置。 |
/etc/httpd/conf.d/ |
用于存放额外的配置文件,例如虚拟主机配置。 |
/var/www/html/ |
网站文件的默认根目录,您的网页文件应放在此。 |
/var/log/httpd/ |
httpd 的日志文件目录,包含访问日志和错误日志。 |
/etc/httpd/modules/ |
httpd 的模块文件存放目录。 |
常用管理命令汇总
为了方便日常管理,以下是一份常用的 systemctl 命令速查表。
| 命令 | 功能 |
|---|---|
sudo systemctl start httpd |
启动 httpd 服务。 |
sudo systemctl stop httpd |
停止 httpd 服务。 |
sudo systemctl restart httpd |
重启 httpd 服务(停止后启动)。 |
sudo systemctl reload httpd |
平滑重载 httpd 服务(不中断连接,重新读取配置)。 |
sudo systemctl status httpd |
查看 httpd 服务的运行状态。 |
sudo systemctl disable httpd |
禁止 httpd 服务开机自启。 |
相关问答 (FAQs)
问:我已经成功启动了 httpd 服务,并且在服务器上通过 curl localhost 可以访问,但为什么从外部其他电脑的浏览器却无法访问?
答: 这是最常见的问题之一,通常由两个原因导致,首先是 防火墙,请务必确认您已经按照本文第三部分的说明,使用 firewall-cmd 开放了 http 和 https 服务并重新加载了配置,其次是 SELinux(Security-Enhanced Linux),CentOS 默认启用了 SELinux,它可能会阻止 httpd 访问非标准目录,您可以临时关闭 SELinux 进行测试:sudo setenforce 0,如果关闭后可以访问,说明是 SELinux 策略问题,正确的做法是为您的网站目录设置正确的 SELinux 安全上下文,若您将网站根目录放在 /var/www/my_site,则需要执行 sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/my_site(/.*)?" sudo restorecon -Rv /var/www/my_site。
问:如何将我的网站文件发布上去,而不是显示默认的测试页面?
答: 您需要将您的网站文件(index.html, style.css 等)放置到网站的根目录中,默认的根目录是 /var/www/html/,最简单的方法是:1. 删除或重命名该目录下的默认测试页面文件(如 welcome.html),2. 将您的网站文件上传或复制到 /var/www/html/ 目录下,确保 index.html 作为您的首页,3. 确保文件和目录的权限正确,httpd 进程(通常由 apache 用户运行)至少需要有读取权限,您可以使用 chown -R apache:apache /var/www/html 和 chmod -R 755 /var/www/html 命令来设置标准的所有权和权限,完成后,刷新浏览器即可看到您的网站内容。