三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

CentOS 7服务器安装实战:从磁盘分区到系统部署完整指南

CentOS 7服务器安装实战:从磁盘分区到系统部署完整指南

1. 从零开始:为什么选择CentOS 7作为你的第一个Linux服务器

如果你正准备搭建自己的第一台Linux服务器,或者想在一台旧电脑上体验一个稳定、强大的操作系统,那么CentOS 7绝对是一个绕不开的经典选择。尽管它的生命周期已经结束,但围绕它的庞大生态、海量教程和在企业中积累的深厚实践,使其依然是学习Linux服务器管理、理解企业级应用部署的绝佳“练功房”。很多新手可能会被最新的发行版吸引,但往往在配置环境、解决依赖时碰壁,而CentOS 7拥有近乎“教科书”般的标准性和一致性,你在这里踩过的每一个坑、学会的每一个命令,其经验都能无缝迁移到它的后继者(如Rocky Linux、AlmaLinux)乃至其他企业级Linux发行版上。

今天,我们就来手把手完成一次CentOS 7的“标准安装”。这不仅仅是点几次“下一步”那么简单,核心在于磁盘分区方案的设计。一个合理的分区布局,就像为一栋大楼打好地基,它决定了未来系统在数据安全、性能优化和运维便利性上的上限。我将结合多年运维经验,为你拆解每一步操作背后的逻辑,并分享那些官方文档不会写的“实战避坑指南”。无论你是想在物理机上安装,还是在VMware、VirtualBox等虚拟机里进行实验,这篇指南都将为你提供清晰的路径。

2. 安装前的核心准备:介质、引导与硬件兼容性

在按下安装按钮之前,充分的准备工作能避免你浪费数小时在无谓的错误上。很多人下载了镜像就直接开干,结果卡在引导失败、硬件不识别等环节。

2.1 获取官方安装镜像与验证

首先,你需要获取CentOS 7的安装镜像。虽然官方站点已不再提供,但你仍然可以从可靠的镜像站获取。一个常用的国内镜像源是阿里云开源镜像站。你需要下载的是CentOS-7-x86_64-DVD-2009.iso或类似版本号的DVD镜像。Minimal版本过于精简,不适合新手学习;Everything版本又太大;DVD版本包含了安装所需的大部分软件包,是最佳选择。

注意:务必核对下载文件的SHA256校验和。这是确保镜像文件在下载过程中未损坏或被篡改的关键一步。你可以从镜像站同时下载.iso文件和对应的.sha256sum文本文件,在Linux或Mac下使用sha256sum CentOS-7-x86_64-DVD-2009.iso命令校验,或在Windows下使用CertUtil -hashfile CentOS-7-x86_64-DVD-2009.iso SHA256命令进行比对。

2.2 制作可启动安装介质

有了ISO文件后,你需要将其“烧录”到一个U盘或刻录成光盘。

  • U盘制作(推荐):在Windows下,切勿简单地将ISO文件复制到U盘。你需要使用如 Rufus 这样的工具。插入一个容量大于8GB的U盘,打开Rufus:

    1. 设备:选择你的U盘。
    2. 引导类型选择:点击“选择”,找到你下载的CentOS 7 ISO文件。
    3. 分区类型:对于较新的电脑(支持UEFI),选择“GPT”;对于老电脑(传统BIOS),选择“MBR”。如果不确定,可以在Rufus界面下点击“显示高级设备属性”,查看“固件”信息,或查阅电脑主板手册。
    4. 点击“开始”,Rufus会处理其余工作,包括写入ISO和设置正确的引导。
  • 虚拟机安装:如果你使用VMware Workstation或VirtualBox,这一步更简单。你只需要在创建新虚拟机时,在“安装客户机操作系统”步骤中选择“安装程序光盘映像文件(iso)”,然后指向你下载的ISO文件即可。虚拟化安装是学习和测试最安全、便捷的方式。

2.3 理解引导模式:BIOS vs. UEFI

这是安装初期最容易导致失败的点。现代电脑大多采用UEFI引导,而旧电脑使用传统的BIOS(或称Legacy)。它们对应的磁盘分区表格式也不同:UEFI对应GPT分区表,BIOS对应MBR分区表。

  • 如何判断:在开机时进入BIOS/UEFI设置界面(通常是按F2、Del、F12等键),在“Boot”或“启动”选项中查看。如果看到“UEFI Boot”或类似选项,且你的硬盘是2TB以上,那很可能就是UEFI模式。
  • 安装影响:在安装CentOS 7时,安装程序会自动检测当前的引导模式。关键点在于:如果你用UEFI模式引导了安装介质,那么安装程序会在磁盘上创建一个额外的/boot/efi分区(通常约200-500MB,FAT32格式),用于存放UEFI引导文件。而在传统BIOS模式下,引导信息会直接写入MBR(主引导记录),不需要单独的EFI分区。

