说实话,作为运维人员,我对Linux服务器的自动更新这件事真是又爱又恨。爱的是它能让系统保持最新安全状态,恨的是一个没配置好就可能半夜三更给你整出个生产事故来。上周我们一台Nginx服务器就因为自动更新后配置不兼容,差点让整个电商业务停摆…
为什么说自动更新不能简单开启就完事?
很多人以为在Ubuntu上简单sudo apt install unattended-upgrades
就高枕无忧了,其实这里面的水可深着呢。首先你得搞清楚——是只更新安全补丁,还是连软件版本一起更新?我就见过有团队把Unattended-Upgrade::Allowed-Origins
配置错了,结果业务依赖的PHP小版本被自动升级,导致整个网站报500错误。
生产环境推荐的配置方案
经过多次踩坑后,我现在给生产服务器配置自动更新会特别注意这几点:
- 分仓库更新:只启用安全更新仓库(
${distro}-security
),禁用其他仓库 - 设置黑名单:把关键服务如
nginx
,mysql
等加入Unattended-Upgrade::Package-Blacklist
- 邮件通知:配置
Unattended-Upgrade::Mail
接收更新报告 - 定时重启:通过
reboot.timer
设置在业务低峰期自动重启
# /etc/apt/apt.conf.d/50unattended-upgrades示例配置
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
// 谨慎添加其他仓库
};
Unattended-Upgrade::Package-Blacklist {
"nginx";
"mysql-server";
};
那些年我们踩过的坑
最惨的一次是某金融客户的CentOS服务器,自动更新时yum卡在了依赖解析,把磁盘IO直接打满,导致交易系统瘫痪。后来学乖了,现在都会先做yum makecache fast
更新元数据,再用yum --security update-minimal
仅安装关键安全更新。
你们呢?在配置Linux自动更新时遇到过什么奇葩问题?欢迎在评论区分享你的”血泪史”——毕竟,在运维这条路上,谁还没踩过几个坑呢?
评论