第2章:进阶Linux系统——第9节:配置与管理Apache服务器
目录一、项目概述1. 项目背景2. 职业能力目标二、Web 服务与 HTTP 基础1. Web 服务简介2. HTTP 协议三、Apache 服务安装、启动与管理1. 安装 httpdCentOS/RHEL 72. 服务控制命令3. 防火墙放行 HTTP4. SELinux 配置关键5. 测试安装成功四、Apache 核心配置文件1. 配置文件路径2. 配置文件语法3. 核心配置参数五、Apache 常规配置实例实例 1修改网站根目录与默认首页实例 2用户个人主页~ 用户名实例 3虚拟目录配置Alias六、Apache 高级常规设置1. 服务根目录ServerRoot2. 超时设置3. 并发连接数限制prefork 模式4. 管理员邮箱与主机名5. 默认字符集6. 目录访问控制核心常用 Options 参数访问控制Order Allow/Deny七、虚拟主机配置重点1. 基于 IP 的虚拟主机2. 基于域名的虚拟主机最常用3. 基于端口的虚拟主机八、常见故障排查九、扩展知识1. Apache 与 Nginx 对比2. httpd.conf 与 conf.d 分离设计3. .htaccess 分布式配置4. HTTPS 配置扩展5. Apache 日志分析十、项目总结一、项目概述1. 项目背景某学院需搭建Web 服务器存放学院官网同时配套 FTP 服务实现文件上传下载本项目专注Apachehttpd服务的安装、配置、管理与虚拟主机搭建。2. 职业能力目标理解 Apache 与 Web 服务原理掌握 Apache 安装、启停、自启、防火墙与 SELinux 配置掌握主配置文件httpd.conf核心参数完成常规网站配置、用户主页、虚拟目录搭建IP / 域名 / 端口三种虚拟主机二、Web 服务与 HTTP 基础1. Web 服务简介WWW互联网最常用信息服务C/S 架构分类静态 Web纯 HTML/CSS/JS、动态 WebPHP/Java/Python 等服务端软件Apachehttpd、Nginx、IIS客户端浏览器Chrome/Firefox2. HTTP 协议全称HyperText Transfer Protocol 超文本传输协议默认端口80自定义端口如 8080 需显式写在 URLhttp://域名:8080访问流程浏览器发送 GET/POST 请求服务器建立连接、查找资源返回页面或 404 等错误浏览器渲染页面完成后断开连接三、Apache 服务安装、启动与管理1. 安装 httpdCentOS/RHEL 7# 检查是否安装 rpm -q httpd # 挂载光盘配置本地yum源 mkdir /iso mount /dev/cdrom /iso # 清除缓存并安装 yum clean all yum install httpd -y # 安装测试浏览器 yum install firefox -y # 验证安装 rpm -qa | grep httpd2. 服务控制命令# 启动 systemctl start httpd # 重启 systemctl restart httpd # 停止 systemctl stop httpd # 设置开机自启 systemctl enable httpd # 查看状态 systemctl status httpd3. 防火墙放行 HTTP# 永久添加http服务 firewall-cmd --permanent --add-servicehttp # 重载防火墙 firewall-cmd --reload # 查看规则 firewall-cmd --list-all4. SELinux 配置关键Apache 访问异常403 / 无法访问90% 是 SELinux 导致# 临时关闭重启失效 setenforce 0 # 查看状态 getenforce # 永久关闭可选 sed -i s/SELINUXenforcing/SELINUXpermissive/ /etc/selinux/config生产推荐不关闭 SELinux开启 httpd 家目录权限setsebool -P httpd_enable_homedirson5. 测试安装成功firefox http://127.0.0.1 # 或 curl 127.0.0.1四、Apache 核心配置文件1. 配置文件路径配置类型路径服务根目录/etc/httpd主配置文件/etc/httpd/conf/httpd.conf网站根目录/var/www/html访问日志/var/log/httpd/access_log错误日志/var/log/httpd/error_log虚拟主机配置/etc/httpd/conf.d/*.conf2. 配置文件语法不区分大小写#开头为注释指令格式参数名 参数值目录权限段Directory 路径 ... /Directory3. 核心配置参数参数作用ServerRoot服务安装根目录Listen监听 IP: 端口默认 Listen 80DocumentRoot网站文件根目录ServerName服务器域名端口ServerAdmin管理员邮箱DirectoryIndex默认首页index.htmlErrorLog错误日志路径CustomLog访问日志格式与路径Timeout超时时间默认 300 秒User/Group运行服务的用户 / 组apache/apache五、Apache 常规配置实例实例 1修改网站根目录与默认首页创建新目录与首页mkdir /home/www echo DocumentRoot Test /home/www/myweb.html修改/etc/httpd/conf/httpd.conf# 约119行 DocumentRoot /home/www # 约124行 Directory /home/www AllowOverride None Require all granted /Directory # 约164行设置默认首页优先级 DirectoryIndex myweb.html index.html重启服务并测试systemctl restart httpd firefox http://127.0.0.1实例 2用户个人主页~ 用户名创建用户并设置权限useradd long passwd long chmod 705 /home/long创建个人主页目录mkdir /home/long/public_html echo longs homepage /home/long/public_html/index.html启用用户主页模块修改/etc/httpd/conf.d/userdir.conf# 注释掉 # UserDir disabled # 开启 UserDir public_html重启服务访问http://服务器IP/~long实例 3虚拟目录配置Alias作用URL 路径映射真实物理路径不暴露真实目录创建物理目录mkdir -p /virdir echo Virtual Directory /virdir/index.html chmod 705 /virdir -R在httpd.conf添加配置Alias /test /virdir Directory /virdir AllowOverride None Require all granted /Directory访问http://IP/test六、Apache 高级常规设置1. 服务根目录ServerRootServerRoot /usr/local/httpd2. 超时设置Timeout 3003. 并发连接数限制prefork 模式IfModule prefork.c StartServers 8 # 启动进程数 MinSpareServers 5 # 最小空闲进程 MaxSpareServers 20 # 最大空闲进程 ServerLimit 500 # 最大进程上限 MaxClients 500 # 最大并发 MaxRequestsPerChild 4000 # 单进程最大请求数 /IfModule4. 管理员邮箱与主机名ServerAdmin rootsmile.com ServerName www.example.com:805. 默认字符集AddDefaultCharset GB23126. 目录访问控制核心常用 Options 参数参数作用Indexes无默认首页时显示目录列表FollowSymLinks允许符号链接ExecCGI允许执行 CGINone禁用所有特性All启用除 Multiviews 外所有访问控制Order Allow/Deny规则后匹配优先允许所有Order allow,deny Allow from all拒绝单个 IP / 域名Order deny,allow Deny from 192.168.100.100 Deny from .bad.com仅允许内网网段Order deny,allow Deny from all Allow from 192.168.0.0/24七、虚拟主机配置重点同一台服务器运行多个独立网站三种实现方式基于 IP多 IP基于域名单 IP 多域名基于端口单 IP 单域名多端口1. 基于 IP 的虚拟主机前提服务器配置多个 IP创建站点目录mkdir /var/www/ip1 /var/www/ip2 echo IP1:192.168.10.1 /var/www/ip1/index.html echo IP2:192.168.10.2 /var/www/ip2/index.html新建虚拟主机配置/etc/httpd/conf.d/vhost.confVirtualHost 192.168.10.1 DocumentRoot /var/www/ip1 /VirtualHost VirtualHost 192.168.10.2 DocumentRoot /var/www/ip2 /VirtualHost添加目录权限httpd.confDirectory /var/www/ip1 Require all granted /Directory Directory /var/www/ip2 Require all granted /Directory重启服务访问2. 基于域名的虚拟主机最常用前提DNS 解析多个域名到同一 IP创建站点目录mkdir /var/www/www1 /var/www/www2 echo www1.long.com /var/www/www1/index.html echo www2.long.com /var/www/www2/index.html虚拟主机配置vhost.confVirtualHost 192.168.10.1 ServerName www1.long.com DocumentRoot /var/www/www1 /VirtualHost VirtualHost 192.168.10.1 ServerName www2.long.com DocumentRoot /var/www/www2 /VirtualHostDNS 配置正向解析www1 IN A 192.168.10.1 www2 IN A 192.168.10.13. 基于端口的虚拟主机监听新端口httpd.confListen 8088 Listen 8089创建目录mkdir /var/www/8088 /var/www/8089 echo 8088 /var/www/8088/index.html echo 8089 /var/www/8089/index.html虚拟主机配置VirtualHost 192.168.10.1:8088 DocumentRoot /var/www/8088 /VirtualHost VirtualHost 192.168.10.1:8089 DocumentRoot /var/www/8089 /VirtualHost防火墙放行端口firewall-cmd --permanent --add-port8088/tcp firewall-cmd --permanent --add-port8089/tcp firewall-cmd --reload访问http://IP:8088、http://IP:8089八、常见故障排查403 Forbidden目录权限不足chmod 755 站点目录SELinux 拦截setenforce 0或setsebool -P httpd_enable_homedirsonDirectory 未配置Require all granted无法远程访问防火墙未放行 80 / 自定义端口服务器 IP 与客户端不在同一网段虚拟主机不生效配置文件放错路径必须在/etc/httpd/conf.d/DNS 解析错误未重启 httpd 服务端口虚拟主机无法访问未在Listen声明端口防火墙未放行自定义端口九、扩展知识1. Apache 与 Nginx 对比Apache稳定、兼容好、模块丰富适合静态 动态Nginx高并发、轻量、内存低适合反向代理与静态资源2. httpd.conf 与 conf.d 分离设计httpd.conf主配置conf.d/*.conf子配置虚拟主机、模块便于维护3. .htaccess 分布式配置需开启AllowOverride All用于目录级权限、重写、认证不修改主配置4. HTTPS 配置扩展模块mod_ssl端口443配置 SSL 证书实现加密访问5. Apache 日志分析可使用AWStats、Webalizer分析访问量、IP、页面请求十、项目总结Apache 是 Linux 下最经典的 Web 服务配置稳定、生态完善核心配置DocumentRoot、Directory、Listen、VirtualHost三大坑防火墙、SELinux、目录权限虚拟主机是服务器整合必备技能域名型生产最常用