一、实验目的

  1. 掌握Linux系统中本地镜像挂载的方法,能够访问镜像内的软件资源。
  2. 熟练使用RPM(Red-Hat Package Manager)命令手动安装软件包,理解RPM包安装的依赖关系处理逻辑。
  3. 完成Apache(httpd)服务的安装、基础配置、启动及访问验证,掌握httpd服务的基础运行流程。
  4. 对比YUM自动安装与RPM手动安装的差异,明确RPM安装在无YUM源场景下的应用价值。

二、实验环境

项目

说明

操作系统

CentOS 7(x86_64架构,RHEL 7系列兼容)

硬件/存储

已准备CentOS 7系统完整安装镜像,光驱/镜像设备标识为/dev/sr0

网络环境

无外网连接(或外网资源不可用),依赖本地镜像完成软件安装

核心软件包

httpd-tools-2.4.6-45.el7.centos.x86_64.rpm、mailcap-2.1.41-2.el7.noarch.rpm、httpd-2.4.6-45.el7.centos.x86_64.rpm

工具软件

vim(文本编辑器)、curl(HTTP请求工具)、rpm(包管理工具)

三、实验原理

  1. 本地镜像挂载原理:Linux系统中,光盘/ISO镜像属于块设备,需通过mount命令挂载到指定目录(如/media),使设备内的文件系统被系统识别,从而可访问镜像内的资源(如RPM包)。
  2. RPM包安装原理:RPM是基于Red Hat系统的软件包管理格式,包含软件的二进制文件、配置文件、依赖信息等。使用rpm -ivh命令可手动安装RPM包,其中“-i”表示安装,“-v”显示详细安装过程,“-h”以进度条显示安装进度。
  3. httpd服务依赖关系:httpd(Apache主服务)运行依赖httpd-tools(httpd配套工具包)和mailcap(邮件支持相关依赖包),需先安装依赖包,再安装主服务包,否则会提示依赖错误导致安装失败。
  4. httpd服务运行逻辑:安装完成后,通过systemctl命令启动服务,httpd默认监听80端口,默认网站根目录为/var/www/html,访问该目录下的index.html文件即可验证服务是否正常运行。

四、实验步骤(附命令详解)

步骤1:挂载本地系统镜像到指定目录

mount /dev/sr0 /media

 

 - 命令作用:将/dev/sr0对应的系统安装镜像挂载到/media目录,使镜像内的文件(包括RPM包)可通过/media目录访问。

 - 注意事项:

  • 执行该命令需使用root权限,若当前为普通用户,需先执行su -切换到root用户。
  • 若提示“mount: /dev/sr0 is write-protected, mounting read-only”,属于正常提示,镜像默认以只读模式挂载。
  • 若提示“/media is busy”,需先执行umount /media卸载原有挂载,再重新执行挂载命令。

步骤2:进入镜像内RPM包存放目录

cd /media/Packages

 

 - 命令作用:切换到镜像内RPM包的默认存放目录(/media/Packages),该目录包含CentOS 7系统的所有基础软件RPM包,httpd相关包均在此目录下。

 - 补充说明:若命令中“P...”为其他路径,需根据实际镜像目录结构调整,核心是进入包含httpd相关RPM包的目录。可通过ls命令查看目录下的文件,确认目标RPM包是否存在。

步骤3:安装httpd依赖包——httpd-tools