在后续分区时,我们会根据引导模式来调整方案。如果你在虚拟机中安装,可以在虚拟机设置中明确指定固件类型为“BIOS”或“UEFI”,以避免混淆。

3. 深入磁盘分区:为企业级应用设计布局

进入安装程序后,在“安装位置”步骤,选择“我要配置分区”,然后点击“完成”,就会进入手动分区界面。这是整个安装过程中最具技术含量的一步。一个糟糕的分区方案,可能在几个月后让你面临/根目录空间爆满而/home目录却空空如也的窘境。

3.1 分区方案的核心逻辑与推荐配置

我们不采用安装程序默认的自动分区,而是手动创建标准分区。以下是一个兼顾学习、生产与安全的通用方案,假设我们有一块100GB的虚拟磁盘或物理磁盘:

挂载点建议大小文件系统类型核心作用与理由
/boot1 GBext4/xfs系统引导。存放Linux内核、初始RAM磁盘镜像和引导加载程序(GRUB)配置文件。即使未来/根目录损坏,只要/boot完好,仍有希望修复。1GB空间为未来多个内核版本留有余地。
/boot/efi200 MBvfatUEFI系统分区(仅UEFI模式需要)。必须是FAT32(vfat)格式,用于存放UEFI固件启动管理器所需的文件。BIOS模式无需此分区。
/30-40 GBxfs (CentOS 7默认)根目录。存放系统核心文件、应用程序和配置文件。这是系统运行的基础。分配30-40GB可以确保安装大量开发工具(如GCC、Python、Docker)后仍有充足空间。
/home剩余空间的50%-70%xfs用户家目录。存放所有普通用户的个人文件、数据和配置。将此分区独立并分配最大空间,是为了实现数据与系统分离。即使系统崩溃需要重装,只要不格式化/home分区,用户数据就能得以保留。
/var10-20 GBxfs可变数据目录。存放日志文件(/var/log)、缓存包(/var/cache/yum)、数据库文件、邮件队列等。此分区内容增长迅速,独立出来可以防止日志暴涨塞满根分区导致系统异常。对于打算运行MySQL、Docker(默认存储位置在/var/lib/docker)的服务,应酌情增大。
swap物理内存的1-2倍swap交换分区。当物理内存不足时,系统会将部分内存数据暂时交换到磁盘上。对于服务器,如果内存充足(如8GB以上),swap可以设置得与物理内存等大或略小。对于小内存环境(如2GB),建议设置为内存的2倍。

为什么这么分?—— 一个运维的视角把系统想象成一个公司。/是公司的总部大楼和核心管理部门;/home是员工的个人办公室和档案柜,人员流动(重装系统)不影响个人资产;/var是公司的后勤和仓储中心,物流(日志、缓存)繁忙且占用空间大,独立管理避免堵塞总部通道;/boot是公司的前台和门卫室,即使大楼内部维修,门卫系统依然能指引访客(引导系统);swap则是一个临时的外部仓库,当公司内部仓库(内存)爆满时,暂时存放一些不急需的货物。

3.2 实战分区操作步骤详解

在分区界面,选择你的目标磁盘(如sda),点击“+”号创建分区。

  1. 创建/boot分区

    • 挂载点:/boot
    • 期望容量:1024MiB(即1GB)
    • 文件系统类型:ext4(更通用) 或xfs(CentOS 7默认,性能好)
    • 点击“添加挂载点”。
  2. (仅UEFI)创建/boot/efi分区

    • 挂载点:/boot/efi
    • 期望容量:200MiB
    • 文件系统类型:必须选择EFI 系统分区,安装程序会自动格式化为vfat。
    • 点击“添加挂载点”。
  3. 创建swap交换分区

    • 文件系统类型:选择swap
    • 期望容量:根据你的内存计算。例如,内存为4GB,可设置为4096MiB
    • 无需指定挂载点,系统会自动识别。
    • 点击“添加挂载点”。
  4. 创建/根分区

    • 挂载点:/
    • 期望容量:40000MiB(约40GB)
    • 文件系统类型:xfs
    • 点击“添加挂载点”。
  5. 创建/home分区

    • 挂载点:/home
    • 期望容量:不填写具体数值,在“其它大小选项”中选择“使用全部可用空间”,但先别点确定
    • 我们需要为/var预留空间,所以这里手动计算。假设总磁盘100GB,已用约1+0.2+4+40=45.2GB,剩余约55GB。我们可以给/home分配35GB,给/var分配20GB。
    • 因此,将/home期望容量设置为35000MiB
    • 文件系统类型:xfs
    • 点击“添加挂载点”。
  6. 创建/var分区

    • 挂载点:/var
    • 期望容量:不填写,在“其它大小选项”中选择“使用全部可用空间”。因为它是最后一个分区,会自动占用剩余的所有磁盘空间(约20GB)。
    • 文件系统类型:xfs
    • 点击“添加挂载点”。

