外观
3.1 系统更新与基础软件安装
约 872 字
服务器初始化
本页对应「三、操作步骤」的 3.1,完成系统更新与基础软件安装。返回上级:云服务器初始化配置说明。
前置条件
- 已用 root 或具备 sudo 权限的账号登录服务器,当前会话稳定且不会中途断开。
/etc/apt/sources.list或其.d目录中已配置可用的镜像源,能与镜像站正常通信。- 已确认变更窗口,允许中途因内核升级而重启;重启前业务不得对外提供服务。
- 磁盘根分区剩余空间不少于 2 GB,否则升级过程可能因解包失败而中断。
操作步骤
- 备份源列表与已安装包清单。回退时用包清单比对差异,可以判断是哪个包引入的问题,而不是靠回忆。
sudo cp /etc/apt/sources.list /root/sources.list.bak
dpkg --get-selections > /root/packages.before- 刷新索引并查看可升级项。重点看是否有大量包被标记为降级,出现降级通常意味着镜像源版本比当前系统旧。
sudo apt update
apt list --upgradable- 执行升级。非交互模式避免升级过程停在配置询问上;遇到配置文件冲突时保留本地版本,或先人工比对再覆盖,不要一律选择覆盖。
sudo DEBIAN_FRONTEND=noninteractive apt -y upgrade- 安装后续文档依赖的基础工具与自动安全更新组件。chrony 负责时间同步,ufw 与 fail2ban 负责网络边界,unattended-upgrades 负责长期补丁。
sudo apt -y install curl vim htop unzip rsync chrony ufw fail2ban unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades- 编辑
/etc/apt/apt.conf.d/50unattended-upgrades,限制自动更新的范围。只允许安全源,禁止自动重启,避免机器在无人值守时因内核更新自行重启。
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Remove-Unused-Dependencies "true";- 清理无用依赖并记录当前内核与工具版本。版本号要写入台账,后续排查兼容性问题时以这份记录为基准。
sudo apt -y autoremove --purge
uname -r
curl --version | head -n 1结果确认
apt list --upgradable输出为空,或仅剩需重启生效的内核包,说明安全更新已补齐。systemctl is-active unattended-upgrades返回 active,systemctl list-timers中可见 apt-daily-upgrade.timer 的下次执行时间。curl -sS -o /dev/null -w '%{http_code}\n' https://example.com返回 200,证明出网与 CA 证书链正常,后续申请证书不会因根证书缺失失败。dpkg -l ufw fail2ban chrony三项状态均为 ii,说明包已正确安装而非仅下载。chronyc tracking能输出参考源与偏移量,偏移在毫秒级属正常。
注意事项
- 内核升级后需执行
sudo systemctl reboot才生效,重启前确认业务未上线,并记录重启前后的uname -r值。 - 不要在同一次变更里跨发行版大版本升级,此类操作风险高、耗时长,应单独安排窗口并准备快照。
- 若使用内网镜像,升级前确认镜像已同步到目标版本,否则会出现“越升越旧”的依赖冲突。
- fail2ban 与 ufw 本步只安装不启用,规则统一在 3.3 配置,避免中途把自己挡在门外。
- 自动更新的日志位于
/var/log/unattended-upgrades/,上线后每周抽查一次,确认没有长期失败的更新项。