ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CentOS装完必做清单:从换源到SSH加固与磁盘扩容一帖搞定

CentOS装完必做清单:从换源到SSH加固与磁盘扩容一帖搞定 装完 CentOS 之后很多人做的第一件事是打开终端准备装软件然后被各种“找不到软件包”“网络超时”反复折磨。我看着后台的搜索记录发现大批人在搜“centos 7.9下载”“centos修改网易源”“centos ssh配置”“centos扩容”——这些问题本质上都指向同一个需求系统装完了接下来呢我当年从 Windows 切过来时也一样以为装完系统就能直接干活结果折腾一晚上才把 yum 源搞定。这篇东西就围绕“CentOS安装完之后需要做什么”这个问题展开把新系统落地的整套流程拆开讲一遍网络配置、软件源切换、SSH 加固、磁盘扩容、常用环境部署每一步都会解释为什么这么做以及新手最容易在哪个环节翻车。适合刚装完系统一脸懵的新人也适合每次都要临时翻文档的老手拿去当 checklist 用。1. 装完 CentOS 先搞清楚三件事版本、镜像与安装形态1.1 你装的到底是哪个 CentOS我见过太多人下载镜像时没注意版本装完了才发现自己用的是早已停止维护的旧版本。CentOS 7 最后一个小版本是 7.92024 年 6 月 30 日停止维护CentOS 8 更早2021 年 12 月 31 日就 EOL 了。现在很多人搜“centos 7.9下载”“centos 8 stream下载”“linux centos 9下载”其实诉求完全不同。如果你的目标是学技术、跑旧项目CentOS 7.9 的资料最全但停更带来的问题没法回避默认软件源已经迁到 vault.centos.org装新软件越来越麻烦。如果你愿意接受滚动发行直接上 CentOS Stream 9 或 Stream 10 更省心更新由 Red Hat 持续推送。我自己在生产环境已经不用 7/8 了但学习 Docker、K8s 这些场景7.9 配合自建源仍然能跑得很稳。1.2 镜像怎么选DVD、Minimal、Everything 与实际安装方式你在“centos镜像下载官网”“vmware下载centos镜像”里看到的大多分三种DVD、Minimal、Everything。DVD 包含图形界面和大部分常用软件安装包有好几个 G适合桌面使用Minimal 只有一二百 MB 的包装完就是纯命令行Everything 把仓库里所有包都塞进去适合离线环境。我个人推荐虚拟机学习用 Minimal实体机当服务器也优先 Minimal真需要桌面的时候再单独装 GNOME 或 KDE不要在安装阶段为了“有图形界面”白白拖慢速度。还要注意架构。x86_64 是常见的服务器架构但如果你为了树莓派、飞腾、麒麟这类 ARM 设备搜“arm版centos下载”就必须选 aarch64 镜像否则装都装不上。现在云厂商也提供按需拉取的 CentOS 镜像下载前先确认 CPU 架构是基本功。1.3 最小化安装后最常遇见的“新手三连”最小化装完登录系统你会发现连 ifconfig、vim、wget 都没有更别提图形界面。别慌这很正常。此时最需要做三件事确认网卡是否拿到 IP确认 DNS 能不能解析确认能不能用 yum 安装软件。这三样里有任何一样不通后面的步骤都做不下去。我给新人的建议是在这三步上不要怕试错多敲几条命令把底层的网络和包管理机制搞明白收益远大于记一堆花哨配置。2. 网络、软件源与系统更新别让 yum 卡在原地2.1 确认网络连通和网卡配置登录后第一件事敲 ip addr看看有没有 inet 地址。如果没有说明网卡还没拿到 IP。CentOS 7 默认可能开了 NetworkManagerCentOS 8/Stream 也是最简单的办法是用 nmtui 进入图形化交互界面选网卡然后启用 DHCP。有个细节值得注意如果你是从虚拟机克隆出来的MAC 地址变了NetworkManager 可能把原来的连接配置带过来导致有 IP 但网关不对这时直接在 nmtui 里删掉旧连接重新建一个就行。还有一种情况是 DNS 配置不对。明明有 IPping 外网 IP 通但 ping www.baidu.com 不通这种基本都是 DNS 问题。检查 /etc/resolv.conf确保里面有可用的 nameserver比如 114.114.114.114 或 223.5.5.5。CentOS 8 之后 systemd-resolved 可能接管 DNS 配置但最小化安装一般没有直接在 resolv.conf 里改就行。2.2 换源是必须的网易源、清华源、阿里源怎么选为什么装完系统第一件事都是换源因为 CentOS 默认的官方源在国外国内服务器访问 yum 仓库延迟高、速度慢甚至经常 timeout。把源换成国内镜像站之后yum install 的速度是肉眼可见的提升。国内常用的有网易源、清华源、阿里源三者都能用选哪个主要看网络环境。我自己的经验是网易源和清华源稳定性都不错阿里源在云服务器上的兼容性更好一些。CentOS 7 换源最简单直接替换 /etc/yum.repos.d/CentOS-Base.repo 文件把里面的 baseurl 指向镜像站对应目录。CentOS 8 的仓库结构更复杂有 BaseOS、AppStream、Extras 几个仓库需要把 /etc/yum.repos.d/CentOS-Linux-*.repo 这些文件都改一遍。CentOS Stream 10 换清华源的思路一样只是目录路径对不上而已。搜索词里“centos 8更换yum源”“centos stream 10 如何换成清华源”出现的频率那么高说明这个环节太容易在细节上翻车。2.3 更新系统并补充基础工具源换好之后先执行 yum makecache 生成缓存然后 yum update 更新所有软件包。这一步会把内核和安全补丁一起更新装完建议重启一次。接下来把日常必备的工具装上vim、wget、curl、git、net-tools、lsof、tree、epel-release。EPEL 这个源非常重要很多常用软件在官方源里没有装好 EPEL 之后才能顺利装到。yum install -y epel-release vim wget curl git net-tools lsof tree有个细节容易忽略yum update 之后如果当前是远程连接一定要确认 SSH 服务还活着因为更新 OpenSSH 或 glibc 后某些会话会被打断。所以我一般建议在本地控制台或带外管理里做这个操作远程环境下也要做好随时重连的心理准备。3. SSH 配置与远程安全加固3.1 让 SSH 开机自启并配置远程登录最小化安装的 CentOS 默认会装 openssh-server但未必启动了。systemctl status sshd 看一下状态没有就 systemctl enable --now sshd——enable 表示开机自启--now 表示立即启动。做完这一步你才能从本地 SSH 客户端远程连上去操作这也是后面所有远程操作的基础。很多人搜“centos ssh配置”其实核心配置文件就一个/etc/ssh/sshd_config。我建议你先把 Port 改成一个非默认端口比如 2202避免大量针对 22 端口的扫描和暴力破解。改完之后 systemctl restart sshd同时要确认防火墙放行新端口。这一步漏了改完就是直接断连的结局。3.2 改端口、密钥登录与禁止 root 密码登录SSH 安全加固的黄金组合是密钥登录 禁用密码登录 禁用 root 直接登录。先用 ssh-keygen -t ed25519 在本地生成密钥对然后把公钥追加到服务器上的 ~/.ssh/authorized_keys。为了确保第一次连接不失败我建议先测试密钥登录可用再修改 sshd_config 里的 PasswordAuthentication no 和 PermitRootLogin no最后重启服务。CentOS 7 自带的 OpenSSH 版本是 7.4比较老。如果你有安全合规要求可能要走“centos 7 升级openssh”这条路。升级有两条路一条是编译安装新版本 OpenSSH步骤多容易踩坑另一条是用有维护的第三方源相对省事。我自己升级时踩过最大的坑是升级到一半 SSH 连接断掉服务起不来最后只能去本地控制台修复。所以升级前一定要备份原来的 sshd_config并且留一个本地 root 会话作为逃生窗口。3.3 顺带把 SFTP 也搭起来如果你需要给同事或客户传文件“如何在centos上搭建sftp”就是一个很常见的问题。其实 CentOS 自带的 sshd 就支持 SFTP不需要额外装软件。比较安全的做法是专门建一个 sftp 用户组然后在 sshd_config 里加一段配置Subsystem sftp internal-sftp Match Group sftpusers ChrootDirectory /data/sftp/%u ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no这里有个非常容易踩的权限坑ChrootDirectory 指定的目录属主必须是 root且其他用户不能有写权限否则任何人都登录不了。目录建好之后里面再放一个属主是 sftp 用户的子目录用来传文件。我每次讲这一段都会强调先在本地测试一遍权限再通知别人使用不然对方一登录就报错你会被反复。3.4 防火墙和 SELinux 的坑CentOS 7 及以上默认开启了 firewalld。很多人改了 SSH 端口后发现自己连不上第一反应是关防火墙这不是好习惯。正确做法是firewall-cmd --permanent --add-port2202/tcp firewall-cmd --reload如果还连不上先 firewall-cmd --list-all 看端口是否真的放行了。另一个容易出问题的是 SELinux。我刚开始学 CentOS 时遇到 SSH 登录异常、Nginx 打不开文件这类问题十有八九能在 /var/log/audit/audit.log 里看到 SELinux 拒绝的痕迹。对新手来说如果不想深入 SELinux可以先 getenforce 看状态再用 setenforce 0 临时关闭验证问题是否由它引起。但我不建议直接禁掉 SELinux生产环境保持 enforcing配合有针对性的策略调整才是正路。4. 磁盘扩容与分区规划实战4.1 为什么刚装完的 CentOS 动不动就磁盘报警不少人装完系统才发现明明磁盘显示几百 G可 df -h 一看根分区只有几十 G剩余空间全在 /home 里。这是因为安装程序的默认分区方案把空间分配得不够合理对服务器来说反而很尴尬——日志、Docker 镜像、数据库文件都往 / 下堆/home 几乎没人用。我见过有同学跑了一个月数据库磁盘直接报警然后四处搜“centos扩容”。处理办法有两条一条是安装阶段就手动分区把 /home 的空间分出去另一条是装完再调整。如果你已经装好了也不慌LVM 给了我们在线扩容的能力下面这套流程就是为这种情况准备的。4.2 扩容前必须做的检查在做任何扩容操作之前先把现状摸清楚。用到的主要命令就三个lsblk 看磁盘和分区结构df -h 看文件系统使用率vgs/lvs 看 LVM 卷组和逻辑卷信息。CentOS 7 默认用的文件系统是 xfsxfs 支持在线扩容但不能缩容如果是 ext4可以用 resize2fs。把这两者的区别搞清楚后面遇到问题才不会瞎猜。还要确认磁盘控制器是不是直通给你的虚拟机。如果你用的是 VMware 或 VirtualBox扩容的第一步是在虚拟机设置里给磁盘增加容量然后用 fdisk 或 parted 创建新分区之后才轮到 LVM 层面。很多教程会跳过“创建分区”这一步直接演示 pvcreate结果读者跟着做的时候发现找不到设备就是卡在这里。4.3 LVM 根分区扩容完整过程我以“给虚拟机加了一块新磁盘后把根分区空间扩进去”为例完整拆一遍流程。# 1. 确认新磁盘设备名 lsblk # 2. 对新磁盘进行分区 fdisk /dev/sdb # 依次执行 n新建分区、p主分区、回车两次接受默认、t设置类型、8eLVM、w保存 # 3. 创建物理卷并加入卷组 pvcreate /dev/sdb1 vgextend centos /dev/sdb1 # 4. 给根逻辑卷扩容 lvextend -l 100%FREE /dev/centos/root # 5. 扩展文件系统 xfs_growfs /里面最值得注意的坑是第 4 步逻辑卷的名字一定要先通过 vgs 和 lvs 确认不同安装方式下卷组名可能是 centos、cl 或别的照抄命令敲成 /dev/centos/root 而实际没有这个逻辑卷错误提示会让人摸不着头脑。第 5 步 xfs_growfs 后面跟的是挂载点不是设备名这一点也经常有人搞反。如果你不是 LVM 结构而是传统分区直接挂载在根分区扩容就麻烦很多需要借助 GParted Live 之类的工具离线调整分区表操作风险较高。我的建议是涉及 / 分区的调整先做备份再动手不要拿生产环境练手。5. 常用软件与环境部署落地5.1 Node.js 的安装部署在 CentOS 上装 Node.js“centos 7.9 node.js安装部署”这类搜索很常见。最简单的办法是下载官方编译好的二进制包而不是用源码编译。下载 node-v16.x-linux-x64.tar.xz解压到 /opt然后做软链接到 /usr/local/bin 即可。为什么要强调版本因为 CentOS 7 的 glibc 版本是 2.17太新的 Node.js比如 20 以上的大多数版本需要 glibc 2.28强行运行会报错。如果你要在老系统上跑新项目建议要么升级系统要么就用 Node 16/17 这类兼容版本。做软链接时记得把 node 和 npm 都链接上很多新手只链了 node结果 node -v 能跑npm -v 就报 not found。装好后顺手验证node -v npm -v如果需要多个 Node 版本切换用 nvm 更合适它本质是把版本放到 ~/.nvm 目录再用 shell 脚本切换 PATH。这个方案适合开发和测试环境生产环境我更倾向锁死版本避免“今天能用、明天不能跑”的尴尬。5.2 LibreOffice 与 Chromium 的安装有些场景需要在服务器或桌面版上做文档转换免不了装 LibreOffice。“libreoffice 7.6 centos 安装”看着简单实际会碰到依赖问题。因为 LibreOffice 新版本对 glibc、libX 系列库有要求CentOS 7 上直接 rpm -ivh 可能报一堆依赖缺失。我建议先安装 EPEL再尝试一次装所有相关包如果还是缺依赖就下载离线 rpm 仓库用 yum localinstall 一次装全。其实在 CentOS 7 上LibreOffice 7.6 已经接近支持边缘装不上时降到 7.4 或 7.5 通常会更顺利。Chromium 浏览器也是同理。CentOS 7 上装新版 Chrome 经常因为 glibc 太老跑不起来不少人只能去找“centos 7 能用的 chrome 旧版 rpm”。据我自己的测试120 左右的旧版 Chrome 在 CentOS 7 上可以运行新版就别想了。如果你只需要无头浏览器做页面截图直接用 Puppeteer 配合 Chromium 也可以只是要记得给系统装全依赖库libX11、libXcomposite、libasound 等缺一个都会导致启动即崩溃。5.3 查看 MySQL 初始密码与数据库自启动系统装好 MySQL 或 MariaDB 后默认会生成一个临时密码。很多新手问“centos系统如何查看mysql初始密码”位置其实很固定。MySQL 8 在 /var/log/mysqld.log 里MariaDB 在 /var/log/mariadb/mariadb.log 里执行grep temporary password /var/log/mysqld.log看到密码之后用它登录 mysql -u root -p然后立刻执行 ALTER USER rootlocalhost IDENTIFIED BY 新密码; 修改密码否则很多操作都没权限做。这里有个小坑如果日志里搜不到临时密码十有八九是日志轮转覆盖了旧日志或者初始化时已跳过生成临时密码。这时可以尝试用 skip-grant-tables 模式临时启动 MySQL 去重置但操作前务必先备份数据。提到数据库还有不少人在搜“centos 7 oracle 21c”。我的观点很明确不要在 CentOS 7 上硬装 Oracle 21c。Oracle 官方对 21c 的推荐系统是 Oracle Linux 8 以上在 CentOS 7 上装多半会卡在依赖和内核参数上。如果确实要用优先在 Oracle Linux 或 CentOS Stream 9 上装 19c再配置 systemd 服务或 dbstart 实现“centos oracle 自动启动”。这类重数据库比的是稳定而不是折腾。5.4 远程控制和本地大模型ToDesk 与 LM Studio如果你在 CentOS 上需要远程桌面控制搜“centos安装todesk步骤”的人不少。ToDesk 提供了 Linux 版 rpm 包下载后直接 yum install 或 rpm -ivh 安装装完运行 todesk 就能看到设备代码。需要注意的点是如果系统没有图形桌面ToDesk 用起来意义不大它本质是给桌面环境用的远程协助工具。还有个容易忽略的点新版 ToDesk 对系统库有一定依赖CentOS 7 上装完图标不出来的话先在终端里跑 todesk 看输出缺什么库装什么库。至于“centos 装lmstudio”LM Studio 是本地运行大模型的一个客户端它本身对 Linux 的官方支持还在逐步完善。如果想在命令行环境下部署大模型更通用的是直接装 llama.cpp 或 Ollama。我自己在 CentOS Stream 9 上装过 Ollama一条 curl 命令就能搞定跑小参数模型没什么压力。这类新项目别老想着往老系统上堆依赖换个新一点的系统能省大量的折腾时间。6. CentOS 停更之后的路6.1 CentOS 7 停更到底意味着什么这里必须把背景说清楚CentOS 7 在 2024 年 6 月停止维护CentOS 8 更早停更。所谓停更就是官方不再推送安全补丁和 bugfix新的漏洞没有修复来源。对生产环境来说这是一个需要认真对待的信号。我之前用了几年 CentOS 7稳定的确稳定但如果上面跑着对外服务停了更就等于裸奔尤其在容器和云原生普及的今天基础镜像不更新风险是叠加的。所以现在大家搜“centos 8下载”“linux centos 9下载”时我更建议直接考虑 CentOS Stream 9 或 Stream 10。Stream 是滚动发行版你会先于 RHEL 拿到新特性适合开发者但要注意它不是“永远稳定”的发行版本重要变更会持续发生。对追求稳定的服务器也可以评估 Debian 系或者直接用云厂商提供的 RHEL 兼容镜像。6.2 用 Clonezilla 备份系统很多老手在重做系统前会先备份这里推荐 Clonezilla 这个开源工具。搜“clonezilla怎么备份centos系统”的话我的经验是准备一个 U 盘启动 Clonezilla选择 device-image 模式把整个磁盘备份成镜像文件存到移动硬盘上。恢复时选择 restore 回写即可。关键点是备份时注意区分磁盘和分区的粒度整盘备份最省心分区备份恢复灵活但容易漏掉引导区。备份这件事我把它放在“停更之后”来讲是想提醒一句老系统在没有正式替代方案之前至少先把备份做扎实。CentOS 7 的机器如果还能坚持跑最好每周甚至每天做一次关键数据备份同时准备一台新环境做迁移演练。不要等到系统被攻破或磁盘挂掉才想起备份。6.3 迁移到 Ubuntu 还是留在 Stream“ubuntu和centos的区别”这个话题外行问得最多其实从运维角度看核心差异就那么几个CentOS 用 yum/dnfUbuntu 用 aptCentOS 默认防火墙是 firewalldUbuntu 是 ufwCentOS 的 SELinux 默认启用Ubuntu 相对宽松。迁移的难点并不是命令差异而是业务依赖和配置文件。脚本里写死 yum、systemctl 的迁移后要改 apt 分支用了特定内核模块的还要确认 Ubuntu 内核是否支持。“ubantu替换centos”这个动作我的建议是不要直接在生产上一步到位。先在虚拟机里跑一个月把监控、备份、发布流程都迁移过去确认没有兼容性问题再切换流量也不迟。从我的个人体验看Ubuntu 的社区文档更丰富很多新框架默认支持的是 Ubuntu对年轻人确实更友好但老运维手里已经积累了大量 Red Hat 系脚本留在 Stream 或继续用 RHEL 系其实也能长寿。7. 常见问题排查速查表症状常见原因解决方法yum install 超时或找不到包官方源在境外或源已失效换网易源/清华源/阿里源然后 yum makecacheCentOS 8 的 yum 全部失效官方源迁移到 vault.centos.org将 repo 文件 baseurl 改为 vault 地址最小化安装后没有 ifconfig未安装 net-toolsyum install net-tools或直接用 ip addr改完 SSH 端口后连不上防火墙未放行新端口firewall-cmd --add-port 后 reloadMySQL 登录提示无权限未修改初始临时密码先 grep 日志找临时密码再 ALTER USER中文显示乱码locale 未设置或未安装语言包安装 glibc-langpack-zh设置 LANGzh_CN.UTF-8克隆虚拟机后网卡不通MAC 变化导致连接配置失效用 nmtui 删除旧连接重新建配置图形界面启动黑屏显卡驱动冲突检查 Nouveau 状态或改用最小化安装老硬件如 2014 Mac mini安装异常固件或硬件兼容性问题先在虚拟机里验证镜像再物理机安装openssh 升级后 sshd 起不来配置错误或依赖冲突备份 sshd_config使用本地控制台修复这张表不全面但覆盖了我这些年遇到的高频问题。真遇到没列出来的我的建议是先把系统日志拉出来journalctl -xe 比任何一顿瞎猜都好使。最后再分享一个小习惯我每次装完 CentOS都会在虚拟机上先打一个快照把“刚换好源、SSH 已经加固”这一刻保存下来。之后无论装什么软件、改什么配置出问题直接回滚省下大量重装时间。还有一点想说的是尽量别一次性把系统所有东西都配完再重启。把配置拆成小步换源、更新、开 SSH、加固、装软件每一步都验证过了再走下一步。我在实际维护中见过太多人因为一把梭最终哪一步出的问题都说不清日志里全是乱七八糟的错误。CentOS 安装之后的这套收尾流程说难不难说简单也藏着不少细节按部就班来你会少走很多弯路。
返回列表