Linux 发行版选型与系统初始化实践

新项目立项时,第一个要拍板的技术决策往往不是中间件,而是服务器操作系统选什么。这个选择会影响后面两三年里所有服务的部署方式、排障手段和团队的知识积累。分享一下我这边沉淀下来的选型逻辑和初始化流程。

一、发行版选型:先看业务形态

Linux 发行版分两大主流派系,国内生产环境基本只在这两系里选:

派系 代表发行版 包管理 典型场景
RedHat 系 RHEL、CentOS、Rocky Linux、AlmaLinux rpm + yum/dnf 金融、运营商、政企等传统企业,占比最高
Debian 系 Debian、Ubuntu Server deb + apt 互联网公司、云原生/K8s 生态

选型上我的判断标准有两条:

  1. 团队熟悉度优先。维护成本里最贵的不是软件授权,是团队踩坑经验的积累。上一套系统工程师熟的发行版,比”据说更好”的陌生发行版值钱得多。
  2. 看未来的支持周期。CentOS 8 提前停服、CentOS 7 也在 2024 年走到尽头后,新项目我会优先 Rocky Linux / AlmaLinux(RHEL 的二进制兼容替代),存量机器逐步规划迁移;云上新建的容器化集群则倾向 Ubuntu Server,K8s 生态对 Debian 系的适配更积极。

实际对比中容易踩的差异点记一下:

对比项 RedHat 系 Debian 系
装软件 yum install nginx apt install nginx
服务管理 systemctl systemctl
网络配置 /etc/sysconfig/network-scripts/ /etc/netplan/
防火墙 firewalld ufw
SELinux 默认开启(坑多,要主动处理) 默认 AppArmor

国产化环境(政企信创)还会遇到 openEuler、银河麒麟、统信 UOS、龙蜥等,基本都是基于上述两系衍生,包管理习惯可以平移,主要是要提前确认依赖软件的兼容性。

二、装完系统先做这几件事

新机器到手,我按“四件套”顺序初始化:主机名 → 时间 → 源 → 加固

1. 主机名规范

主机名不是随便起的,要让人一眼看懂这台机器是干什么的。我这边用的规范是 业务-环境-编号

1
2
3
4
5
6
7
# 示例:商品服务生产第 3 台 / MySQL 测试库第 1 台
goods-prod-03
mysql-test-01

# 查看/修改主机名
hostname # 查看当前主机名
hostnamectl set-hostname mysql-test-01 # 永久修改(写入 /etc/hostname)

2. 时间同步

时间不同步是生产事故的高发元凶——日志对不上、证书校验失败、分布式事务错乱都跟它有关。初始化时直接用 chrony 指向国内 NTP 源:

1
2
3
4
5
timedatectl set-timezone Asia/Shanghai   # 时区必须设对
hwclock -w # 系统时间同步给硬件时间

# 确认时间同步状态
timedatectl

顺手养成记录时间戳的习惯,备份文件的命名里带时间,恢复时才知道用哪份:

1
2
TS=$(date +%Y%m%d_%H%M%S)
cp /etc/nginx/nginx.conf /backup/nginx.conf_${TS}

3. 更换软件源

海外官方源在国内拉包又慢又容易超时,装机后第一件事就是把源切到国内镜像。以阿里云为例,RedHat 系:

1
2
3
4
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/CentOS-*.repo /etc/yum.repos.d/bak/
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all && yum makecache

Debian 系(Ubuntu 22.04 举例):

1
2
3
4
cp /etc/apt/sources.list /etc/apt/sources.list.bak
sed -i 's|http://archive.ubuntu.com|http://mirrors.aliyun.com|g' /etc/apt/sources.list
sed -i 's|http://security.ubuntu.com|http://mirrors.aliyun.com|g' /etc/apt/sources.list
apt update

4. 内核/版本确认

接手存量机器时第一件事永远是确认系统版本,判断后续命令兼容性:

1
2
3
uname -r                 # 当前运行内核(看 el7/el8 后缀判断系)
cat /etc/redhat-release # 发行版版本
rpm -qa | grep kernel # 装了几个内核(升级后清理旧内核用)

三、初始化检查清单(贴机房/贴云主机都适用)

这套清单我每次装机都会过一遍,既是操作记录也是交接文档:

  • 主机名符合 业务-环境-编号 规范
  • 时区 Asia/Shanghai、时间同步正常(timedatectl 确认)
  • 软件源已切换国内镜像、makecache 通过
  • SSH 已加固(密钥登录、禁 root 直登、改端口)——详见网络加固那篇
  • 防火墙按业务最小放行
  • 常规目录已按规范预建(/data/backup 等)

小结

发行版选型没有绝对最优,只有“团队能长期维护”和“生命周期内不踩停服坑”这两个硬条件;初始化流程固定成清单后,新机器从到手到可交付基本控制在半小时内,也为后面所有的故障排查打好了基线。