<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Selinux on Liangweidong's blog</title><link>https://liangweidonggood.github.io/tags/selinux/</link><description>Recent content in Selinux on Liangweidong's blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Sat, 15 Dec 2012 00:00:00 +0800</lastBuildDate><atom:link href="https://liangweidonggood.github.io/tags/selinux/index.xml" rel="self" type="application/rss+xml"/><item><title>CentOS 7 早期实践：最小化安装、yum 源、selinux 与密码救援</title><link>https://liangweidonggood.github.io/p/centos-7-zaoqi-zui-xiao-hua-an-zhuang/</link><pubDate>Sat, 15 Dec 2012 00:00:00 +0800</pubDate><guid>https://liangweidonggood.github.io/p/centos-7-zaoqi-zui-xiao-hua-an-zhuang/</guid><description>&lt;img src="https://liangweidonggood.github.io/p/centos-7-zaoqi-zui-xiao-hua-an-zhuang/image/cover.jpg" alt="Featured image of post CentOS 7 早期实践：最小化安装、yum 源、selinux 与密码救援" /&gt;&lt;h2 id="一为什么-2012-年要聊-centos-7"&gt;一、为什么 2012 年要聊 CentOS 7
&lt;/h2&gt;&lt;p&gt;严格说 CentOS 7.0 正式发布是 &lt;strong&gt;2014-07-07&lt;/strong&gt;，本文写于 2012-12-15，&lt;strong&gt;内容是基于 7.x 早期内测 / RHEL 7.0 GA（2014-06-10）的实操整理&lt;/strong&gt;。之所以放这个时间点，是因为当时国内大量运维在测试机器上尝鲜 CentOS 7 的 init 切换（systemd 取代 init）、&lt;code&gt;/etc/os-release&lt;/code&gt; 标准化等变化，到了 2014-07 正式发版后这些经验&lt;strong&gt;完全适用&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;CentOS 7 的&amp;quot;最小化安装&amp;quot;（Minimal Install）只给 ~200 个包，没有桌面、没有图形、连 &lt;code&gt;wget&lt;/code&gt; / &lt;code&gt;net-tools&lt;/code&gt; 都没有。第一次登录后第一件事往往是装上常用工具、配置国内 yum 源、关掉不需要的服务。本篇把这些零散动作整理成一份&amp;quot;上桌清单&amp;quot;。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;适用版本&lt;/strong&gt;：CentOS 7.0 ~ 7.9（2020-11 EOL，2024-06-30 进入 ELS 阶段仅安全更新）&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="二查-ip装-wget"&gt;二、查 IP、装 wget
&lt;/h2&gt;&lt;p&gt;最小化安装的机器没有 &lt;code&gt;ifconfig&lt;/code&gt;（&lt;code&gt;net-tools&lt;/code&gt; 没了），先用 &lt;code&gt;ip&lt;/code&gt; 命令看 IP：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ip addr
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;装 &lt;code&gt;wget&lt;/code&gt; 准备下载源：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum install -y wget
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="三配置国内-yum-源"&gt;三、配置国内 yum 源
&lt;/h2&gt;&lt;p&gt;最小化装的机器 yum 走的是 CentOS 官方源，国内外都慢。换国内源是标准动作。&lt;/p&gt;
&lt;h3 id="31-阿里云"&gt;3.1 阿里云
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 备份&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 阿里云&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum clean all &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; yum makecache
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="32-网易-163"&gt;3.2 网易 163
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rm -rf /etc/yum.repos.d/*
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum clean all &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; yum makecache
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="33-epel-源"&gt;3.3 EPEL 源
&lt;/h3&gt;&lt;p&gt;EPEL（Extra Packages for Enterprise Linux）是 CentOS 之外的常用源，装 &lt;code&gt;python-pip&lt;/code&gt; 之类要靠它：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum list &lt;span class="p"&gt;|&lt;/span&gt; grep epel-release
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum install -y epel-release
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum clean all &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; yum makecache
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;验证仓库：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum repolist enabled &lt;span class="c1"&gt;# 启用的仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum repolist all &lt;span class="c1"&gt;# 所有仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="四装常用工具"&gt;四、装常用工具
&lt;/h2&gt;&lt;p&gt;最小化安装默认没装的几个常用工具：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum install -y vim-enhanced &lt;span class="c1"&gt;# vim&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum install -y net-tools &lt;span class="c1"&gt;# ifconfig / netstat&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum install -y lsof &lt;span class="c1"&gt;# lsof，排查 deleted 但未释放的文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum install -y p7zip p7zip-plugins &lt;span class="c1"&gt;# 7z 解压&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="五关掉-firewalld--selinux--swap"&gt;五、关掉 firewalld / selinux / swap
&lt;/h2&gt;&lt;p&gt;容器化之前，传统 LAMP / LNMP 服务器的标准动作是关掉防火墙和 swap。&lt;strong&gt;注意&lt;/strong&gt;：如果你准备上 Kubernetes，&lt;strong&gt;swap 千万不能关&lt;/strong&gt;——kubelet 从 1.8 起会拒绝在启用 swap 的机器上启动（除非显式配置 &lt;code&gt;--fail-swap-on=false&lt;/code&gt;）。&lt;/p&gt;
&lt;h3 id="51-firewalld"&gt;5.1 firewalld
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;firewall-cmd --state
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl stop firewalld.service
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl disable firewalld.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="52-selinux"&gt;5.2 selinux
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 查当前状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;getenforce
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 临时关闭（重启失效）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;setenforce &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 永久关闭&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sed -ri &lt;span class="s1"&gt;&amp;#39;s/SELINUX=enforcing/SELINUX=disabled/&amp;#39;&lt;/span&gt; /etc/selinux/config
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="53-swap"&gt;5.3 swap
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 临时关&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;swapoff -a
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 永久关（注释 /etc/fstab 里所有含 swap 的行）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sed -ri &lt;span class="s1"&gt;&amp;#39;s/.*swap.*/#&amp;amp;/&amp;#39;&lt;/span&gt; /etc/fstab
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 想再开回来&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;swapon -a
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="六centos-7-忘记-root-密码的救援流程"&gt;六、CentOS 7 忘记 root 密码的救援流程
&lt;/h2&gt;&lt;p&gt;这是 2012-2015 那几年&lt;strong&gt;最高频&lt;/strong&gt;的运维求助场景。CentOS 7.9（2020-09 发布）的单用户模式救援流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;重启服务器&lt;/strong&gt;，开机引导时按 &lt;code&gt;e&lt;/code&gt; 进入编辑&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;找到 &lt;code&gt;linux16&lt;/code&gt;（早期版本是 &lt;code&gt;linux&lt;/code&gt;）开头的那一行，把 &lt;code&gt;ro&lt;/code&gt; 改成 &lt;code&gt;rw init=/sysroot/bin/sh&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;按 &lt;code&gt;Ctrl + x&lt;/code&gt;，用单用户模式启动&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;切到原系统：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chroot /sysroot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;改密码：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;passwd root
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;更新 SELinux 标签（&lt;strong&gt;重要，不执行可能登录失败&lt;/strong&gt;）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;touch /.autorelabel
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;退出：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;坑提醒&lt;/strong&gt;：第 6 步的 &lt;code&gt;/.autorelabel&lt;/code&gt; 在 SELinux 开启的环境下&lt;strong&gt;必须执行&lt;/strong&gt;；如果当时 &lt;code&gt;setenforce 0&lt;/code&gt; 临时关过 SELinux，可以跳过这一步。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="七装-docker-的早期姿势2015-2016-年"&gt;七、装 Docker 的早期姿势（2015-2016 年）
&lt;/h2&gt;&lt;p&gt;CentOS 7 早期装 Docker 还分两条路线：&lt;/p&gt;
&lt;h3 id="71-走-getdockercom-一键脚本"&gt;7.1 走 get.docker.com 一键脚本
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -sSL https://get.docker.com/ &lt;span class="p"&gt;|&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl start docker
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; docker
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个脚本在 2015-2017 年是&lt;strong&gt;事实标准&lt;/strong&gt;，但后来被官方移除了 &lt;code&gt;docker-compose&lt;/code&gt; 集成。&lt;/p&gt;
&lt;h3 id="72-走-yum-官方源"&gt;7.2 走 yum 官方源
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum install -y yum-utils device-mapper-persistent-data lvm2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum install docker-ce
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl start docker
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; docker
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo usermod -aG docker &amp;lt;your-user&amp;gt; &lt;span class="c1"&gt;# 免 sudo 用 docker&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;想指定老版本（如 &lt;code&gt;docker-ce-18.09.1&lt;/code&gt;）：&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum list docker-ce --showduplicates &lt;span class="p"&gt;|&lt;/span&gt; sort -r
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum install docker-ce-18.09.1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="八python-2-与-python-3-共存"&gt;八、Python 2 与 Python 3 共存
&lt;/h2&gt;&lt;p&gt;CentOS 7 默认 &lt;code&gt;python&lt;/code&gt; 指向 &lt;code&gt;python2.7&lt;/code&gt;，而 &lt;code&gt;yum&lt;/code&gt; / &lt;code&gt;firewalld&lt;/code&gt; 等系统工具&lt;strong&gt;强依赖 Python 2.7&lt;/strong&gt;，&lt;strong&gt;绝对不能卸载&lt;/strong&gt;。开发用 Python 3 的标准做法是源码编译一份 &lt;code&gt;/usr/local/python3&lt;/code&gt;，软链接 &lt;code&gt;python3&lt;/code&gt; 出去。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum groupinstall &lt;span class="s2"&gt;&amp;#34;Development Tools&amp;#34;&lt;/span&gt; -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum install -y openssl-devel bzip2-devel libffi-devel zlib-devel &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ncurses-devel sqlite-devel readline-devel tk-devel &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; gdbm-devel db4-devel libpcap-devel xz-devel
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tgz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar -zxvf Python-3.9.10.tgz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; Python-3.9.10
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./configure --enable-optimizations --prefix&lt;span class="o"&gt;=&lt;/span&gt;/usr/local/python3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;make altinstall
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ln -s /usr/local/python3/bin/python3 /usr/bin/python3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python3 -V
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;make altinstall&lt;/code&gt; 而不是 &lt;code&gt;make install&lt;/code&gt; 是为了不覆盖系统 &lt;code&gt;python&lt;/code&gt; 软链接——这点在 CentOS 7 上尤其重要。&lt;/p&gt;
&lt;h2 id="九ssh-允许-root-登录"&gt;九、SSH 允许 root 登录
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo vi /etc/ssh/sshd_config
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# PermitRootLogin yes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# PasswordAuthentication yes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo service sshd reload
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;生产环境强烈不推荐&lt;/strong&gt;开启 root 远程登录，应该走 &lt;code&gt;ssh-keygen&lt;/code&gt; + &lt;code&gt;~/.ssh/authorized_keys&lt;/code&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="十自动时间同步"&gt;十、自动时间同步
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum -y install ntpdate
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ntpdate -u pool.ntp.org
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 加 crontab&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;crontab -e
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;*/20 * * * * /usr/sbin/ntpdate pool.ntp.org &amp;gt; /dev/null 2&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;service crond reload
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;chrony&lt;/code&gt; 是 CentOS 7 默认装的，但 &lt;code&gt;ntpdate&lt;/code&gt; 在内网环境更省事。&lt;/p&gt;
&lt;h2 id="十一下一步"&gt;十一、下一步
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;想换更新的发行版（CentOS 7 已经在 2024-06-30 进入 ELS 阶段）→ 迁移到 &lt;strong&gt;Rocky Linux 9&lt;/strong&gt; 或 &lt;strong&gt;AlmaLinux 9&lt;/strong&gt;（API 兼容，迁移成本最低）&lt;/li&gt;
&lt;li&gt;想做远程批量装机 → 看 PXE + kickstart，本篇不展开&lt;/li&gt;
&lt;li&gt;想用 ELRepo 升级内核 → 见 &lt;code&gt;2015-03-15 CentOS 7 内核升级实战&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;想把单用户救援流程做成一键脚本 → 用 &lt;a class="link" href="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-working_with_the_grub_2_boot_loader" target="_blank" rel="noopener"
 &gt;Rescue Mode Automation&lt;/a&gt; 的 &lt;code&gt;grub2-setpassword&lt;/code&gt; + 自定义脚本&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://wiki.centos.org/Manuals/ReleaseNotes/CentOS7.1908" target="_blank" rel="noopener"
 &gt;CentOS 7.9 Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/" target="_blank" rel="noopener"
 &gt;Red Hat Enterprise Linux 7 System Administrator&amp;rsquo;s Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://developer.aliyun.com/mirror/centos" target="_blank" rel="noopener"
 &gt;阿里云 CentOS 镜像&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.fedoraproject.org/en-US/epel/" target="_blank" rel="noopener"
 &gt;EPEL 官网&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="2024-视角centos-7-已-eolrocky--alma-9-才是未来"&gt;2024 视角：CentOS 7 已 EOL，Rocky / Alma 9 才是&amp;quot;未来&amp;quot;
