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
相关推荐
我爱钱因此会努力3 小时前
ansible实战- 循环创建多个用户
运维·服务器·centos
广药门徒3 小时前
Linux 驱动开发中,主设备号和次设备号不同的两个驱动能否正常工作
linux·运维·驱动开发
踩坑小念3 小时前
进程 线程 协程基本概念和区别 还有内在联系
java·linux·jvm·操作系统
采坑先锋3 小时前
Docker环境离线安装-linux服务器
linux·服务器·docker
顾安r3 小时前
10.25 脚本 整理2024全年 GITHUB每周热门项目
linux·c语言·python·github·bash
Ronin3054 小时前
【Linux网络】进程间关系与守护进程
linux·网络·守护进程·进程间关系·前台进程·后台进程
脑洞代码4 小时前
ADXL345 SPI加速度传感器Linux驱动开发笔记
linux·驱动开发·笔记
zhilin_tang4 小时前
构建一个完整的Linux物联网设备共享内存程序测试框架
linux·c语言·架构
java_logo4 小时前
Docker 部署银河麒麟(Kylin Linux)全流程教程
linux·运维·阿里云·docker·容器·kylin