拓冰建站拓冰建站
首页 / 资讯中心 / 正文

CentOS装机后必做的七件事:从换源加固到磁盘扩容

装机完成只是开始。很多人装完CentOS发现能进系统、能敲命令就以为大功告成实际上一台刚装好的系统连“能正常干活”都算不上。没换软件源、没关SELinux、防火墙策略没梳理、磁盘空间没规划后面随便装个软件或者跑个服务各种莫名其妙的问题就来了。这篇文章就专门聊聊CentOS安装完之后必须做的那几件事从基础检查、换源、更新工具链到安全加固、磁盘扩容再到数据库初始化和SFTP搭建全是实操总结适合刚接触CentOS的运维新手也适合那些装完系统后不知道下一步该干嘛的人直接照着抄。1. 装机后的第一眼系统状态盘点和网络连通性1.1 确认版本与硬件信息刚进系统不要急着开干先花三分钟搞清楚自己手里到底是什么环境。很多教程直接给命令但不同大版本的CentOS操作路径差别很大比如CentOS 7用的是firewalld和systemdCentOS 8 Stream已经是另一个生态CentOS 9更是往RHEL 9靠拢。我一般先输入这三条命令cat /etc/redhat-release uname -a hostnamectl第一条看系统版本第二条看内核信息第三条看主机名、系统类型和虚拟化平台。这里要注意如果你拿到的是ARM版CentOS现在很多鲲鹏、飞腾机器用这个后面装软件时一定要找arm64的rpm包别拿着x86_64的包硬装。用uname -m确认架构输出是aarch64就说明这是ARM版。硬件信息也要顺带看一眼尤其是内存和磁盘。free -h看内存df -hT看分区使用情况lsblk看磁盘结构。我最常遇到的问题是很多人装系统时磁盘全部分给了/home结果/根分区只有几十GB后面装数据库、容器镜像一多就爆盘。这个习惯最好在装完第一时间改掉具体怎么调整后面有一节专门讲磁盘扩容。1.2 网络与DNS配置检查装完系统上不了网是最常见的问题。CentOS 7用传统的network服务CentOS 8及以上用NetworkManager但不管哪个版本先执行ip addr看看网卡有没有拿到IP。如果发现网卡没有IP多半是没开自动连接或者没配dhclient。手动配置IP时CentOS 7习惯改/etc/sysconfig/network-scripts/ifcfg-ens33CentOS 8以后推荐用nmcli。我比较推荐直接学会nmcli因为它更现代而且CentOS 9里传统配置文件方式已经开始被弱化了。示例nmcli con mod ens33 ipv4.addresses 192.168.1.100/24 nmcli con mod ens33 ipv4.gateway 192.168.1.1 nmcli con mod ens33 ipv4.dns 223.5.5.5 114.114.114.114 nmcli con mod ens33 ipv4.method manual nmcli con up ens33配置完后ping一下网关和公网地址很多人只ping baidu.com一旦DNS解析失败就找不到原因。正确做法是先ping 223.5.5.5通了说明网络层没问题再ping baidu.com通了说明DNS也没问题。哪一步失败就排查哪一步不用瞎猜。1.3 关键点搞清楚当前软件源能用吗网络通了以后马上执行一下yum repolistCentOS 8及以上用dnf repolist看看默认源有没有正常启用。国内服务器直连官方源的体验很糟糕经常超时或者速度十几KB/s这就是下一节要解决的问题。但判断“能不能用”有个前提先确认基础软件包epel-release装了没有。后面装很多软件都要依赖EPEL源我习惯在新机器上第一时间装掉它yum install -y epel-release如果这一步超时说明当前网络连官方源确实吃力那就直接跳到换源环节换完再回来装。2. 软件源配置把默认源换成国内镜像2.1 为什么必须换源CentOS官方源放在国外国内服务器访问延迟高、速度慢更麻烦的是CentOS 8停止维护后官方源里的软件包已经不再更新很多yum install直接报404。这时候换源就不是“优化体验”而是“救急”。网上搜“centos修改网易源”“centos 8更换yum源”“centos stream 10 如何换成清华源”搜出来的教程五花八门其实核心原理就是一句话把/etc/yum.repos.d/目录下的.repo文件里的baseurl从mirror.centos.org改成国内镜像站地址然后清缓存重建。清华源和阿里源是目前比较稳的选择网易源也不错但部分同步频率略慢我推荐以清华源为主。2.2 不同大版本的源替换操作CentOS 7的换源很简单先备份原文件再下载对应版本的repo文件mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/...这里我不推荐手动下载repo文件写死URL因为官方路径经常变动。更稳妥的办法是直接用清华源提供的repo生成脚本或者用sed替换sed -i s|mirror.centos.org|mirrors.tuna.tsinghua.edu.cn|g /etc/yum.repos.d/CentOS-*.repo sed -i s|^#baseurl|baseurl|g /etc/yum.repos.d/CentOS-*.repo sed -i s|^mirrorlist|#mirrorlist|g /etc/yum.repos.d/CentOS-*.repo这套sed命令对CentOS 7和CentOS 8都适用原理是把baseurl前面的注释去掉把mirrorlist注释掉再把域名替换成清华源地址。CentOS Stream 10的操作要注意它已经全面切换到dnf体系repo文件一般在/etc/yum.repos.d/下以centos.repo形式存在。Stream 10换清华源可以直接下载官方repo文件覆盖curl -o /etc/yum.repos.d/centos.repo https://mirrors.tuna.tsinghua.edu.cn/centos-stream/10/...具体路径建议直接打开清华源镜像目录看因为文件结构有时候会变别背死命令。2.3 换源后必须做的一件事清缓存重建这是很多人最容易漏掉的一步。换完源后直接yum install系统还是用旧的缓存索引报错信息千奇百怪比如“Could not resolve host”或者“404 Not Found”。我在CentOS 8上就踩过这个坑换完源忘记清缓存结果装epel一直报错排查了半天。正确顺序是yum clean all yum makecacheCentOS 8及以上用dnf clean all dnf makecache这步执行完再跑yum repolist看到新的源ID和包数量就说明切换成功了。这里有个小技巧换源后第一次makecache会比较慢因为要拉取全量元数据尤其是epel源等个两三分钟很正常别中途CtrlC容易把元数据弄坏。3. 系统更新与基础工具链搭建3.1 要不要执行yum update装完系统到底要不要执行yum update我的建议是生产环境先别急着全量更新测试环境随便。全量更新会把内核也一起升级CentOS 7默认仓库里内核版本会从3.10更新到更高的小版本升级完不重启不生效重启后又面临驱动兼容性问题。我见过不少人在虚拟机里装完CentOS 7手一抖执行了yum update -y结果重启后虚拟机开不了机的案例。折中方案是只更新软件包索引和基础安全补丁不升级内核yum update -y --excludekernel*如果确实需要新内核再去单独升级不要在装机后第一时间搞这件事。先把源和工具链备好后面需要哪个内核版本再针对性处理。3.2 必备工具安装清单新装系统默认环境非常精简编译工具、网络排查工具、文本处理工具基本都没有。我每次装机都会先装这么一批yum install -y vim wget curl tar unzip gcc gcc-c make pcre pcre-devel zlib zlib-devel openssl openssl-devel net-tools lsof这里强调一下net-tools装了之后才有ifconfig和netstat命令很多从CentOS 6时代过来的人没有这两个命令浑身难受。lsof用来排查端口占用调试服务必备。编译器套装后面装Nginx、Redis这类源码包的时候能省一大堆事。3.3 针对高频应用的安装预备很多人喜欢在热搜里搜“centos 7.9 node.js安装部署”“libreoffice 7.6 centos 安装”“centos 7.9环境的chromium浏览器安装”这些本质上都不是系统初始化问题而是软件安装问题但有个共性系统基础环境没准备好装什么都是半残。比如Node.js安装我推荐直接用NodeSource官方源不要用EPEL里的老版本。执行curl -fsSL https://rpm.nodesource.com/setup_18.x | bash - yum install -y nodejs装完node -v确认版本如果提示GLIBC_2.28 not found说明系统是CentOS 7glibc版本太低这时候要么换更高版本的系统要么装旧版Node.js比如14.x。这也是为什么装软件前先确认系统版本那么重要。Chromium浏览器在CentOS 7上更麻烦系统glibc版本和依赖库版本决定了只能装旧版rpm这也是网上“CentOS 7能用的chrome旧版rpm”一直有市场的原因。如果你想省心候选方案是装Firefox ESR版本对CentOS 7的依赖要求低很多但如果你就是要Chromium建议下载rpm后用yum localinstall安装让yum自动帮你解析依赖。LibreOffice就省心多了直接yum install -y libreoffice就能装上一整套但注意CentOS 7默认仓库里的LibreOffice版本偏老如果非要7.6得去LibreOffice官网下载rpm包安装方式还是yum localinstall。还有一个很典型的热搜词“centos装lmstudio”这个软件主要用于本地大模型推理很多人想在CentOS上跑。LM Studio官方其实更支持UbuntuCentOS下面装得手动处理很多依赖我建议如果跑深度学习相关应用干脆用Ubuntu替代CentOS这也是“ubantu替换centos”为什么热度那么高后文我会讲一下这个趋势。4. 安全加固与远程访问配置4.1 修改SSH默认端口与密钥登录装完CentOS后SSH默认走22端口root密码直接暴露在公网就是找打。我见过太多服务器被人扫描爆破日志里全是Failed password。所以装机后第一件事是改SSH端口、禁止root密码登录、改用密钥认证。修改/etc/ssh/sshd_config关键参数如下Port 22022 PermitRootLogin prohibit-password PubkeyAuthentication yes PasswordAuthentication no这里有个细节改端口前记得先放行防火墙不然改完SSH直接连不上。操作顺序应该是先把自己的公钥写入~/.ssh/authorized_keys测试密钥能登录成功再改sshd_config最后重启sshd服务并用新端口测试一遍确认没问题后再关闭密码登录。要是顺序搞反了大概率要跑机房去救机器。4.2 防火墙规则设置CentOS 7默认开着firewalldCentOS 9也是。很多新手装完SSH连不上十有八九是防火墙默认没放行服务。用firewalld的正规做法firewall-cmd --permanent --add-port22022/tcp firewall-cmd --permanent --add-servicehttp firewall-cmd --reload注意--permanent参数加了它才会写入永久配置不加的话重启后规则消失。--reload之后用firewall-cmd --list-all检查规则。如果你换了非标准SSH端口这里一定要记得放行不然就会经历“自己把自己锁外面”的社死现场。4.3 SELinux模式选择与处理SELinux是CentOS系系统安全机制里最折磨人的部分。它默认是Enforcing模式对日志文件、网站目录、服务端口的访问控制非常严格。很多人部署应用时遇到“Permission denied”关掉SELinux后一切正常于是网上就出现了“永久关闭SELinux”的教程。我的建议是新手阶段先临时关闭等你对进程上下文和布尔值熟悉了再开启。临时关闭命令setenforce 0永久关闭要改/etc/selinux/config把SELINUXenforcing改成SELINUXpermissive。但注意如果你跑的是数据库、Web服务这类多进程协作的任务SELinux开着的话记得用audit2why排查拒绝日志能把问题定位到具体端口或文件上下文比盲目关闭更专业。这里额外提醒一句CentOS 8及以上引入了selinux-policy-targeted包有些极简安装环境里连SELinux策略包都没装全而不是SELinux本身的问题别一看到拒绝就关SELinux先看日志。5. 磁盘分区与扩容避免“跑着跑着没空间”的问题5.1 初始分区建议装系统时默认自动分区往往不太合理尤其是云服务器镜像和虚拟机场景。我见过很多/var分区分了50G、根分区却只有30G的情况后面容器和数据库日志一涨直接把系统写满。最推荐的方案是全部交给LVM给根分区留足余量/home可以不分或者少分。服务器上/home根本就是个鸡肋目录除非你打算在上面跑用户FTP或者多用户登录否则别给它单分大分区。5.2 使用LVM进行在线扩容如果装的时候没有规划好后面硬盘满了也不用重装系统用LVM可以在线扩容。扩容的大致流程是新加磁盘 - 创建PV - 扩展到VG - 扩展到LV - 执行文件系统扩容。假设原来有/dev/mapper/centos-root这个LV现在新加了一块100G磁盘/dev/sdb执行pvcreate /dev/sdb vgextend centos /dev/sdb lvextend -L 100G /dev/mapper/centos-root xfs_growfs /dev/mapper/centos-root这里有个很大的坑CentOS 7默认文件系统是XFSXFS扩容只能往后加不能缩小。扩容用的是xfs_growfs不是resize2fs。如果你用的是ext4那扩容方式才变成resize2fs /dev/mapper/centos-root。搞混这两个命令轻则扩容失败重则文件系统损坏。执行前先df -hT确认文件系统类型。5.3 扩容前必看注意事项扩容前务必确认VG名和LV名别傻傻地复制我的命令因为你的VG名可能是clCentOS Stream默认、centos或者你自己定义的。用vgdisplay和lvdisplay查看。另外扩容时不要把LV一次性加到超过磁盘的实际剩余空间加得太多文件系统会直接报错。还有一点如果虚拟机是VMware或者VirtualBox新增磁盘后不一定马上能看到设备节点。VMware要确认磁盘已经添加且控制器类型匹配VirtualBox则要在设置里把SATA控制器勾选启用。看不到sdb设备的时候可以执行echo - - - /sys/class/scsi_host/host0/scan重新扫描或者干脆重启一下宿主机省去各种玄学问题。6. 数据库与常用服务配置实战6.1 MySQL/MariaDB初始密码查看与初始化很多人装完MySQL后卡在第一步不知道初始密码。CentOS 7上如果用yum install -y mariadb-server安装的是MariaDB它的初始配置和MySQL不同。MariaDB默认不需要密码直接mysql -u root就能进。但如果你装的是MySQL官方仓库版初始密码会写在日志里grep temporary password /var/log/mysqld.log看到了临时密码后用mysql -u root -p登录然后立刻执行ALTER USER rootlocalhost IDENTIFIED BY YourNewStrongPassword!;注意MySQL 5.7及以上有密码策略弱密码直接拒绝先把密码设复杂点后面再调validate_password_policy。CentOS 7上如果装的MySQL 5.6就没有这个策略问题。很多人在这里卡住是因为用了MySQL 5.7的教程却在MariaDB上执行语法兼容性有点不同。数据库装好后顺手关掉测试库和匿名用户减小攻击面DELETE FROM mysql.user WHERE User; DROP DATABASE IF EXISTS test; FLUSH PRIVILEGES;6.2 搭建SFTP服务并限制目录“如何在centos上搭建sftp”是热搜里出现频率很高的词。其实SFTP不用额外装软件OpenSSH自带的sshd就支持SFTP子系统关键是限制用户只能访问指定目录。创建专用用户并设置目录权限mkdir -p /data/sftp groupadd sftpusers useradd -g sftpusers -d /data/sftp/testuser -s /sbin/nologin testuser passwd testuser然后在/etc/ssh/sshd_config末尾追加Subsystem sftp internal-sftp Match Group sftpusers ChrootDirectory /data/sftp ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no这个配置的核心是ChrootDirectory把用户禁锢在指定目录里。配完之后重启sshd服务用testuser登录测试如果登录后看不到目录通常是/data/sftp/testuser权限问题。ChrootDirectory目录的属主必须是root权限不能超过755否则SSH会拒绝连接。这个坑我已经见过很多人踩了权限设错连接直接被断。6.3 让Oracle服务随系统自动启动“centos oracle 自动启动”又是一个高频词。Oracle数据库装好后不会自动随系统启动需要手动注册systemd服务或改/etc/oratab。最常见的做法是修改/etc/oratab把最后一行的N改成Y然后配置dbstart脚本开机自启。CentOS 7里更正规的做法是写一个systemd unit比如/etc/systemd/system/oracle.service[Unit] DescriptionOracle Database Service Requiresnetwork.target Afternetwork.target [Service] Typeforking ExecStart/u01/app/oracle/product/21c/dbhome_1/bin/dbstart /u01/app/oracle/product/21c/dbhome_1 ExecStop/u01/app/oracle/product/21c/dbhome_1/bin/dbshut /u01/app/oracle/product/21c/dbhome_1 Useroracle Groupoinstall Restartno [Install] WantedBymulti-user.target注意路径要根据你实际的ORACLE_HOME来改。写完后systemctl daemon-reload systemctl enable --now oracle这里最大的坑是Oracle启动脚本里依赖ORACLE_HOME环境变量如果unit里没有设置服务会启动失败。建议在unit的[Service]段加上EnvironmentORACLE_HOME/u01/app/oracle/product/21c/dbhome_1 EnvironmentORACLE_SIDORCL6.4 远程连接工具的安装思路很多人安装完CentOS后第一件事是装ToDesk、向日葵这类远程桌面工具毕竟不是所有人都在电脑前敲SSH。ToDesk的Linux版安装包是deb和rpm都有CentOS直接下rpm包然后yum localinstall -y xxx.rpm安装。这类软件最挑的是glibc版本和桌面图形环境如果安装后无法启动多半是没装图形界面需要先yum groupinstall Server with GUI装上X Window系统。7. 常见“安装后”疑难问题排查速查表我在排查无数台新装CentOS后总结了一些高频问题整理成一张速查表方便你照着查。问题现象常见原因解决思路无法通过SSH连接防火墙未放行端口、sshd未启动检查firewalld规则和sshd服务状态yum安装软件报404或超时默认源失效换国内源并清理缓存重建安装软件提示GLIBC版本不够系统版本过老、软件要求太高换Ubuntu或升级系统不硬刚旧版磁盘满了但不知道什么占的日志、容器镜像堆积du -sh /*逐层排查清理yum缓存和journal日志SELinux报Permission denied策略限制服务访问用ausearch或audit2why查看拒绝日志调整布尔值或添加规则新增磁盘后看不到设备未刷新SCSI总线echo - - - /sys/class/scsi_host/host0/scanSSH密钥登录失败.ssh目录权限错误目录权限设为700authorized_keys设为600换源后reoplist为空GPG密钥或者repo文件路径不对确认repo文件中gpgcheck1与系统密钥匹配必要时设gpgcheck0临时验证这张表里的问题基本覆盖了装机后一周内能遇到的所有“劝退”场景。最后再分享一个我自己的习惯新装完CentOS后我会第一时间做一次快照虚拟机场景或者镜像备份物理机场景。因为接下来所有操作——换源、装编译工具、调防火墙、扩磁盘——随时都有可能把系统搞崩有一个能一键还原的快照等于给自己上了份保险。没有快照之前别轻易动内核和selinux配置。这比任何优化命令都实在。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门