1. 安装前的准备:镜像下载与虚拟机创建
很多人第一次装 CentOS 7,最容易卡在第一步:找不到靠谱的安装镜像。CentOS 7 从发布到现在已经过了很多年,官方镜像站点经常因为访问量过大导致下载速度极慢,有些同学挂了一晚上都下不完一个 4G 多的 DVD 镜像。我的建议是直接走国内的开源镜像站,速度和稳定性都有保障。
1.1 为什么推荐最小安装版
CentOS 7 安装光盘镜像通常有两个版本:DVD 版(Everything/标准版)和 Minimal 最小化版。DVD 版自带GNOME桌面环境和大量软件包,安装完之后直接就能看到图形界面,适合桌面用户试用。但如果你装这台机器的目的是跑服务、部署应用、练运维,那最小安装版才是正常人的选择。
最小安装版体积小、组件干净、启动快、占内存少,装完默认只有一个纯命令行环境,没有任何多余的图形组件和服务。这样做有两个实际好处:
- 入侵面和故障面都小,生产环境本来就不需要桌面那一堆组件。
- 后面需要用哪些服务,用 yum 按需安装即可,依赖关系清楚,出问题也好排查。
很多人觉得命令行吓人,但你仔细想想,日常与服务器打交道大部分时间都是敲命令。最小安装正好逼迫你尽快适应终端环境。图形桌面这种东西,一台服务器上用到的概率极低,真正用得上的是你本机的 VMware 图形窗口。
1.2 镜像下载地址与版本选择
如果你实在想用官方源,打开 CentOS 官方网站,进 Downloads 页面找。但实测下来,国内的阿里云镜像站、清华 TUNA 镜像站、中科大镜像站比官方源快的不止一个档次。
以阿里云镜像站为例,浏览器打开mirrors.aliyun.com/centos,在目录里找7/isos/x86_64/,下面列着多个 ISO 文件。常见的几个:
| 文件名 | 体积 | 说明 |
|---|---|---|
| CentOS-7-x86_64-Minimal-2009.iso | 约 900M | 最小安装版,本文使用 |
| CentOS-7-x86_64-DVD-2009.iso | 约 4.4G | 含桌面与常用软件包 |
| CentOS-7-x86_64-Everything-2009.iso | 约 9.8G | 全量软件包合集 |
2009 是 CentOS 7 的最后一个维护版本号,也就是 2020 年 11 月发布的版本,稳定性和兼容性都不错。下载时注意校验一下 SHA256 值,官方或镜像站都会提供校验文件,防止镜像文件损坏导致安装中途报错。
1.3 VMware 虚拟机安装前的关键配置
先把 VMware Workstation 准备好,版本 15、16 都可以,装好后新建虚拟机。创建过程中的几个关键选项,按下面这套来:
- 选择“典型”安装即可,不用纠结“自定义”里的高级设置。
- 客户机操作系统选择Linux,版本选择CentOS 7 64 位。如果不小心选成了 CentOS 8 或 Ubuntu,后面开机可能直接黑屏。
- 内存建议 2G 起步,如果是 4G 内存的宿主机,分 2G 给虚拟机也够用。
- 磁盘大小给 20G 以上,存储方式选“将虚拟磁盘拆分成多个文件”,方便以后迁移或压缩。
- NAT 网络模式是默认的,新手就用它,宿主机能上网虚拟机就能上网。
有的人在新建虚拟机时把 ISO 镜像挂好了,开机却提示“Operating system not found”,这种八成是虚拟机的启动顺序问题,或者是 ISO 文件没有加载好。进虚拟机设置里确认 CD/DVD 已勾选“启动时连接”,并且指向正确的 ISO 文件路径。
1.4 物理机安装场景的准备
如果你是想在一台独立的老电脑或服务器上装 CentOS 7,步骤有所不同。需要先下载 ISO 镜像,然后用 Rufus 或 UltraISO 写入U盘,做成启动盘。物理机安装时 BIOS 设置里要开启 U 盘启动项,有些主板还需要关闭Secure Boot和快速启动,否则引导进不去。
物理机上安装的过程与虚拟机里基本一致,唯一区别是磁盘分区要格外小心,因为机器上可能还有其他重要数据。建议物理机安装前先备份数据,分区时不要乱抹盘,后面我会专门讲安全的分区方案。
2. 安装过程全流程详解
准备工作做完,接下来就是把 ISO 挂进光驱,开启虚拟机。整个安装过程大概 10 到 20 分钟,看机器的磁盘性能和内存大小。
2.1 引导界面与 Test this media 的取舍
启动虚拟机后,屏幕出现一个黑底白字的引导菜单,有两条主要选项:
- Install CentOS 7:直接开始安装。
- Test this media before installation:安装前先检查镜像完整性。
很多教程会建议你先选“Test this media”,说这样能保证镜像没问题。但说实话,这一步太耗时间了,几百 MB 到几个 GB 的镜像全部校验一遍,慢的可能要十几分钟。如果你是从正规镜像站下载并且校验过 SHA256,就果断选Install CentOS 7。
选好后系统开始加载安装程序界面。这里有一个典型问题:部分 Intel 11 代以上的核显机器,启动安装程序时会出现黑屏花屏。现象就是光标闪一下,然后屏幕就黑了,等多久都进不了图形安装界面。解决思路我在后面“常见问题”章节详细讲。
2.2 语言选择与安装信息摘要
安装程序启动后会让你选择安装过程的语言。这里建议直接用中文,后面在配置键盘布局、分区时看起来更直观。系统安装完成后的语言环境是独立的,不影响你设置服务器默认语言。
点“继续”后进入安装信息摘要页面,这个页面算是一个控制台,会让你配置几个必选项目:
- 软件选择
- 安装位置
- 网络与主机名
- 时间和日期
这几个选项有的没有感叹号也算配置完成,但有意义的配置就三个:软件选择、安装位置、网络。时间日期建议在系统装完后统一设置时区,这里随便选一下也行。
2.3 软件选择:认准 Minimal Install
在摘要页面点击“软件选择”,右侧会列出各种环境组:带图形桌面的 GNOME Desktop、带开发工具的 Development and Creative Workstation、作为基础设施服务的 Infrastructure Server 等等。
我们的目标是最小安装版,所以直接勾选左下角的Minimal Install。这一个选项会最小化安装基础系统,不带 GUI 桌面、不带图形管理工具,只保留最基本的命令行系统和 yum 包管理工具。
选好之后,左下角会提示安装源是本机 ISO 镜像下的软件仓库,软件数量十几个包,安装时间非常短。也别指望在这个界面能取消勾选某个软件组,最小化安装本来就没有附加组件可选,直接点“完成”回去。
2.4 安装位置:自动分区还是手动分区
进入“安装位置”界面,默认的分区方案是“自动配置分区”,系统会把整个磁盘自动分好:/boot、/、swap等。对于虚拟机中的学习环境,自动分区完全够用,点“完成”就行。
但我强烈建议你们在手动分区上花两分钟体验一次,否则以后工作中遇到新装系统,BIOS 方式还是 UEFI 方式的分区结构你根本看不懂。点击“安装位置”页里的“自定义”单选按钮,然后下拉磁盘,确认选择的是目标磁盘,点“点此自动创建它们”。
系统自动生成的分区大概是这样的:
| 挂载点 | 建议大小 | 文件系统 |
|---|---|---|
| /boot | 1024 MiB | ext4 / xfs |
| / | 剩余空间 | xfs |
| swap | 2048 MiB(看内存) | swap |
手动分区唯一要留意的是:不要删掉 /boot,如果删掉引导分区,安装完成后系统无法从硬盘启动。如果你是新手,直接自动分区,省心。
2.5 网络与主机名:先把网卡打开
这个环节很多人会漏掉。安装程序默认不启用网卡,进去之后你会看到“以太网”右侧写着“已关闭”。如果不打开,安装完成的系统进入后网卡是 down 状态,DHCP 也不会自动获取 IP,后面配置网络要多绕弯路。
点击“网络与主机名”,在窗口底部把以太网开关拨到“开”,几秒后地址栏会自动显示从 DHCP 获取到的 IP,比如192.168.x.x。记得顺手把主机名改一下,比如centos7-test,方便区分机器。
点“应用”后确认主机名就生效了,然后点“完成”回到摘要页。
2.6 设置 root 密码并开始安装
摘要页里“root 密码”这一项还是黄色感叹号,点击进去设置密码。root 密码建议设长一点,包含大小写字母、数字和符号的组合。注意:安装过程中没有强度校验,你设个 123456 也可以点“完成”,但这是给自己挖坑,后面 SSH 再被人爆破。
密码设置完成后,点“开始安装”,系统进入真正的安装过程。这时会跳出“配置用户”选项,你可以创建一个普通用户,也可以暂时跳过,只保留 root。从安全角度讲,创建一个普通用户日常登录,执行特权操作时再su -切换 root,是最稳妥的方式。
进度条走完之后,点“重启”,然后记得去虚拟机设置里把 CD/DVD 的“启动时连接”取消勾选,或者把启动顺序改回硬盘优先,避免开机时又跳到安装盘。
3. 系统装完后的基础配置与初始化
重启之后你会看到一个纯命令行登录界面,输入 root 账户和密码,就能进入系统。到这里,CentOS 7 最小安装版的“安装”阶段已经结束,但“能用”和“好用”之间还差几步关键配置。
3.1 确认系统信息与网络连接状态
登录成功后先用几个命令确认一下系统基本状态:
cat /etc/redhat-release这一条会显示当前 CentOS 版本,比如CentOS Linux release 7.9.2009 (Core)。
ip addr查看网卡信息,看是否有inet地址。如果安装时已经打开了网络,这里应该能看到动态获取的 IP。如果没有 IP,说明网络服务还没起来,需要手动配置。
ping -c 4 www.baidu.com网络连通性测试,能通就说明外网访问没问题。ping 不通先别慌,多半是 DNS 或网卡配置的问题,下面会说。
3.2 配置静态 IP 的两种方法
DHCP 自动获取 IP 适合虚拟机学习场景,但如果你的机器要当作服务器长期使用,IP 经常变化非常麻烦。比如做了端口转发,结果第二天 IP 变了,外网访问全断。所以我建议在能分配固定 IP 的环境下,给 CentOS 7 配置一个静态 IP。
CentOS 7 的网卡配置文件在/etc/sysconfig/network-scripts/下,文件名一般是ifcfg-ens33或ifcfg-enp0s3,具体名称取决于你的网卡接口。先用ip addr确认接口名,然后编辑对应的配置文件:
vi /etc/sysconfig/network-scripts/ifcfg-ens33把内容改成类似下面这样:
TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.31.100 NETMASK=255.255.255.0 GATEWAY=192.168.31.1 DNS1=223.5.5.5 DNS2=114.114.114.114IPADDR 设置为你想要的静态 IP,GATEWAY 要匹配你宿主机的网关地址,常见的是192.168.31.1或192.168.1.1。在 VMware NAT 模式下,默认网关是192.168.x.2,具体可以看“编辑”里的“虚拟网络编辑器”。
改完执行:
systemctl restart network然后再次ip addr看是否生效。如果你在服务器上远程操作,改静态 IP 时务必小心,网关写错网络就断了,到时候只能靠控制台接入修复。
3.3 更换 yum 源为国内镜像源
最小安装版默认的 yum 源指向 CentOS 官方,在国内访问速度很慢,时不时还会连接超时。装软件装到一半卡住,yum 源问题占了很大比例。解决办法是换成阿里的 CentOS 源。
备份原有的 repo 文件:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup下载阿里的源文件:
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo清理并重建 yum 缓存:
yum clean all yum makecache这里有一个小坑:http://mirrors.aliyun.com/repo/Centos-7.repo的写法是老地址,新版本里阿里云统一用https://mirrors.aliyun.com/centos-vault/路径,CentOS 7 因为已经 EOL,官方源会迁移到 vault 仓库。如果yum makecache报错说找不到baseurl,需要手动编辑 repo 文件里的地址,把mirrorlist注释掉,baseurl改成https://mirrors.aliyun.com/centos-vault/7.9.2009/os/x86_64/。
3.4 安装常用基础工具
最小安装版里有用的命令缺了不少,比如ifconfig、wget、vim、unzip都没有。这些属于高频刚需工具,装好之后顺手一起装上:
yum install -y vim wget net-tools unzip lrzsz bash-completion解释一下每个工具的用途:
vim:文本编辑器,比自带的 vi 好用很多。wget:命令行下载工具,下载文件必备。net-tools:提供ifconfig、netstat等传统网络命令。unzip:解压 zip 压缩包。lrzsz:提供rz/sz命令,远程终端直接上传下载文件。bash-completion:让 bash 支持命令补全,敲命令效率翻倍。
装完 bash-completion 后要重开一个终端或者执行source /etc/bashrc才能生效。
3.5 防火墙与 SELinux 的处理
CentOS 7 默认开启了 firewalld 防火墙和 SELinux。安全策略本身是好东西,但对于刚装的测试服务器,这两样东西经常会给你添麻烦。比如你启动了一个 Nginx 监听 80 端口,从宿主机访问却不通,防火墙拦截是首要嫌疑。
学习环境我觉得可以直接关闭防火墙:
systemctl stop firewalld systemctl disable firewalld查看防火墙状态:
systemctl status firewalldSELinux 同理,如果是跑业务的生产环境,建议保持 enforcing 模式,但相关规则配置要额外学习。学习环境可以先关闭:
setenforce 0这条命令临时关闭 SELinux,重启后失效。要永久关闭,修改配置文件:
vi /etc/selinux/config把SELINUX=enforcing改成SELINUX=disabled,保存后重启生效。
注意:生产环境不建议直接关闭 SELinux 和 firewalld,否则安全评估会很麻烦。这里教你的做法只适用于本地测试和开发环境。
3.6 设置时区与时间同步
新装系统默认时区可能是 UTC,date命令显示的时间跟北京时间差 8 个小时。直接改:
timedatectl set-timezone Asia/Shanghai确认:
date最小安装版里默认没有安装 chrony,但系统自带 ntpdate 也不一定启动。为了时间自动校准,建议安装 chrony:
yum install -y chrony systemctl start chronyd systemctl enable chronyd服务器时间不准会导致很多问题:日志时间对不上、HTTPS 证书验证失败、crontab 定时任务错乱。时间同步这个步骤虽然不起眼,但一定要做。
3.7 修改系统默认语言与安装中文字体
如果你安装时选了中文,系统界面默认就是中文。但如果你之前选了英文,现在想改成中文,执行:
localectl set-locale LANG=zh_CN.UTF-8重开终端生效。还有一种情况,系统是中文环境,但网页或文档里的中文显示成方框乱码,那是缺少中文字体。安装字体包:
yum install -y wqy-zenhei-fonts这个包是文泉驿正黑字体,装上后中文字符基本能正常显示。
3.8 安装 Docker 服务
centos7 装 Docker 有两种渠道。默认 yum 源里直接有docker包,但它版本比较老。如果你只是日常用,可以直接:
yum install -y docker systemctl start docker systemctl enable docker如果你想装新版 Docker CE,需要先配置官方或国内镜像的 yum 源:
yum install -y yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum makecache fast yum install -y docker-ce docker-ce-cli containerd.io国内网络下载 Docker CE 时可能很慢,可以先把download.docker.com换成阿里云的地址:https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo。
装完验证:
docker --version docker run hello-world能正常跑出 Hello from Docker 提示,说明 Docker 工作正常。这里有一个高频问题:docker run hello-world需要从 Docker Hub 拉镜像,国内网络经常拉不动,解决方案是配置 Docker 镜像加速器,在/etc/docker/daemon.json里添加加速地址。
4. 常见问题与坑位排查
从装了这么多年 CentOS 的经验来看,安装和初始化阶段的高频报错占了总问题的七成以上。这里整理几个我实际踩过的坑和排查思路,希望你们能少走弯路。
4.1 安装引导界面黑屏,进不了图形安装程序
新硬件装 CentOS 7 时经常遇到,原因是 CentOS 7 默认的内核驱动对较新的显卡支持不好。VMware 里偶尔也出现。
启动菜单选中Install CentOS 7,按Tab键进入参数编辑,在命令行的末尾加上:
nomodeset按回车继续安装。如果是物理机黑屏,可能还需要追加vga=792或者xdriver=vesa参数。安装完成后的系统如果启动也黑屏,在 GRUB 引导界面按e,在linux16开头的那一行末尾追加nomodeset,然后按Ctrl+X启动,进系统后把这个参数永久写入 GRUB 配置,再重启生效。
4.2 虚拟机无法上网,网卡拿不到 IP
如果 ping 不通外网,先从三个地方排查:
- 网卡配置文件里的
ONBOOT=yes是否设置 - VMware 虚拟网络编辑器里 NAT 网卡是否启用
- 宿主机的 VMnet8 网卡是否正常
命令行直接操作:
systemctl status network如果网络服务没运行:
systemctl start network如果网卡是 down 状态:
ip link set ens33 up还有一个临时技巧,直接让网卡走 DHCP 拿地址测试:
dhclient ens33能拿到 IP 就有网络,拿不到说明虚拟机网络模式或宿主机虚拟网卡有问题。
4.3 yum 源失效或 makecache 报错
CentOS 7 在 2024 年已经彻底 EOL,官方把全部仓库移到了 vault.centos.org。如果你看到类似Could not resolve host: mirrorlist.centos.org这种报错,就是因为老的 mirrorlist 地址已经无法访问。解决方法是把/etc/yum.repos.d/下所有 repo 文件里的mirrorlist=行注释掉,baseurl=改到能用的镜像地址。推荐的备用地址有两个:
https://mirrors.aliyun.com/centos-vault/7.9.2009/os/x86_64/ https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/os/x86_64/在 repo 文件里,把$releasever变量手动改死成7.9.2009,因为源已经不再维护,用变量解析反而容易出问题。
4.4 忘记 root 密码的解决办法
这个场景太经典了。虚拟机里随便折腾,密码忘了就得想办法找回来。
重启系统,在 GRUB 引导界面上按e进入编辑模式。找到以linux16开头的那一行,在行尾加上:
rd.break按Ctrl+X引导系统。系统进入一个 emergency 模式,根文件系统是只读的,依次执行:
mount -o remount,rw /sysroot chroot /sysroot passwd root输入两遍新密码,然后执行touch /.autorelabel,连续输入两次exit,系统会重启。这个操作在 CentOS 7 里测试过,稳定有效。
4.5 SSH 连接被拒绝或者连接很慢
最小安装版默认安装了 openssh-server,系统启动后 SSH 服务会自动运行。连接被拒绝先检查服务状态:
systemctl status sshd如果服务没起来:
systemctl start sshd systemctl enable sshd连接很慢的问题多半是 DNS 反向解析,修改/etc/ssh/sshd_config,在文件末尾加上:
UseDNS no GSSAPIAuthentication no重启 sshd 服务,连接速度会有明显改善。
5. 安装后的使用习惯与一点个人建议
系统配置好之后,进入正常使用阶段。养成几个小习惯能省很多麻烦:定期用yum update更新安全补丁,重要配置文件修改前先做备份,做完一个阶段的工作后给 VMware 虚拟机拍个快照。快照功能尤其好用,你装某个软件把系统搞坏了,一个快照还原回几秒钟前的状态,比什么排查都高效。
我个人装 CentOS 7 这些年最深的感受是:安装过程本身没什么技术含量,真正拉开差距的是装完之后的初始化配置和排障能力。同样的硬件,有人装完系统稳定跑几年,有人三天两头出问题,差别往往就在网络配置、yum 源、SELinux 这些细节处理上。希望这篇 CentOS7 安装教程和基本配置的笔记对你有用,按照上面的步骤走一遍,你手里这台全新的最小安装版 CentOS 7 应该已经是一个能正常联网、能装软件、能跑服务的基础环境了。