Linux小课堂: Apache服务在CentOS上的安装与基础配置指南

Apache服务概述

Apache(正确命名,原文"阿帕奇/阿帕奇"等表述统一修正)是跨平台的Web服务程序,与Nginx、IIS并列为市场占有率最高的Web服务解决方案,它是一款跨平台的开源Web服务程序,市场占有率较高,可在Windows、Linux等主流操作系统运行。其名称源自北美印第安部落,象征着稳定性和持久性

其名称源自北美印第安部落Apache族,寓意高超的策略与稳定性。在RedHat系列系统中安装包名为httpd(HTTP Daemon),而Ubuntu等发行版中仍保留apache命名

服务安装与启停

1 ) 安装命令

bash 复制代码
yum install httpd -y  # -y参数自动确认安装 

2 ) 服务管理命令集

操作 命令 作用
启动服务 systemctl start httpd 启动Apache进程
停止服务 systemctl stop httpd 终止Apache进程
重启服务 systemctl restart httpd 重新加载服务
重载配置 systemctl reload httpd 热更新配置文件
状态查看 systemctl status httpd 检测运行状态
开机自启 systemctl enable httpd 创建systemd软链接
禁用自启 systemctl disable httpd 移除systemd软链接

3 ) 进程验证方法

bash 复制代码
ps -aux | grep httpd    # 检查进程是否存在 
systemctl is-enabled httpd  # 验证开机自启状态 

防火墙端口配置

问题现象:服务启动后无法通过192.168.x.x访问,因firewalld默认屏蔽80端口

解决方案:

bash 复制代码
# 永久开放80端口(TCP协议)
firewall-cmd --zone=public --add-port=80/tcp --permanent  
 
# 立即生效配置 
firewall-cmd --reload  
 
# 验证端口状态 
firewall-cmd --list-ports  # 查看开放端口 
firewall-cmd --zone=public --query-port=80/tcp  # 返回yes即成功 

关键逻辑:

  • --permanent参数使配置持久化,需配合reload生效
  • 移除端口命令:firewall-cmd --zone=public --remove-port=80/tcp --permanent

开机自启与验证

设置开机自启并验证服务:

bash 复制代码
systemctl enable httpd        # 启用开机自启 
systemctl is-enabled httpd    # 检查是否启用(返回"enabled"表示成功)

访问http://localhost或服务器IP(如192.168.1.5),若显示Apache测试页面,表明服务运行正常

Apache核心配置文件解析

配置文件路径:/etc/httpd/conf/httpd.conf(CentOS体系)

包含三种信息类型:

  • 注释:以#开头的说明性文本
  • 全局配置:作用于所有子站点的参数(如ServerRootListen
  • 区域配置:针对特定目录或站点的参数(如<Directory>

配置参数分类

类型 示例参数 作用 默认值
全局配置 ServerRoot 服务主目录 /etc/httpd
ServerAdmin 管理员邮箱 root@localhost
Listen 监听IP与端口 80
User/Group 运行进程的权限身份 apache/apache
区域配置 <Directory> 目录访问权限控制 针对/DocumentRoot
DocumentRoot 网站数据存储路径 /var/www/html
DirectoryIndex 默认索引页面文件 index.html
日志配置 ErrorLog 错误日志路径 /var/log/httpd/error_log
CustomLog 访问日志路径 /var/log/httpd/access_log

自定义网站目录实践

1 ) 创建新数据目录:

bash 复制代码
mkdir /home/web 
echo "New web directory" > /home/web/index.html 

2 ) 修改关键配置项:

apache 复制代码
# 修改主配置文件  编辑`/etc/httpd/conf/httpd.conf`,更改以下参数:
DocumentRoot "/home/web"        # 原值:/var/www/html 
<Directory "/home/web">         # 同步修改目录权限区域 
    AllowOverride None 
    Require all granted 
</Directory>

3 ) 重载服务使配置生效:

bash 复制代码
systemctl reload httpd 

SELinux访问拦截问题

现象:修改DocumentRoot后访问显示默认测试页(非自定义内容)

原因:SELinux安全子系统禁止Apache进程访问非标准目录

解决方案(后续详解):

bash 复制代码
# 临时放行(重启失效)
setenforce 0  
 
# 永久配置(需修改/etc/selinux/config)
semanage fcontext -a -t httpd_sys_content_t "/home/web(/.*)?"  
restorecon -Rv /home/web 

网络动态IP问题

虚拟机IP变动时,重启网络服务更新配置:

bash 复制代码
systemctl restart network 

关键路径汇总

  1. 服务管理优先级:
    修改配置后必须通过systemctl reload httpd重载服务,避免直接重启中断连接。

  2. 防火墙与端口:
    --permanent参数确保规则持久化,配合firewall-cmd --reload即时生效。

  3. 目录权限链:
    Apache需同时满足:

    • 文件系统权限(chmod/chown
    • 配置文件中<Directory>块权限
    • SELinux上下文约束(通过ls -Z检查)
  4. 日志诊断:
    实时监控日志快速定位问题:

    bash 复制代码
    tail -f /var/log/httpd/error_log   # 跟踪错误日志 
    tail -f /var/log/httpd/access_log  # 跟踪访问日志
路径类型 位置
主配置文件 /etc/httpd/conf/httpd.conf
默认网站数据目录 /var/www/html
访问日志 /var/log/httpd/access_log
错误日志 /var/log/httpd/error_log
服务模块目录 /etc/httpd/conf.modules.d/

网络说明:虚拟机IP可能因DHCP变化(如192.168.1.5192.168.0.106),需通过ifconfigsystemctl restart network更新

关键点强调:

  • 配置修改需同步更新DocumentRoot<Directory>路径,否则触发权限错误
  • 防火墙开放端口后,必须通过--reload激活规则,仅--permanent无效
  • 所有操作需在配置文件语法验证后执行(apachectl configtest
相关推荐
霞姐聊IT39 分钟前
SR-IOV、MR-IOV 与 SIOV:PCIe虚拟化技术的过去、现在与未来
linux·服务器·虚拟化·pcie
szxinmai主板定制专家1 小时前
电力设备RK3568/RK3576+FPGA,多系统混合部署Linux+RTOS RT-THREAD,强实时性
linux·运维·服务器·人工智能·嵌入式硬件·fpga开发
枕星而眠2 小时前
Linux 四大进程/线程同步锁详解:互斥锁、读写锁、条件变量、文件锁
linux·c语言·后端·ubuntu·学习方法
L、2182 小时前
CANN调优工具链全景:从profiler到tensorboard的完整观测体系
linux·运维·服务器·深度学习
j_xxx404_3 小时前
Linux进程信号捕捉与操作系统运行本质深度解析
linux·运维·服务器·开发语言·c++·人工智能·ai
eggrall3 小时前
Linux信号——保存信号
linux·运维·服务器
2501_920047033 小时前
firewalld的使用
linux·运维
z202305083 小时前
以太网之VLAN介绍
linux·服务器·网络·人工智能·ai
拉不拉斯3 小时前
Linux 性能调优实战指南:从 perf 实时监控到火焰图生成
linux·运维·服务器·perf
小生迷途知返4 小时前
影响巨大!Linux 提权大洞速速复现!!!暂无补
linux·运维·服务器