完成所有分区创建后,你的分区布局应该清晰列出。务必再次核对每个分区的挂载点和大小。确认无误后,点击左上角的“完成”,系统会提示你接受更改并格式化磁盘,点击“接受更改”即可。

重要心得:在真实生产服务器中,尤其是数据库、存储服务器,我们可能会将/var/lib/mysql(数据库数据)或/data(应用数据)单独挂载到一块高性能的SSD甚至NVMe磁盘上,而不是与其他系统目录共享同一块磁盘。这种根据IO性能需求进行的物理分离,是分区思想的进阶应用。

4. 安装过程详解与关键配置避坑

分区完成后,安装过程就相对顺畅了,但仍有几个关键配置点需要注意。

4.1 软件选择:根据用途定制的起点

在“软件选择”步骤,默认是“最小安装”,这只有一个基本的命令行界面。对于新手,我强烈建议根据你的学习目标进行选择:

  • 学习服务器管理/开发环境:选择“带GUI的服务器”,并在右侧勾选“开发工具”。这会安装图形界面和GCC、Make等完整的编译工具链,方便你后续安装各种软件。
  • 专注纯命令行服务器:选择“最小安装”,然后点击右侧的“附加选项”,勾选“兼容性程序库”和“开发工具”。这样系统最纯净,资源占用最少。
  • 特定用途:例如准备做Web服务器,可以选“最小安装”,然后事后用yum groupinstall "Web Server"来安装Apache/Nginx等。

我的建议是,在虚拟机或测试环境中,第一次安装时选择“带GUI的服务器”和“开发工具”,这能让你有一个更友好的探索环境。图形界面在需要时可以用systemctl set-default multi-user.target切换回纯文本模式。

4.2 网络与主机名配置

点击“网络和主机名”,默认网卡可能是关闭的。务必打开它(将右上角开关拨到“ON”),这样安装程序才能从网络获取更新和额外的软件包。同时,在下方设置一个有意义的主机名,例如centos7-server.localdomain

避坑提示:如果你在虚拟机中使用的是“NAT”网络模式,能自动获取IP(DHCP),这就足够了。但如果你需要固定的IP(例如做服务器),最好在安装后就配置静态IP,而不是用安装程序里相对简陋的界面。我们可以在系统安装完成后,通过编辑/etc/sysconfig/network-scripts/ifcfg-ens33(网卡名可能不同)文件来精确配置。搜索“rocky linux设置静态ip”的热词,其方法与CentOS 7完全一致。

4.3 root密码与用户创建

这是安全的基础。务必为root用户设置一个强密码。但更重要的是:在“用户创建”部分,创建一个用于日常管理的普通用户(如admin),并为其赋予管理员权限(勾选“将此用户设为管理员”)。这相当于Windows中的Administrator或macOS中的管理员用户。

最佳实践是:永远不要直接使用root用户登录进行日常操作。使用普通用户登录,当需要执行特权命令时,在命令前加sudo。这能极大减少因误操作导致系统损坏的风险。安装程序创建的这个管理员用户默认就在wheel组中,已经具备了sudo权限。

完成所有配置后,点击“开始安装”,等待进度条走完。安装完成后,点击“重启”,拔出安装介质(U盘),系统将从硬盘首次启动。

5. 首次启动后的必须操作与安全加固

系统重启后,你会看到GRUB引导菜单(如果只装了一个系统,可能一闪而过),然后进入初始化设置。接受许可证,完成一些简单的配置(如时区、语言等),就可以用你创建的用户登录了。

5.1 立即更新系统

登录后第一件事,打开终端(在图形界面下可以按Ctrl+Alt+T),更新系统。这能修复已知的安全漏洞。

sudo yum update -y

-y参数表示对所有询问自动回答“yes”。这个过程可能会花费一些时间,取决于更新包的数量和网速。

5.2 配置静态IP地址(如需要)

如果你的服务器需要一个固定的IP,现在就来配置它。首先,查看网卡名称:

