1. 项目缘起:为什么今天还要折腾CentOS 7?
最近在给一个老客户的遗留系统做迁移和灾备演练,又翻出了CentOS 7的镜像。说实话,现在已经是202X年了,CentOS 8早已停止维护,CentOS Stream也走上了滚动更新的道路,Red Hat更是把重心放在了RHEL上。很多新入行的朋友可能会问:为什么还要去下载和安装一个“过时”的CentOS 7?这不是在开历史的倒车吗?
这里面的原因其实很现实。首先,企业环境的惯性是巨大的。大量的生产环境,尤其是金融、电信、制造业的核心业务系统,仍然运行在CentOS 7上。这些系统经过了多年的稳定运行和深度定制,牵一发而动全身,迁移成本极高,风险巨大。其次,软件生态的依赖。很多商业软件、行业专用软件,其认证和兼容性列表里,CentOS 7仍然是“推荐”或“唯一支持”的版本。最后,对于学习和测试而言,CentOS 7拥有最庞大、最成熟的社区资料和解决方案库,你遇到的几乎所有“坑”,都能在网上找到前辈们填平的痕迹。
所以,掌握CentOS 7的“标准”安装流程,依然是一项有价值的技能。它不仅是安装一个系统,更是理解一个时代的企业级Linux标准操作。今天,我就结合最近这次实战,把从镜像获取到系统安装完毕的完整链路,以及那些官方文档不会写的细节和“坑”,给你彻底捋清楚。
2. 镜像获取:官方源、国内镜像与版本选择的门道
安装的第一步是拿到系统镜像(ISO文件)。这看似简单,实则暗藏玄机,选错了源或版本,后续可能麻烦不断。
2.1 理解CentOS 7的版本构成
CentOS 7的镜像不是只有一个。你需要根据用途选择:
- Everything ISO (~7GB): 包含所有软件包。适合需要完整仓库、或者安装环境完全离线的场景。对于绝大多数情况,它过于庞大。
- DVD ISO (~4GB): 最常用的安装镜像,包含了图形化安装界面和大部分基础软件包,足以完成绝大多数服务器的初始安装。
- Minimal ISO (~900MB): 最小化安装镜像,只包含能让系统启动并运行的最基本组件。安装后需要立即配置网络并
yum update。这是生产服务器推荐的选择,因为它最纯净,潜在的攻击面最小。 - NetInstall ISO (~500MB): 网络安装镜像。体积最小,安装过程中绝大部分软件包都需要从网络仓库下载。这要求安装环境必须有稳定、高速的网络连接。
对于新手和大多数场景,我推荐使用Minimal ISO。它逼你在安装后就必须熟悉命令行和网络配置,这是运维的基本功。
2.2 寻找可靠且高速的下载源
CentOS官方站点(如 vault.centos.org)的下载速度对国内用户通常不友好。这时,国内各大高校和机构的开源镜像站就是救星。它们同步了官方源,速度飞快。
核心技巧:如何验证镜像的完整性?下载完成后,务必做下面两件事,这是无数血泪教训换来的:
- 校验MD5/SHA256值:镜像站通常会提供对应的校验文件(如
sha256sum.txt)。下载后,在本地计算镜像的哈希值进行比对。# 例如,计算SHA256 sha256sum CentOS-7-x86_64-Minimal-2009.iso # 将输出结果与镜像站提供的 sha256sum.txt 文件中的对应行进行比较 - 检查GPG签名(进阶):这可以验证镜像是否被篡改,以及是否来自可信的CentOS项目。你需要导入CentOS项目的GPG公钥,然后用它验证镜像签名。
# 导入公钥(通常可从镜像站或官网获取) rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 # 验证ISO(假设验证文件是CHECKSUM) gpg --verify CHECKSUM CentOS-7-x86_64-Minimal-2009.iso
注意:切勿从不明来源下载所谓“集成版”、“优化版”的CentOS镜像。它们可能预装了后门或恶意软件。坚持从官方或知名镜像站获取纯净镜像。
2.3 制作启动盘:别小看这个“体力活”
有了ISO文件,你需要将其制作成USB启动盘。在Windows下,Rufus是不二之选;在Linux或macOS下,dd命令简单粗暴且有效。
dd命令制作启动盘的核心细节:
# 1. 首先,插入U盘,使用 `lsblk` 或 `diskutil list` (macOS) 找到U盘设备名,例如 /dev/sdb # 2. 非常重要:确保你卸载了U盘的所有挂载分区 sudo umount /dev/sdb* # 3. 使用dd命令写入(注意:of参数后的设备是整块盘,如/dev/sdb,而不是分区/dev/sdb1) sudo dd if=./CentOS-7-x86_64-Minimal-2009.iso of=/dev/sdb bs=4M status=progress oflag=syncbs=4M: 设置块大小,影响写入速度。4M是一个经验值。status=progress: 显示写入进度,避免长时间黑屏的焦虑。oflag=sync: 确保数据完全同步到磁盘后才返回,制作更可靠。- 警告:
of=后面的设备名绝对不能写错,否则会覆盖你的硬盘数据!反复确认三遍。
3. 安装过程详解:每个选项背后的考量
将制作好的启动盘插入服务器或虚拟机,开始安装。以下以Minimal ISO的文本安装界面为例,讲解关键步骤。
3.1 语言、时区与键盘布局
- 安装过程语言:即使英文不好,也建议选择English (United States)。因为一旦系统出现故障,错误信息几乎都是英文的,保持环境一致性能避免很多混乱。
- 时区设置:在
DATE & TIME中,点击地图选择Asia/Shanghai,或者手动选择。务必取消勾选“System clock uses UTC”。对于位于中国的服务器,通常不使用UTC硬件时钟,以避免时间换算错误。 - 键盘布局:保持默认的
English (US)即可。
3.2 安装源与软件选择
- 安装源:本地介质安装,会自动检测到你的U盘或ISO文件,无需更改。
- 软件选择:这是Minimal安装的核心。默认就是
Minimal Install(基础环境)。对于服务器,我强烈建议在此基础上,额外勾选:Compatibility LibrariesDevelopment Tools前者包含了很多老旧软件运行所需的兼容库,后者提供了GCC、Make等编译工具链。即使你现在用不到,等哪天需要编译一个软件时,就不用再回头来装这些庞大的包组了。这个操作,能为未来省下大量时间。
3.3 磁盘分区:系统稳定的基石
这是安装中最重要也最容易出错的一步。对于生产服务器,手动分区是必须的。
为什么不用自动分区?自动分区通常只创建一个根分区(/)和一个交换分区(swap),这会导致:
- 日志文件(
/var/log)或用户数据(/home)写满整个磁盘,可能拖垮系统。 - 无法针对不同目录的IO特性进行优化。
- 系统升级或重装时,数据难以分离。
一个经典的生产服务器分区方案(以100GB磁盘为例):
| 挂载点 | 大小 | 文件系统 | 说明 |
|---|---|---|---|
/boot | 1GB | xfs | 引导分区。1GB足够,独立出来避免被日志或数据塞满导致无法启动。 |
/boot/efi | 200MB | vfat | 仅UEFI启动模式需要。存放UEFI启动文件。 |
swap | 4GB | swap | 交换分区。大小通常为物理内存的1-2倍,但现代服务器内存足够大时,4-8GB固定值亦可。 |
/ | 20-30GB | xfs | 根分区。存放系统核心文件。30GB对于最小化安装绰绰有余,为未来留有余地。 |
/var | 20GB | xfs | 可变数据分区。存放日志、缓存、数据库文件等。独立出来,避免日志暴涨影响系统。 |
/home | 剩余空间 | xfs | 用户家目录分区。存放应用数据和用户文件。 |
操作要点:
- 在安装界面选择
I will configure partitioning->Done。 - 点击
+号,按上表依次创建分区。File System选择xfs(CentOS 7默认且推荐)。 - 分区完成后,在
Full disk summary and bootloader页面,务必确认/boot分区所在磁盘是启动盘,引导加载器(通常是/dev/sda)安装位置正确。
3.4 网络与主机名配置
- 主机名:设置一个有意义的主机名,例如
web-prod-01。可以在这里设置,也可以安装后改。 - 网络配置:点击
NETWORK & HOST NAME,你会看到网卡(如ens192)。一定要将右上角的开关从OFF拨到ON。这样安装程序就会在安装过程中自动通过DHCP获取IP并激活网络连接,这对于后续设置软件源至关重要。你可以点击Configure...进行静态IP的详细设置,但初期用DHCP更简单。
3.5 安全策略与Root密码
- 安全策略:对于最小化安装,
SECURITY POLICY通常保持Default即可。这是针对特定合规性要求(如PCI-DSS)的预配置模板,初期无需关注。 - Root密码:设置一个强密码。如果密码强度不够,需要点击两次
Done来确认。记住这个密码。 - 创建用户:强烈建议创建一个普通用户,并勾选
Make this user administrator,这样该用户就可以用sudo执行特权命令。遵循“最小权限原则”,日常操作不使用root账户。
完成所有设置后,点击Begin Installation。安装过程会配置系统并设置root密码和用户。安装完成后,点击Reboot,拔掉U盘。
4. 安装后的首要10分钟:决定系统是否“健康”
系统重启后,以root或你创建的sudo用户登录。不要急着部署应用,先完成下面这几件关键事。
4.1 验证基础状态
- 检查网络:
ip addr或ifconfig(需安装net-tools)查看IP是否获取成功。ping -c 4 114.114.114.114测试网络连通性。 - 检查系统信息:
cat /etc/redhat-release查看具体版本号。uname -r查看内核版本。 - 检查磁盘分区:
df -hT查看分区挂载和使用情况,确认分区方案是否按预期生效。lsblk查看更详细的块设备信息。
4.2 更新系统与配置Yum源
这是保证系统安全稳定的第一步。但默认的CentOS官方源速度慢,需要替换为国内镜像源。
步骤一:备份原有repo文件
cd /etc/yum.repos.d/ sudo mkdir repo.backup sudo mv *.repo repo.backup/步骤二:添加阿里云镜像源
# 下载阿里云提供的CentOS 7 repo文件 sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 或者使用wget sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo步骤三:清理并更新
# 清理yum缓存 sudo yum clean all # 生成新缓存 sudo yum makecache # 更新系统(这可能会更新内核,更新后需要重启) sudo yum update -y执行yum update后,如果更新了内核(kernel包),命令行会提示你需要重启。务必执行sudo reboot重启以启用新内核。
4.3 安装必备的“开箱即用”工具包
最小化安装非常精简,我们需要补充一些日常管理和排障必备的工具。
sudo yum install -y epel-release # 安装EPEL扩展仓库,提供更多软件 sudo yum install -y \ vim-enhanced \ # 更好的vim wget \ # 网络下载工具 curl \ # 网络调试工具 telnet \ # 网络端口测试(注意:不安全,仅用于测试) net-tools \ # 包含ifconfig, netstat等(已逐渐被iproute2替代,但习惯难改) bash-completion \ # 命令自动补全 lsof \ # 列出打开的文件,用于排障 htop \ # 增强版top,监控进程 tree \ # 树状显示目录 ncdu \ # 磁盘使用分析器 chrony \ # 时间同步服务(比旧的ntp更优) yum-utils # 提供yum-config-manager等工具4.4 配置基础安全与调优
- 关闭SELinux(对于初学者或特定兼容性需求): SELinux是强大的安全模块,但过于严格常导致各种权限问题。在彻底了解它之前,可以先设为宽容模式。
# 临时生效 sudo setenforce 0 # 永久生效,编辑 /etc/selinux/config,将 SELINUX=enforcing 改为 SELINUX=permissive sudo vim /etc/selinux/config # 重启后生效 - 配置防火墙:CentOS 7使用
firewalld。了解基本操作:sudo systemctl start firewalld # 启动 sudo systemctl enable firewalld # 开机自启 sudo firewall-cmd --zone=public --add-port=80/tcp --permanent # 开放80端口 sudo firewall-cmd --reload # 重载配置 - 配置时间同步:
sudo systemctl start chronyd sudo systemctl enable chronyd sudo chronyc sources -v # 查看时间源状态
5. 从虚拟机到物理机:不同部署环境的特别注意事项
5.1 在VMware/KVM虚拟化平台安装
- 驱动问题:安装Minimal系统后,可能需要安装
open-vm-tools(VMware)或virtio驱动(KVM)以获得更好的性能和支持(如宿主机-客户机时间同步、共享文件夹等)。# VMware sudo yum install -y open-vm-tools # KVM (如果磁盘/网卡使用的是virtio设备) # 通常Minimal安装已包含,如需更新:sudo yum install -y virtio-drivers - 控制台分辨率:文本安装界面分辨率可能很低。安装
grub2参数或安装open-vm-tools-desktop(仅桌面环境)可以改善,但对于服务器,通常通过SSH连接管理,无需关注。
5.2 在物理服务器上安装
- 硬件驱动:对于较新的服务器硬件(如RAID卡、万兆网卡),CentOS 7内置驱动可能不支持。需要在安装时加载额外的驱动程序(Driver Disk)。这通常需要从硬件厂商官网下载对应CentOS 7的驱动ISO,在安装界面选择
Installation Source时添加。 - 磁盘模式:服务器磁盘可能处于RAID模式。在安装分区时,你看到的磁盘设备(如
/dev/sda)可能是RAID卡虚拟出来的逻辑盘。分区操作前无需在BIOS里更改,但要知道这一点。 - 带外管理:确保你知道服务器的带外管理口(如iDRAC, iLO, iBMC)的IP和密码。系统安装过程中如果卡住或黑屏,可以通过带外管理的虚拟控制台查看实时画面,这是物理服务器运维的救命稻草。
5.3 在云平台(AWS, Azure, 阿里云)上使用
云平台通常提供预制的CentOS 7镜像。你几乎不需要自己安装。但需要注意:
- 镜像版本:云平台提供的可能是深度定制过的镜像,内核、驱动、软件源都可能被修改过。
- 软件源:首次登录后,检查
/etc/yum.repos.d/下的文件,云厂商通常会提供自己内网的镜像源,速度更快。不要轻易替换成公网源,否则可能导致依赖冲突或速度变慢。 - 安全组:云平台的安全组相当于防火墙,需要在控制台额外配置入站规则。
6. 常见问题排坑实录
即使按照标准流程,也可能会遇到一些“坑”。这里记录几个我亲自踩过并且高频出现的问题。
6.1 安装过程中无法识别硬盘
现象:在磁盘分区界面,看不到任何磁盘设备。可能原因与解决:
- 磁盘控制器模式:物理服务器或虚拟机的磁盘控制器模式为
SATA或NVMe,而安装镜像缺少对应驱动。尝试在虚拟机设置中将磁盘控制器改为IDE(兼容性最好)或VirtIO(需加载驱动)。 - RAID驱动缺失:物理服务器的RAID卡需要额外驱动。准备驱动U盘,在安装引导界面按
Tab键编辑启动参数,添加dd命令提示加载驱动。这是物理服务器安装中最常见的坎。 - UEFI/Legacy启动模式与磁盘分区表不匹配:
UEFI启动模式需要GPT分区表和/boot/efi分区;Legacy BIOS启动模式需要MBR分区表。在服务器BIOS中检查启动模式设置,或尝试另一种模式。
6.2 安装后无法启动(Grub Rescue)
现象:重启后出现grub>或grub rescue>提示符。原因:引导加载器GRUB安装位置错误或配置文件损坏。应急解决:
# 在grub rescue>提示符下 ls # 列出所有分区,找到Linux所在分区,例如 (hd0,msdos1) set prefix=(hd0,msdos1)/boot/grub set root=(hd0,msdos1) insmod normal normal如果能临时进入系统,则需要重新安装GRUB:
# 假设系统根分区在 /dev/sda1 sudo grub2-install /dev/sda sudo grub2-mkconfig -o /boot/grub2/grub.cfg6.3 安装后网络不通
现象:ip addr显示网卡没有IP地址(仅有127.0.0.1)。排查:
- 检查网卡命名与配置文件:CentOS 7使用可预测的网络接口名,如
ens192。检查/etc/sysconfig/network-scripts/目录下是否有对应网卡名的配置文件(如ifcfg-ens192)。如果没有,可以复制ifcfg-lo模板创建。 - 配置文件关键参数:
TYPE=Ethernet BOOTPROTO=dhcp # 或 static NAME=ens192 DEVICE=ens192 ONBOOT=yes # 这一项必须是yes! - 重启网络服务:
sudo systemctl restart network。如果服务不存在(Minimal安装可能没装),可以尝试sudo ifup ens192。
6.4 Yum更新或安装软件失败
现象:执行yum update报错,提示无法下载元数据或软件包。解决:
- 网络问题:
ping mirrors.aliyun.com测试连通性。 - DNS问题:
cat /etc/resolv.conf查看DNS配置,可以临时添加nameserver 114.114.114.114。 - 仓库缓存问题:执行
sudo yum clean all && sudo yum makecache。 - 仓库配置错误:检查
/etc/yum.repos.d/下的.repo文件,确保baseurl或mirrorlist指向的地址正确且可访问。
走到这里,一个干净、稳定、可用的CentOS 7系统就已经在你的机器上运行起来了。这不仅仅是完成了一次安装,更是为你后续所有的服务部署、应用开发和系统运维,打下了一个坚实且可控的基础。记住,在Linux世界里,基础环境的纯净与稳定,是一切高级操作的起点。