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
相关推荐
hgz07107 小时前
Linux服务器环境部署与JMeter压测准备
linux·服务器·jmeter
ShirleyWang0127 小时前
VMware如何导入vmdk文件
linux·数据库
李昊哲小课8 小时前
Apache Shiro 教程
apache·shiro
Lueeee.8 小时前
内核menuconfig配置实验
linux
遇见火星8 小时前
常见Systemctl语句
linux·服务器·网络·systemctl
月明长歌8 小时前
【码道初阶】【LeetCode 110】平衡二叉树:如何用一个“Magic Number”将复杂度从O(N²)降为 O(N)?
linux·算法·leetcode
齐鲁大虾8 小时前
国产 Linux 系统核心优缺点与适用场景
linux·运维·服务器
skywalk81639 小时前
webvm 用浏览器启动的虚拟环境
linux·wasm
Awkwardx9 小时前
Linux网络编程—数据链路层
linux·运维·网络
kevin_水滴石穿10 小时前
在镜像生成时从内网获取字体安装包并配置
linux·docker·容器