2、Linux系统安装与初始化:CentOS/Ubuntu安装、磁盘分区方案、最小化安装原则、系统初始化配置
说实话,Linux安装这件事,很多新手觉得就是「下一步下一步」就完事了。但我在生产环境摸爬滚打这么多年,可以负责任地告诉你:安装这一步没走好,后面运维全是坑。今天我就把这块掰开了揉碎了讲清楚。
2.1 发行版选择:CentOS vs Ubuntu
先说说选哪个。我个人习惯是:企业生产环境用CentOS(现在更多是Rocky Linux/AlmaLinux),开发测试环境用Ubuntu。为什么?
| 对比项 | CentOS / Rocky Linux | Ubuntu Server |
|---|---|---|
| 包管理 | yum / dnf(.rpm) | apt(.deb) |
| 默认防火墙 | firewalld | ufw |
| 内核版本 | 相对保守,稳定优先 | 较新,硬件兼容性好 |
| 生命周期 | 10年(CentOS Stream除外) | 5年(LTS版本) |
| 适用场景 | 金融、政务、传统企业 | 互联网、AI、容器化 |
我记得有一次帮客户迁移数据库服务器,对方坚持用Ubuntu 20.04。结果发现他们用的某国产数据库只提供rpm包……嗯,那两天光折腾依赖就花了半天。所以我的建议是:先搞清楚你的软件生态支持哪个发行版。
2.2 磁盘分区方案——别等出事了再后悔
磁盘分区这事,我见过太多惨案了。有人把根分区只分了20G,跑了一个月磁盘就满了;有人把/home分了500G,结果根分区不够用……
这里我给出三套经过实战检验的方案:
方案一:服务器通用分区(推荐)
/boot 1G # 引导分区,别太小
/ 50G # 根分区,系统核心
/var 100G # 日志、数据库、缓存
/usr 100G # 应用程序
/tmp 20G # 临时文件,独立分区防爆满
swap 8G # 交换分区,物理内存的1-2倍
/data 剩余空间 # 数据分区,业务数据放这里
为什么把/var单独分出来?我在项目中遇到过日志把根分区写满,导致系统无法启动的故障。从那以后,/var必须独立分区成了我的铁律。
方案二:LVM逻辑卷管理
如果你对灵活性要求高,用LVM。说白了就是可以动态调整分区大小,不用重新格式化。
/boot 1G # 不能放LVM里
vg_root 剩余空间 # 创建卷组
lv_root 50G
lv_var 100G
lv_usr 100G
lv_tmp 20G
lv_data 剩余空间
方案三:云服务器场景
云厂商一般给你一块系统盘+多块数据盘。我的做法是:
- 系统盘(40G-60G):只放操作系统和核心软件
- 数据盘(按需):挂载到/data或/opt,放业务数据
- 这样做的好处是:系统坏了直接重装,数据盘不受影响
2.3 最小化安装原则——少即是多
你想想看,一个系统装得越复杂,攻击面就越大,出问题的概率也越高。我见过有人装Linux选了「带GUI的服务器」,结果光图形界面就占了2G内存……
最小化安装的核心原则:
- 只装你需要的包,一个多余的都不要
- 不装GUI(除非你是桌面环境)
- 不装开发工具(gcc、make这些,除非你要编译)
- 不装不必要的服务(打印服务、蓝牙、Avahi等)
2.4 系统初始化配置——新装系统的「八件套」
系统装完了,别急着上线。先把下面这几件事做了,能省掉后面80%的麻烦。
2.4.1 关闭SELinux(或设为宽容模式)
SELinux是好东西,但说实话,大部分运维人员搞不定它的策略配置。我建议:
# 临时关闭
setenforce 0
# 永久关闭(修改配置文件)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 或者设为宽容模式(只记录不阻止)
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
2.4.2 配置防火墙
CentOS用firewalld,Ubuntu用ufw。我的习惯是:
# CentOS / Rocky Linux
systemctl stop firewalld
systemctl disable firewalld # 如果不用防火墙
# 或者只开放必要端口
firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
# Ubuntu
ufw allow 22/tcp
ufw allow 80/tcp
ufw enable
我个人习惯是先关掉防火墙,等所有服务配置好了再按需开启。不然调试的时候防火墙挡着,排查起来很痛苦。
2.4.3 配置网络
服务器一般用静态IP,别用DHCP。不然哪天IP变了,你连SSH都连不上。
# CentOS / Rocky Linux (NetworkManager)
nmcli con mod eth0 ipv4.addresses 192.168.1.100/24
nmcli con mod eth0 ipv4.gateway 192.168.1.1
nmcli con mod eth0 ipv4.dns "8.8.8.8 114.114.114.114"
nmcli con mod eth0 ipv4.method manual
nmcli con up eth0
# Ubuntu (netplan)
# 编辑 /etc/netplan/00-installer-config.yaml
network:
ethernets:
ens33:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
version: 2
2.4.4 修改主机名
# 临时修改
hostnamectl set-hostname web-server-01
# 永久修改(修改/etc/hostname)
echo "web-server-01" > /etc/hostname
# 别忘了修改/etc/hosts,不然有些服务会报错
echo "192.168.1.100 web-server-01" >> /etc/hosts
2.4.5 其他初始化操作
- 时间同步:安装chrony或ntp,确保服务器时间准确
- 配置yum/apt源:换成国内镜像(阿里云、清华、中科大)
- 创建普通用户:别直接用root,用sudo提权
- 配置SSH:禁用密码登录,改用密钥认证
# 创建用户并赋予sudo权限
useradd -m -s /bin/bash opsadmin
passwd opsadmin
usermod -aG wheel opsadmin # CentOS
# usermod -aG sudo opsadmin # Ubuntu
# SSH密钥认证
ssh-keygen -t rsa -b 4096
ssh-copy-id opsadmin@服务器IP
2.5 知识体系总览
下面这张图,是我梳理的Linux系统安装与初始化的核心流程。你可以把它当作一个检查清单:
这张图把整个流程串起来了。从发行版选择开始,到安装方式,再到最小化安装原则,最后落到三个核心动作:分区、初始化、安全加固。你照着这个顺序做,基本不会出大问题。
公众号:蓝海资料掘金营,微信deep3321