ip addr

通常第一个以太网卡叫ens33eth0。编辑其配置文件:

sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33

将文件内容修改为类似下面这样(根据你的网络环境调整):

TYPE=Ethernet BOOTPROTO=static # 关键:从dhcp改为static NAME=ens33 DEVICE=ens33 ONBOOT=yes # 确保是yes,开机自启 IPADDR=192.168.1.100 # 你想要的静态IP NETMASK=255.255.255.0 # 子网掩码 GATEWAY=192.168.1.1 # 你的网关地址 DNS1=8.8.8.8 # 首选DNS DNS2=114.114.114.114 # 备用DNS

保存退出后,重启网络服务:

sudo systemctl restart network

然后用ip addr命令检查IP是否已变更为你设置的地址。

5.3 安装必备工具

最小化安装可能缺少一些常用工具,我们可以一并安装:

sudo yum install -y wget curl vim bash-completion net-tools
  • wget/curl:下载工具。
  • vim:比默认vi更强大的文本编辑器。
  • bash-completion:为bash命令提供自动补全功能,极大提升效率。
  • net-tools:包含ifconfignetstat等传统网络诊断工具(虽然ip命令更现代,但很多脚本和教程仍依赖它们)。

5.4 禁用SELinux(针对学习环境,可选但常见)

SELinux是增强安全模块,但对于新手来说过于严格,常常导致各种权限问题,让人摸不着头脑。在学习和测试环境中,许多教程会建议先禁用它。

sudo vi /etc/selinux/config

找到SELINUX=enforcing这一行,将其改为:

SELINUX=disabled

保存退出。这个更改需要重启系统才能生效。对于生产环境,建议学习SELinux策略后再做决定,而不是简单关闭。

6. 分区方案的后期维护与扩容思路

安装并配置好系统只是开始。随着使用,你可能会遇到空间不足的问题。这时,当初合理的分区设计就显示出优势了。

6.1 监控磁盘使用情况

养成定期检查的习惯:

df -h

这个命令能以人类可读的格式(GB, MB)显示所有挂载点的磁盘使用情况。重点关注//home/var的使用率。

6.2 如果某个分区满了怎么办?

  • /home满了:这是最理想的情况,因为数据独立。你可以清理用户文件,或者最直接的办法——添加一块新硬盘,将其格式化(如ext4)后,挂载到/home2,并将部分用户数据迁移过去。
  • /var满了:通常是日志或缓存过多。可以先用du -sh /var/*命令查看/var下哪个子目录最大。
    • 如果是/var/log,可以清理旧的日志文件(sudo journalctl --vacuum-time=7d清理7天前的系统日志,或手动删除/var/log下的特定应用日志)。
    • 如果是/var/cache/yum,可以运行sudo yum clean all清理。
    • 如果是Docker占用(/var/lib/docker),需要清理无用的镜像和容器。
  • /根目录满了:这是最棘手的情况,因为它可能影响系统运行。除了常规清理(如卸载不用的软件包sudo yum autoremove),如果空间规划确实不足,就需要进行在线扩容。这需要你使用的虚拟化平台或云服务支持磁盘扩容,然后在系统中使用fdisk/partedresize2fs/xfs_growfs命令来扩展分区和文件系统。此操作有风险,务必先备份重要数据!

6.3 关于“CentOS扩容”热词的延伸

搜索“centos7.6如何利用分区给磁盘扩容”的人,通常是在云平台或虚拟机中先扩大了底层磁盘容量,然后需要在操作系统内将新增的容量分配给现有分区。核心步骤是:

  1. 使用fdisk -l确认磁盘总容量已增加。
  2. 使用parted工具删除原有分区并重新创建(注意:这会破坏分区内数据!仅适用于将新增空间追加到最后一个分区的情况,且必须提前备份)。
  3. 更安全的方法是:将新增的未分配空间创建为一个新的独立分区(如/dev/sda4),然后将其挂载到一个新的目录(如/opt/data)使用。
  4. 对于LVM(逻辑卷管理)分区,扩容则安全灵活得多,这也是企业级环境更推荐使用LVM的原因。它允许你动态调整分区大小而无需担心数据丢失。

至此,你已经完成了一次从规划到实战的完整CentOS 7系统部署。记住,分区方案没有绝对的金科玉律,它服务于你的具体需求。这个30/40GB的/、独立的/home/var的方案,是一个经过时间检验的、平衡性良好的起点。当你对Linux有了更深的理解,当你部署MySQL、Docker、大数据平台时,你会自然而然地形成更适合自己业务场景的存储架构思路。

← 返回列表