rpm -ivh httpd-tools-2.4.6-45.el7.centos.x86_64.rpm

 

 - 命令作用:安装httpd服务的配套工具包,该包提供httpd运行所需的辅助工具(如htpasswd等),是httpd服务的核心依赖之一。

 - 正常输出:命令执行后,会显示进度条(#######),最终提示“Complete!”,表示该依赖包安装成功。

步骤4:安装httpd依赖包——mailcap

rpm -ivh mailcap-2.1.41-2.el7.noarch.rpm

 

 - 命令作用:安装mailcap包,该包用于处理邮件相关的MIME类型映射,httpd服务在处理部分资源请求时依赖此包。

 - 包类型说明:“noarch”表示该RPM包不依赖具体硬件架构,可在32位和64位CentOS 7系统上通用;而“x86_64”表示仅适用于64位架构系统。

步骤5:安装httpd主服务包

rpm -ivh httpd-2.4.6-45.el7.centos.x86_64.rpm

 

 - 命令作用:安装Apache(httpd)主服务包,该包包含httpd服务的核心程序、配置文件等,是实现Web服务的核心组件。

 - 关键说明:必须先完成步骤3和步骤4的依赖包安装,否则执行此命令会提示“error: Failed dependencies”(依赖失败),并列出缺失的依赖包,导致安装终止。

步骤6:编辑httpd默认首页文件

vim /var/www/html/index.html

 

 - 命令作用:编辑httpd服务的默认首页文件,httpd服务启动后,默认会访问/var/www/html目录下的index.html文件作为首页。

 - 编辑内容:在vim编辑器中输入以下测试内容(按i进入插入模式,输入完成后按Esc,再输入:wq保存退出):

<!DOCTYPE html>
<html>
<head>
    <title>RPM Install httpd Test</title>
</head>
<body>
    <h1 style="text-align: center;">Apache (httpd) Service Started Successfully!</h1>
    <p style="text-align: center;">Installed by RPM Package Manually</p>
</body>
</html>

 

步骤7:启动httpd服务

systemctl start httpd

 

 - 命令作用:通过systemctl系统服务管理工具启动httpd服务。

 - 补充操作:

  • 启动后可执行systemctl status httpd查看服务状态,若输出中显示“active (running)”,表示服务启动成功;若显示“failed”,需排查错误原因。
  • 可选执行systemctl enable httpd,设置httpd服务开机自启,避免系统重启后需重新手动启动服务。

步骤8:验证httpd服务是否正常运行

curl 127.0.0.1

 

 - 命令作用:使用curl工具向本地(127.0.0.1为本地回环地址)的httpd服务发送HTTP请求,验证服务是否能正常响应并返回首页内容。

 - 正常输出:命令执行后,会显示步骤6中编辑的HTML内容,说明httpd服务运行正常,可正常处理访问请求。

五、实验结果

  1. 本地镜像挂载成功:通过cd /media/Packages可正常进入目录,ls命令可查看httpd相关RPM包,说明镜像挂载有效。
  2. RPM包安装成功:依次执行3个RPM包安装命令后,无依赖错误提示,均显示“Complete!”;执行rpm -q httpd httpd-tools mailcap可查询到3个包的安装信息(如httpd-2.4.6-45.el7.centos.x86_64),确认安装完成。
  3. httpd服务配置与启动成功:编辑的index.html文件保存正常,systemctl start httpd无错误提示,systemctl status httpd显示服务处于running状态。
  4. 服务访问验证成功:curl 127.0.0.1能完整返回自定义的首页HTML内容,无404 Not Found、500 Internal Server Error等错误,说明httpd服务可正常对外提供Web访问服务。

六、常见问题与解决方法

1. 镜像挂载失败

 - 现象:执行mount /dev/sr0 /media提示“no medium found”(无介质)。

 - 解决方法:① 虚拟机环境需检查是否已在虚拟机设置中挂载CentOS 7 ISO镜像,且勾选“已连接”;② 物理机环境需确认光盘已正确放入光驱;③ 可尝试使用/dev/cdrom(光驱符号链接)替换/dev/sr0,执行mount /dev/cdrom /media重试。

2. RPM安装提示依赖失败

 - 现象:安装httpd主包时提示“error: Failed dependencies: httpd-tools = 2.4.6-45.el7.centos is needed by httpd-2.4.6-45.el7.centos.x86_64”。

 - 解决方法:严格按照“先依赖包、后主包”的顺序安装,先安装提示中缺失的依赖包(如httpd-tools),再重新安装httpd主包;若存在多个依赖缺失,需逐一安装完整依赖。

3. httpd服务启动失败

 - 现象:systemctl start httpd提示“Job for httpd.service failed because the control process exited with error code.”。

 - 解决方法:① 执行journalctl -xe | grep httpd查看详细错误日志,最常见原因是80端口被占用;② 执行netstat -tnlp | grep 80查询占用80端口的进程,若有占用,可执行kill -9 进程ID终止占用进程,再重新启动httpd;③ 若日志提示配置文件错误,需检查/etc/httpd/conf/httpd.conf文件的语法正确性。

4. curl访问提示无法连接

 - 现象:curl 127.0.0.1提示“curl: (7) Failed connect to 127.0.0.1:80; Connection refused”。

 - 解决方法:① 检查httpd服务是否启动,执行systemctl start httpd启动服务;② 检查防火墙是否拦截80端口,CentOS 7默认防火墙(firewalld)可能拦截80端口,可执行firewall-cmd --permanent --add-port=80/tcp开放80端口,再执行firewall-cmd --reload重载防火墙配置。

七、实验总结

1. 核心要点回顾

  • RPM手动安装的核心是**依赖顺序**,必须先识别并安装主程序所需的依赖包,再安装主包,否则会导致安装失败;而YUM安装的优势在于可自动解决依赖关系。
  • 本地镜像挂载是无外网场景下获取RPM包的关键步骤,挂载目录(如/media)可自定义,但需确保后续访问路径与挂载目录一致。
  • httpd服务的基础使用流程可总结为“安装→配置首页→启动服务→访问验证”,默认网站根目录和监听端口是核心配置项,需牢记其默认值(根目录/var/www/html,端口80)。

2. 实验心得与拓展

本次实验通过手动RPM安装httpd服务,深入理解了软件安装的依赖关系处理逻辑,相比YUM自动安装,RPM手动安装更能帮助掌握软件的依赖结构,但操作步骤更繁琐,适用于无YUM源或需精准控制软件版本的场景。

实验拓展方向:

  • 配置httpd虚拟主机,实现多个域名对应不同的网站内容。
  • 学习RPM包的卸载(rpm -e 包名)和升级(rpm -Uvh 包名)命令,完善RPM包管理技能。
  • 搭建本地YUM源,将镜像内的RPM包制作成YUM源,实现从手动RPM安装到自动YUM安装的过渡。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