centos7安装httpd和php
CentOS 7 下安装配置 Apache HTTP 服务器(httpd)
CentOS 7 相较于 6.x 版本,在防火墙和系统服务管理上引入了重大变化:firewalld 取代了 iptables,systemd 取代了 SystemV init。这意味着许多我们熟悉的命令需要更新。本文记录了在 CentOS 7 上安装、配置 Apache HTTP 服务器(httpd)并放行防火墙的完整过程,帮助快速适应这些变化。
📦 一、安装 httpd 与 PHP 环境
1.1 检查是否已安装 httpd
CentOS 7 默认不会安装 httpd。我们可以通过以下命令确认:
# 查询已安装的 httpd 相关包 rpm -qa | grep httpd
1.2 安装 httpd 和 PHP
如果上一步没有输出,说明系统未安装,执行安装命令:
# 安装 Apache(httpd) yum -y install httpd # 安装 PHP 核心 yum -y install php # 安装 PHP 常用扩展模块(支持 GD、LDAP、SNMP、XML 等) yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel
🚀 二、管理 httpd 服务(systemd)
CentOS 7 使用 systemd 管理系统服务,相关命令也发生了变化。
2.1 启动并设置开机自启
# 立即启动 httpd 服务 systemctl start httpd.service # 设置 httpd 开机自动启动 systemctl enable httpd.service
2.2 验证开机启动配置
执行 enable 命令后,systemd 会在 /etc/systemd/system/multi-user.target.wants/ 目录下创建指向实际服务单元的符号链接。我们可以通过查看该目录来验证:
# 列出 multi-user.target 启动级别下的所有服务链接 ll /etc/systemd/system/multi-user.target.wants/ # 输出示例(节选): total 0 lrwxrwxrwx. 1 root root 38 Sep 16 19:08 auditd.service -> /usr/lib/systemd/system/auditd.service lrwxrwxrwx. 1 root root 44 Sep 16 19:08 avahi-daemon.service -> /usr/lib/systemd/system/avahi-daemon.service lrwxrwxrwx. 1 root root 37 Sep 17 02:38 httpd.service -> /usr/lib/systemd/system/httpd.service lrwxrwxrwx. 1 root root 42 Sep 16 19:08 irqbalance.service -> /usr/lib/systemd/system/irqbalance.service lrwxrwxrwx. 1 root root 46 Sep 16 19:08 NetworkManager.service -> /usr/lib/systemd/system/NetworkManager.service # ... 其他服务省略
如果看到 httpd.service 的链接,说明开机自启配置成功。
🔥 三、配置 firewalld 防火墙放行 HTTP 服务
CentOS 7 默认使用 firewalld 动态防火墙。要允许外部访问 Web 服务,需要放行 HTTP(80端口)。
3.1 放行 HTTP 服务
firewalld 提供了两种操作方式:
- 立即生效(运行时规则):重启防火墙或重新加载后会丢失。
- 永久生效(写入配置文件):需要配合
--permanent参数,并重新加载防火墙。
建议两条命令都执行,确保当前和重启后都生效:
# 立即放行 HTTP 服务(临时规则) firewall-cmd --add-service=http # 将 HTTP 服务永久添加到防火墙规则 firewall-cmd --permanent --add-service=http # 重新加载防火墙配置,使永久规则生效(建议执行) firewall-cmd --reload
3.2 理解 firewalld 的服务与端口
执行上述命令后,HTTP 服务被添加到了默认 zone(通常是 public)的配置文件中。可以通过以下命令查看:
# 查看 public zone 的配置文件 cat /etc/firewalld/zones/public.xml # 输出示例: <?xml version="1.0" encoding="utf-8"?> <zone> <short>Public</short> <description>For use in public areas. ... </description> <service name="dhcpv6-client"/> <service name="http"/> # 这就是我们添加的规则 <service name="ssh"/> <service name="https"/> </zone>
💡 关于 firewalld 的“服务”概念: 这里提到的 service(如 http)不是 systemd 中管理的后台守护进程,而是一种预定义的端口规则集合。每个服务对应一个 XML 配置文件,定义了协议和端口。例如,http 服务的定义文件位于:
/usr/lib/firewalld/services/http.xml
其内容如下:
<?xml version="1.0" encoding="utf-8"?> <service> <short>WWW (HTTP)</short> <description>HTTP is the protocol used to serve Web pages. ... </description> <port protocol="tcp" port="80"/> # 实际开放的是 TCP 80 端口 </service>
firewalld 正是通过这种“服务名 → 端口”的映射关系,让我们可以不必记忆端口号,直接使用服务名放行。
🔄 四、CentOS 7 vs CentOS 6:主要变化总结
从 CentOS 6 迁移到 7,最大的变化在于系统管理和防火墙。以下是本文涉及的主要区别:
| 管理范畴 | CentOS 6 | CentOS 7 |
|---|---|---|
| 服务管理 | service httpd startchkconfig httpd on
|
systemctl start httpdsystemctl enable httpd
|
| 防火墙 |
iptables -A INPUT -p tcp --dport 80 -j ACCEPTservice iptables save
|
firewall-cmd --add-service=httpfirewall-cmd --permanent --add-service=http
|
| 配置文件风格 | 纯文本(易出错) | XML 格式(结构化、规范) |
📌 个人感受:
虽然 CentOS 7 的许多命令需要重新记忆,但新的设计理念(服务抽象、动态配置、XML 结构化)使管理更加人性化,操作也更为直观。适应之后,你会发现它比旧版本更加强大和易用。
本文记录了 CentOS 7 下 httpd 从安装到防火墙放行的完整流程,希望能帮助同样在适应新系统的朋友们快速上手。如有错漏,欢迎指正交流。

浙公网安备 33010602011771号