&lt;/h2&gt;&lt;p&gt;本文写于 &lt;strong&gt;2012-12-15&lt;/strong&gt;（实际是基于 2014-07 CentOS 7 GA 前的&amp;quot;早期内测&amp;quot;经验）。&lt;strong&gt;2024 视角下&lt;/strong&gt;：&lt;/p&gt;
&lt;h3 id="一centos-7-正式-eol-2024-06-30"&gt;一、CentOS 7 正式 EOL 2024-06-30
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2020-08-06&lt;/strong&gt;：CentOS 8 提前 EOL 公告，CentOS 7 延寿到 &lt;strong&gt;2024-06-30&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2024-06-30&lt;/strong&gt;：&lt;strong&gt;CentOS 7 正式 EOL&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2024-06-30 后&lt;/strong&gt;：进入 **ELS（Extended Lifecycle Support）**阶段，&lt;strong&gt;仅付费 Red Hat 客户能拿到安全更新&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2024-12-31&lt;/strong&gt;：CentOS 7 ELS 阶段结束（部分渠道可付费延长到 2026-06-30）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2024 视角下&lt;/strong&gt;：&lt;strong&gt;新项目绝对不要再装 CentOS 7&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="二centos-7--rocky--alma-9-迁移工具"&gt;二、CentOS 7 → Rocky / Alma 9 迁移工具
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;migrate2rocky&lt;/strong&gt;（Rocky Linux 官方）：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# CentOS 7/8 → Rocky Linux 9&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod +x migrate2rocky.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo bash migrate2rocky.sh -r
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;almalinux-deploy&lt;/strong&gt;（AlmaLinux 官方）：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install -y almalinux-deploy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo almalinux-deploy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;elevate&lt;/strong&gt;（CIQ 维护，&lt;strong&gt;CentOS 7 → Rocky Linux 8/9&lt;/strong&gt;）：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dnf install -y http://repo.almalinux.org/elevate/elevate-release-latest-el&lt;span class="k"&gt;$(&lt;/span&gt;rpm --eval %rhel&lt;span class="k"&gt;)&lt;/span&gt;.noarch.rpm
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dnf install -y leapp-upgrade leapp-data-almalinux
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;leapp upgrade
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="三centos-7-已消失的服务"&gt;三、CentOS 7 已消失的服务
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;ntpdate&lt;/code&gt; / &lt;code&gt;ntpd&lt;/code&gt;&lt;/strong&gt;：被 &lt;code&gt;chronyd&lt;/code&gt; 取代（CentOS 7 起就是）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;iptables&lt;/code&gt;（部分）&lt;/strong&gt;：被 &lt;code&gt;nftables&lt;/code&gt; 取代（CentOS 8 起）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;system-config-network-tui&lt;/code&gt;&lt;/strong&gt;：被 &lt;code&gt;nmtui&lt;/code&gt; 取代。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;setuptool&lt;/code&gt;&lt;/strong&gt;：被 &lt;code&gt;system-config-*&lt;/code&gt; 取代。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Python 2.7&lt;/strong&gt;：2020-01-01 EOL，&lt;strong&gt;不能装&lt;/strong&gt;（除非装到 docker 容器）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MySQL 5.x / MariaDB 5.5&lt;/strong&gt;：EOL 多年，&lt;strong&gt;不能装&lt;/strong&gt;（用 MySQL 8 / MariaDB 10.11）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="四centos-7-时代的救援模式在-9-已不适用"&gt;四、CentOS 7 时代的&amp;quot;救援模式&amp;quot;在 9 已不适用
&lt;/h3&gt;&lt;p&gt;本文给的&amp;quot;按 &lt;code&gt;e&lt;/code&gt; → 改 &lt;code&gt;ro&lt;/code&gt; 为 &lt;code&gt;rw init=/sysroot/bin/sh&lt;/code&gt;&amp;ldquo;流程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CentOS 9 / RHEL 9&lt;/strong&gt;：&lt;strong&gt;grub2 启动菜单&lt;/strong&gt;有所变化（按 &lt;code&gt;e&lt;/code&gt; 后&lt;strong&gt;多一步&lt;/strong&gt; BLSC 验证）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UEFI Secure Boot 默认开启&lt;/strong&gt;：单用户模式可能&lt;strong&gt;进不去&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2024 救援姿势&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法 1&lt;/strong&gt;：从 rescue CD / USB 启动（&lt;strong&gt;最稳&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法 2&lt;/strong&gt;：在云控制台用 &lt;strong&gt;VNC 救援连接&lt;/strong&gt;（阿里云 / 华为云 / AWS 都支持）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法 3&lt;/strong&gt;：临时关掉 SELinux：&lt;code&gt;setenforce 0&lt;/code&gt;（如果能进系统）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# CentOS 9 / RHEL 9 救援模式步骤&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 1. 引导菜单按 e 进入编辑&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 2. 找到 linux 开头那行，删掉 rhgb quiet&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 3. 末尾加 rd.break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 4. Ctrl+X 启动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount -o remount,rw /sysroot
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chroot /sysroot
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;passwd root
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;touch /.autorelabel
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="五centos-7--9-的主要-api-变化"&gt;五、CentOS 7 → 9 的&amp;quot;主要 API 变化&amp;rdquo;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Python 3.6 → 3.12&lt;/strong&gt;（CentOS 9 默认）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;systemd 219 → 252+&lt;/strong&gt;（大量新指令）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenSSH 7.4 → 8.x → 9.x&lt;/strong&gt;（强制 rsa-sha2-256/512，禁 DSA）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenSSL 1.0.2 → 3.0+&lt;/strong&gt;（默认安全级别提高）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GCC 4.8 → 11+&lt;/strong&gt;（C++17 / C++20 默认）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;glibc 2.17 → 2.34&lt;/strong&gt;（老二进制不能直接跑）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;firewalld 0.x → 1.x&lt;/strong&gt;（配置变化）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="六centos-7-的运维遗物etcrclocal"&gt;六、CentOS 7 的&amp;quot;运维遗物&amp;quot;——&lt;code&gt;/etc/rc.local&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;2012 那篇提到 CentOS 7 早期还支持 &lt;code&gt;rc.local&lt;/code&gt;。&lt;strong&gt;CentOS 9 已经移除&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;替代方案：&lt;strong&gt;systemd service&lt;/strong&gt;：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# /etc/systemd/system/my-startup.service&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[Unit]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;My Startup Script&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;After&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;network.target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[Service]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;Type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;oneshot&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;ExecStart&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;/usr/local/bin/my-startup.sh&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;RemainAfterExit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;yes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[Install]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;WantedBy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;multi-user.target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; my-startup.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="七centos-7-的-epel-源-2024-现状"&gt;七、CentOS 7 的 EPEL 源 2024 现状
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;EPEL 7 仓库&lt;/strong&gt;：&lt;strong&gt;2024-06-30 停止更新&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;EPEL 9 仓库&lt;/strong&gt;：&lt;strong&gt;仍在持续更新&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;迁 EPEL 配置&lt;/strong&gt;（迁到 Rocky / Alma 9 后自动适配）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;国内镜像&lt;/strong&gt;（aliyun / 清华）2024 仍在同步 EPEL 7（用于&amp;quot;历史项目&amp;quot;），但&lt;strong&gt;新装不要用&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="八2024-仍在跑-centos-7-的真实情况"&gt;八、2024 仍&amp;quot;在跑&amp;quot; CentOS 7 的真实情况
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;中国中小企业的&amp;quot;老服务器&amp;quot;&lt;/strong&gt;：2024 还有 30-40% 跑 CentOS 7。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;原因&lt;/strong&gt;：迁移成本 + 老应用兼容性 + 团队不熟悉 systemd 241+。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;风险&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;无安全更新&lt;/strong&gt;（2024-07 之后）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新软件不能装&lt;/strong&gt;（新版本需要 GLIBC 2.28+）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;容器运行时受限&lt;/strong&gt;（Docker 20.10+ 不支持 CentOS 7）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;建议&lt;/strong&gt;：用 &lt;strong&gt;&lt;code&gt;migrate2rocky&lt;/code&gt; 迁移到 Rocky Linux 9&lt;/strong&gt;——10 分钟搞定。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="九centos-stream争议中的未来"&gt;九、CentOS Stream：争议中的&amp;quot;未来&amp;quot;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CentOS Stream 8/9&lt;/strong&gt;（2021+）：&lt;strong&gt;RHEL 的&amp;quot;上游开发版&amp;quot;&lt;/strong&gt;——比 RHEL 早 1-2 个 minor 版本。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;优点&lt;/strong&gt;：&lt;strong&gt;永远&amp;quot;新&amp;quot;&lt;/strong&gt;，能用到 RHEL 还没 GA 的特性。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;缺点&lt;/strong&gt;：&lt;strong&gt;可能不稳定&lt;/strong&gt;（生产环境慎用）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2024 主流&lt;/strong&gt;：&lt;strong&gt;不用 CentOS Stream&lt;/strong&gt;，直接用 Rocky / Alma / Oracle。&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>