<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>Yusoon - ZBlog</title><link>https://blog.bee1001.com/</link><description>天下共石，吾独八斗!</description><item><title>Linux中避免rm -rf 误删操作</title><link>https://blog.bee1001.com/?id=42</link><description>&lt;h4 id=&quot;h4-linux-rm-rf-&quot;&gt;&lt;a name=&quot;Linux中避免rm -rf 误删操作&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;Linux中避免rm -rf 误删操作&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;cat &amp;gt; /etc/profile.d/safe_rm.sh &amp;lt;&amp;lt;'EOF'
safe_rm() {
    for p in &quot;$@&quot;; do
        if [[ &quot;$p&quot; == /* ]]; then
            echo -e &quot;\033[31m[安全拦截] 禁止删除绝对路径 / 开头的目录：$p\033[0m&quot;
            return 1
        fi
    done
    /bin/rm &quot;$@&quot;
}
alias rm='safe_rm'
EOF

chmod +x /etc/profile.d/safe_rm.sh
source /etc/profile.d/safe_rm.sh&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;它只判断一句话：&lt;br&gt;只要是以 / 开头的绝对路径，一律不让删！
&lt;h4 id=&quot;h4--rm-&quot;&gt;&lt;a name=&quot;想恢复原生 rm（随时取消）&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;想恢复原生 rm（随时取消）&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;rm -f /etc/profile.d/safe_rm.sh
unalias rm
source /etc/profile&lt;/code&gt;&lt;/pre&gt;</description><pubDate>Tue, 14 Apr 2026 16:24:39 +0800</pubDate></item><item><title>CentOS 上一键创建 2GB Swap 虚拟内存</title><link>https://blog.bee1001.com/?id=41</link><description>&lt;h4 id=&quot;h4-1-swap-2gb-&quot;&gt;&lt;a name=&quot;1. 创建 Swap 文件（2GB）&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;1. 创建 Swap 文件（2GB）&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;dd if=/dev/zero of=/swapfile bs=1M count=2048&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-2-&quot;&gt;&lt;a name=&quot;2. 设置权限（必须）&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;2. 设置权限（必须）&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;chmod 600 /swapfile&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-3-swap&quot;&gt;&lt;a name=&quot;3. 格式化为 Swap&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;3. 格式化为 Swap&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;mkswap /swapfile&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-4-swap&quot;&gt;&lt;a name=&quot;4. 启用 Swap&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;4. 启用 Swap&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;swapon /swapfile&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-5-&quot;&gt;&lt;a name=&quot;5. 开机自动挂载（永久生效）&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;5. 开机自动挂载（永久生效）&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;echo &quot;/swapfile none swap defaults 0 0&quot; &amp;gt;&amp;gt; /etc/fstab&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-6-&quot;&gt;&lt;a name=&quot;6. 查看结果&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;6. 查看结果&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;free -h&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;你会看到 Swap 从 0B 变成 2.0G，就成功了。&lt;/p&gt;
&lt;h4 id=&quot;h4-7-&quot;&gt;&lt;a name=&quot;7. 优化（建议执行）&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;7. 优化（建议执行）&lt;/h4&gt;&lt;p&gt;你的内存只有 2G，建议把 swappiness 调高点，让系统更愿意用 Swap 避免 OOM：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;vm.swappiness=60&quot; &amp;gt;&amp;gt; /etc/sysctl.conf
sysctl -p&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;最终效果&lt;br&gt;执行完后 free -h 会变成类似这样：
&lt;pre&gt;&lt;code&gt;plaintext
Mem:           2.0G        1.0G         89M        1.8M        888M        784M
Swap:          2.0G          0B        2.0G&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果需要调整swap大小，可以按一下操作&lt;/p&gt;
&lt;h4 id=&quot;h4--swap&quot;&gt;&lt;a name=&quot;一、先关闭当前 Swap&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;一、先关闭当前 Swap&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;swapoff /swapfile&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4--swap-&quot;&gt;&lt;a name=&quot;二、删除旧 Swap 文件&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;二、删除旧 Swap 文件&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;rm -f /swapfile&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4--swap&quot;&gt;&lt;a name=&quot;三、重新创建新大小的 Swap&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;三、重新创建新大小的 Swap&lt;/h4&gt;&lt;p&gt;重复上面的操作&lt;/p&gt;
</description><pubDate>Tue, 14 Apr 2026 14:23:37 +0800</pubDate></item><item><title>用acme.sh自动签发由阿里云托管域名的泛域名证书</title><link>https://blog.bee1001.com/?id=40</link><description>&lt;h4 id=&quot;h4--1-acme-sh-&quot;&gt;&lt;a name=&quot;步骤 1：安装 acme.sh（官方一键脚本）&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;步骤 1：安装 acme.sh（官方一键脚本）&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;# 安装
curl https://get.acme.sh | sh -s email=你的邮箱@example.com

# 让当前 shell 立即识别命令
source ~/.bashrc&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;安装完成后，acme.sh 位于 ~/.acme.sh/，并已自动创建 cron 任务。&lt;/p&gt;
&lt;h4 id=&quot;h4--2-dns-api-ram-&quot;&gt;&lt;a name=&quot;步骤 2：配置阿里云 DNS API 密钥（RAM 子用户）&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;步骤 2：配置阿里云 DNS API 密钥（RAM 子用户）&lt;/h4&gt;&lt;p&gt;1、登录阿里云控制台 → RAM → 用户 → 创建用户 → 勾选编程访问&lt;br&gt;2、权限策略：AliyunDNSFullAccess&lt;br&gt;3、拿到 AccessKey ID 和 AccessKey Secret
&lt;pre&gt;&lt;code&gt;# 写入全局环境变量（重启也生效）
echo 'export Ali_Key=&quot;LTAIxxxxxxxxxx&quot;' &amp;gt;&amp;gt; /etc/profile
echo 'export Ali_Secret=&quot;xxxxxxxxxxxxxxxxxxxxxxxxxxxx&quot;' &amp;gt;&amp;gt; /etc/profile
source /etc/profile&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4--3-dns-&quot;&gt;&lt;a name=&quot;步骤 3：签发泛域名证书（DNS 验证）&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;步骤 3：签发泛域名证书（DNS 验证）&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;acme.sh --issue --dns dns_ali -d example.com -d '*.example.com'&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;多域名时使用&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;acme.sh --issue --dns dns_ali \
  -d example.com \
  -d '*.example.com' \
  -d '*.child.example.com'&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&quot;h5-u8981u70B9&quot;&gt;&lt;a name=&quot;要点&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;要点&lt;/h5&gt;&lt;p&gt;1、每个 -d 只带一个域名&lt;br&gt;2、通配符必须用单引号包住，防止 shell 展开&lt;br&gt;3、可以混用普通域名 + 多个通配符，一张证书全覆盖&lt;br&gt;4、签发后所有域名会写进 SAN 字段，Nginx 里随便哪个 server_name 只要匹配其中一项就合法
&lt;p&gt;成功后会看到：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Cert success.
证书已保存在 ~/.acme.sh/example.com/&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4--4-nginx-&quot;&gt;&lt;a name=&quot;步骤 4：安装证书到 Nginx（统一路径）&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;步骤 4：安装证书到 Nginx（统一路径）&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;# 创建目录
mkdir -p /etc/nginx/ssl

# 安装并指定 reload 命令
acme.sh --install-cert -d example.com \
  --key-file       /etc/nginx/ssl/example.com.key \
  --fullchain-file /etc/nginx/ssl/fullchain.cer \
  --reloadcmd     &quot;nginx -s reload&quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;续期成功后自动复制新证书并重载 Nginx。&lt;br&gt;若/etc/nginx/ssl/目录下无.key文件，则重新运行命令。
&lt;h4 id=&quot;h4--5-3-&quot;&gt;&lt;a name=&quot;步骤 5：设置提前 3 天续期（全局生效）&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;步骤 5：设置提前 3 天续期（全局生效）&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;# 立即生效并写入配置
acme.sh --set-default-ca --server letsencrypt
acme.sh --cron --home ~/.acme.sh --days 3&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4--6-&quot;&gt;&lt;a name=&quot;步骤 6：验证自动续期逻辑&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;步骤 6：验证自动续期逻辑&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;# 手动模拟 cron 运行
acme.sh --cron --home ~/.acme.sh --days 3&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果证书剩余天数 &amp;gt; 3，提示 Skip；&lt;br&gt;如果 ≤ 3，会立即续期并重启 Nginx。
&lt;h4 id=&quot;h4--7-amp-&quot;&gt;&lt;a name=&quot;步骤 7：查看证书信息 &amp;amp; 剩余天数&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;步骤 7：查看证书信息 &amp;amp; 剩余天数&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;# 列表
acme.sh --list

# 详细
acme.sh --info -d example.com&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4--8-cron-&quot;&gt;&lt;a name=&quot;步骤 8：确认 cron 任务存在（默认已创建）&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;步骤 8：确认 cron 任务存在（默认已创建）&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;crontab -l&lt;/code&gt;&lt;/pre&gt;</description><pubDate>Fri, 17 Oct 2025 15:20:34 +0800</pubDate></item><item><title>在 Ubuntu 上安装 官方Docker</title><link>https://blog.bee1001.com/?id=39</link><description>&lt;p&gt;在 Ubuntu 上安装官方 Docker 的步骤如下：&lt;/p&gt;
&lt;h4 id=&quot;h4-1-&quot;&gt;&lt;a name=&quot;1. 卸载旧版本（如有）&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;1. 卸载旧版本（如有）&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;sudo apt-get remove docker docker-engine docker.io containerd runc&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-2-&quot;&gt;&lt;a name=&quot;2. 更新软件包索引并安装依赖&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;2. 更新软件包索引并安装依赖&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-3-docker-gpg-&quot;&gt;&lt;a name=&quot;3. 添加 Docker 官方 GPG 密钥&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;3. 添加 Docker 官方 GPG 密钥&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-4-docker-&quot;&gt;&lt;a name=&quot;4. 设置 Docker 仓库&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;4. 设置 Docker 仓库&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;echo \
  &quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable&quot; | sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-5-docker-&quot;&gt;&lt;a name=&quot;5. 安装 Docker 引擎&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;5. 安装 Docker 引擎&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果在 Ubuntu 上安装 Docker 时遇到 docker-ce 及相关软件包无法找到的问题，可能是由于软件源未正确配置或系统版本不兼容。以下是解决方案：&lt;/p&gt;
&lt;h5 id=&quot;h5-u89E3u51B3u65B9u6CD5&quot;&gt;&lt;a name=&quot;解决方法&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;解决方法&lt;/h5&gt;&lt;h5 id=&quot;h5-1-docker-&quot;&gt;&lt;a name=&quot;1. 确保已正确添加 Docker 官方源&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;1. 确保已正确添加 Docker 官方源&lt;/h5&gt;&lt;p&gt;运行以下命令检查是否已正确设置仓库：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo ls -l /etc/apt/sources.list.d/docker.list&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果文件不存在或内容为空，重新执行仓库设置命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
  &quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable&quot; | sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&quot;h5-2-&quot;&gt;&lt;a name=&quot;2. 更新软件包列表&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;2. 更新软件包列表&lt;/h5&gt;&lt;pre&gt;&lt;code&gt;sudo apt-get update&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&quot;h5-3-ubuntu-&quot;&gt;&lt;a name=&quot;3. 检查系统架构和 Ubuntu 版本&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;3. 检查系统架构和 Ubuntu 版本&lt;/h5&gt;&lt;p&gt;确认架构（通常为 amd64 或 arm64）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  dpkg --print-architecture&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;确认 Ubuntu 版本：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  lsb_release -cs&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果输出不是 Docker 支持的版本（如 jammy for Ubuntu 22.04），可能需要手动指定版本。例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  echo &quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable&quot; | sudo tee /etc/apt/sources.list.d/docker.list&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&quot;h5-4-deb-&quot;&gt;&lt;a name=&quot;4. 如果问题仍存在，尝试手动下载 .deb 包&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;4. 如果问题仍存在，尝试手动下载 .deb 包&lt;/h5&gt;&lt;p&gt;从 Docker 官网下载对应版本的 .deb 包并安装：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget https://download.docker.com/linux/ubuntu/dists/$(lsb_release -cs)/pool/stable/$(dpkg --print-architecture)/docker-ce_24.0.7-1~ubuntu.22.04~jammy_amd64.deb
sudo apt-get install ./docker-ce_*.deb&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;（注意替换版本号和路径）&lt;/p&gt;
&lt;p&gt;替代方案：使用 Docker 提供的便捷脚本&lt;br&gt;如果上述方法复杂，可以直接运行 Docker 官方的一键安装脚本：
&lt;pre&gt;&lt;code&gt;curl -fsSL https://get.docker.com | sudo sh&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-6-&quot;&gt;&lt;a name=&quot;6. 验证安装&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;6. 验证安装&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;sudo docker run hello-world&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果看到欢迎消息，说明安装成功。&lt;/p&gt;
&lt;h4 id=&quot;h4-7-docker-sudo-&quot;&gt;&lt;a name=&quot;7. （可选）添加用户到 docker 组（避免每次使用 sudo）&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;7. （可选）添加用户到 docker 组（避免每次使用 sudo）&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;sudo usermod -aG docker $USER
newgrp docker  # 立即生效，或重新登录&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-8-docker-&quot;&gt;&lt;a name=&quot;8. （可选）设置 Docker 开机自启&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;8. （可选）设置 Docker 开机自启&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;sudo systemctl enable docker.service
sudo systemctl enable containerd.service&lt;/code&gt;&lt;/pre&gt;</description><pubDate>Fri, 19 Sep 2025 14:53:09 +0800</pubDate></item><item><title>git强制回退版本</title><link>https://blog.bee1001.com/?id=38</link><description>&lt;h4 id=&quot;h4-u5F3Au5236u56DEu9000&quot;&gt;&lt;a name=&quot;强制回退&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;强制回退&lt;/h4&gt;&lt;p&gt;如果你已经切换到了正确的版本，但想要强制将当前分支重置到这个版本，可以使用git reset命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git reset --hard &amp;lt;commit-hash&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这个命令会将HEAD指针移动到指定的版本，并丢弃当前工作目录和暂存区的所有更改。&lt;/p&gt;
&lt;h4 id=&quot;h4-u63A8u9001u5230u8FDCu7A0Bu4ED3u5E93&quot;&gt;&lt;a name=&quot;推送到远程仓库&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;推送到远程仓库&lt;/h4&gt;&lt;p&gt;如果你想要将这个强制回退的版本推送到远程仓库，可以使用git push命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git push origin &amp;lt;branch-name&amp;gt; --force  # 如果需要推送到远端，则需要使用强制推送&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;使用–force选项可以覆盖远程仓库中的历史记录，但请谨慎使用，因为这可能会影响其他协作者的工作。&lt;/p&gt;
</description><pubDate>Wed, 30 Apr 2025 13:54:46 +0800</pubDate></item><item><title>CentOS系统-Linux上使用 Certbot工具申请和续签Let's Encrypt证书</title><link>https://blog.bee1001.com/?id=37</link><description>&lt;h3 id=&quot;h3--certbot&quot;&gt;&lt;a name=&quot;一、安装Certbot&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;一、安装Certbot&lt;/h3&gt;&lt;h4 id=&quot;h4-1-linux-certbot&quot;&gt;&lt;a name=&quot;1. 在Linux系统上安装Certbot&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;1. 在Linux系统上安装Certbot&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;sudo yum install certbot&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;h3--let-s-encrypt-&quot;&gt;&lt;a name=&quot;二、申请Let’s Encrypt证书&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;二、申请Let’s Encrypt证书&lt;/h3&gt;&lt;h4 id=&quot;h4-1-web-&quot;&gt;&lt;a name=&quot;1. 使用Web服务器插件申请证书&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;1. 使用Web服务器插件申请证书&lt;/h4&gt;&lt;p&gt;Certbot提供了多种插件，用于与不同的Web服务器集成。以下是一些常见的Web服务器插件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo certbot --nginx certonly&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;运行命令后，Certbot会自动检测你的Nginx配置文件，并提示你选择要保护的域名。完成域名验证后，Certbot会自动更新Nginx配置文件，添加SSL证书和相关配置。&lt;/p&gt;
&lt;h4 id=&quot;h4-2-&quot;&gt;&lt;a name=&quot;2. 手动申请证书&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;2. 手动申请证书&lt;/h4&gt;&lt;p&gt;如果你不想使用插件，也可以手动申请证书：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo certbot certonly&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;运行命令后，Certbot会提示你输入一系列信息，包括域名、邮箱等。完成输入后，Certbot会通过ACME协议与Let’s Encrypt服务器通信，完成域名验证。&lt;/p&gt;
&lt;h4 id=&quot;h4--&quot;&gt;&lt;a name=&quot;域名验证方式：&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;域名验证方式：&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;HTTP验证：&lt;/strong&gt;Certbot会在你的Web服务器上创建一个临时文件，Let’s Encrypt服务器会访问该文件以验证域名所有权。&lt;br&gt;&lt;strong&gt;DNS验证：&lt;/strong&gt;你可以在DNS记录中添加特定的TXT记录，Let’s Encrypt服务器会检查该记录以验证域名所有权。&lt;/p&gt;
&lt;h3 id=&quot;h3--&quot;&gt;&lt;a name=&quot;三、配置自动续签&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;三、配置自动续签&lt;/h3&gt;&lt;p&gt;Let’s Encrypt证书的有效期为90天，因此需要配置自动续签功能，以确保证书始终有效。&lt;/p&gt;
&lt;h4 id=&quot;h4-1-&quot;&gt;&lt;a name=&quot;1. 测试自动续签&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;1. 测试自动续签&lt;/h4&gt;&lt;p&gt;在配置自动续签之前，可以先手动测试续签功能：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo certbot renew --dry-run&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果测试成功，表示你的系统已经具备自动续签的能力。&lt;/p&gt;
&lt;h4 id=&quot;h4-2-&quot;&gt;&lt;a name=&quot;2. 设置定时任务&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;2. 设置定时任务&lt;/h4&gt;&lt;p&gt;为了实现自动续签，需要在系统中设置定时任务（Cron Job）。&lt;br&gt;在CentOS系统上设置Cron Job：
&lt;pre&gt;&lt;code&gt;# 打开Cron配置文件：
sudo crontab -e
# 添加以下内容：
0 2 * * * /usr/bin/certbot renew --quiet
# 这表示每天凌晨2点运行certbot renew --quiet命令&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Cron Job的语法格式为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;* * * * * command_to_be_executed
- - - - -
| | | | |
| | | | +----- 星期几 (0 - 7) (星期天为0或7)
| | | +------- 月份 (1 - 12)
| | +--------- 日期 (1 - 31)
| +----------- 小时 (0 - 23)
+------------- 分钟 (0 - 59)&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;p&gt;要将 certbot 的自动续签任务从每天运行一次修改为每90天运行一次，可以通过以下方法实现。由于 cron 本身不支持直接设置“每90天”这样的周期，我们需要借助一些额外的逻辑来实现。&lt;br&gt;以下是实现每90天运行一次 certbot renew 的方法：
&lt;h4 id=&quot;h4-1-&quot;&gt;&lt;a name=&quot;1. 创建一个脚本&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;1. 创建一个脚本&lt;/h4&gt;&lt;p&gt;创建一个脚本文件，例如 certbot_renew.sh，并写入以下内容：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/bash

# 设置任务的最后运行时间文件
LAST_RUN_FILE=&quot;/var/log/certbot_last_run.txt&quot;

# 获取当前日期
CURRENT_DATE=$(date +%s)

# 如果文件不存在，初始化为当前日期
if [ ! -f &quot;$LAST_RUN_FILE&quot; ]; then
    echo &quot;$CURRENT_DATE&quot; &amp;gt; &quot;$LAST_RUN_FILE&quot;
fi

# 获取上次运行的日期（以秒为单位）
LAST_RUN_DATE=$(cat &quot;$LAST_RUN_FILE&quot;)

# 计算两个日期之间的天数差（单位：秒）
DATE_DIFF=$((CURRENT_DATE - LAST_RUN_DATE))

# 如果天数差大于或等于90天，则执行任务并更新日期
if [ &quot;$DATE_DIFF&quot; -ge $((90 * 86400)) ]; then
    # 执行 Certbot 续签任务
    /usr/bin/certbot renew --quiet

    # 更新最后运行日期
    echo &quot;$CURRENT_DATE&quot; &amp;gt; &quot;$LAST_RUN_FILE&quot;
fi&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-2-&quot;&gt;&lt;a name=&quot;2. 设置脚本的可执行权限&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;2. 设置脚本的可执行权限&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;chmod +x certbot_renew.sh&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-3-cron&quot;&gt;&lt;a name=&quot;3. 添加到 cron&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;3. 添加到 cron&lt;/h4&gt;&lt;p&gt;将该脚本添加到 cron 中，使其每天运行一次。编辑 cron 任务：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;crontab -e&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;添加以下内容：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;0 2 * * * /path/to/certbot_renew.sh&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;这表示每天凌晨2点运行该脚本。&lt;/li&gt;&lt;li&gt;脚本会检查上次运行的时间，如果距离上次运行时间超过90天，则执行 certbot renew 命令并更新时间。&lt;/li&gt;&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;h3--&quot;&gt;&lt;a name=&quot;四、验证证书状态&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;四、验证证书状态&lt;/h3&gt;&lt;h4 id=&quot;h4-1-&quot;&gt;&lt;a name=&quot;1. 检查证书状态&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;1. 检查证书状态&lt;/h4&gt;&lt;p&gt;你可以使用以下命令检查证书的状态：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo certbot certificates&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;该命令会列出所有已安装的证书及其状态，包括有效期、是否已自动续签等信息。&lt;/p&gt;
&lt;h4 id=&quot;h4-2-web-&quot;&gt;&lt;a name=&quot;2. 检查Web服务器配置&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;2. 检查Web服务器配置&lt;/h4&gt;&lt;p&gt;在证书更新后，确保Web服务器正确加载了新的证书。可以通过访问你的网站并查看浏览器的安全提示来验证证书是否有效。&lt;/p&gt;
&lt;h3 id=&quot;h3--&quot;&gt;&lt;a name=&quot;五、注意事项&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;五、注意事项&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;域名验证：&lt;/strong&gt;在申请证书时，确保你的域名已经正确解析到你的服务器。如果域名解析有问题，Let’s Encrypt无法完成验证。&lt;br&gt;&lt;strong&gt;防火墙设置：&lt;/strong&gt;确保你的服务器防火墙允许Let’s Encrypt服务器访问你的域名用于验证（通常是80端口或443端口）。&lt;br&gt;&lt;strong&gt;备份配置文件：&lt;/strong&gt;在操作过程中，建议备份你的Web服务器配置文件，以便在出现问题时可以快速恢复。&lt;/p&gt;
</description><pubDate>Mon, 07 Apr 2025 11:25:34 +0800</pubDate></item><item><title>华为云Huawei Cloud EulerOS 2.0 安装 docker-ce</title><link>https://blog.bee1001.com/?id=36</link><description>&lt;h4 id=&quot;h4-1-docker-yum-yum-docker-&quot;&gt;&lt;a name=&quot;1、将Docker的yum仓库添加到系统中，以便通过yum包管理器安装Docker。&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;1、将Docker的yum仓库添加到系统中，以便通过yum包管理器安装Docker。&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;yum-config-manager --add-repo https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-2-sed-releasever-8-centos-8-&quot;&gt;&lt;a name=&quot;2、使用sed命令将$releasever替换为8，这样可以确保使用CentOS 8的仓库配置。&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;2、使用sed命令将$releasever替换为8，这样可以确保使用CentOS 8的仓库配置。&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;sed -i 's/\$releasever/8/g' /etc/yum.repos.d/docker-ce.repo&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-3-download-docker-com-repo-huaweicloud-com-docker-ce-docker-&quot;&gt;&lt;a name=&quot;3、将仓库地址中的download.docker.com替换为repo.huaweicloud.com/docker-ce，以确保使用华为云的Docker仓库。&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;3、将仓库地址中的download.docker.com替换为repo.huaweicloud.com/docker-ce，以确保使用华为云的Docker仓库。&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;sed -i 's+download.docker.com+repo.huaweicloud.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-4-yum-&quot;&gt;&lt;a name=&quot;4、更新yum缓存，以便系统可以识别并获取新的软件包信息。&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;4、更新yum缓存，以便系统可以识别并获取新的软件包信息。&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;yum makecache&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-5-dnf-dandified-yum-&quot;&gt;&lt;a name=&quot;5、清理dnf（Dandified YUM）包管理器的缓存。&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;5、清理dnf（Dandified YUM）包管理器的缓存。&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;dnf clean all&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-6-dnf-&quot;&gt;&lt;a name=&quot;6、更新dnf缓存，以确保系统可以识别并获取新的软件包信息。&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;6、更新dnf缓存，以确保系统可以识别并获取新的软件包信息。&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;dnf makecache&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-7-dnf-docker-&quot;&gt;&lt;a name=&quot;7、使用dnf包管理器安装Docker容器引擎。&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;7、使用dnf包管理器安装Docker容器引擎。&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;dnf -y install docker-ce&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-8-docker-&quot;&gt;&lt;a name=&quot;8、启动 Docker 服务。&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;8、启动 Docker 服务。&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;systemctl start docker&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-9-docker-&quot;&gt;&lt;a name=&quot;9、查看 Docker 服务的状态。&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;9、查看 Docker 服务的状态。&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;systemctl status docker&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-10-docker-&quot;&gt;&lt;a name=&quot;10、设置 Docker 服务开机自启。&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;10、设置 Docker 服务开机自启。&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;systemctl enable docker&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-11-docker-hello-world-docker-&quot;&gt;&lt;a name=&quot;11、行一个简单的Docker容器（hello-world）以验证Docker是否正确安装和配置。&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;11、行一个简单的Docker容器（hello-world）以验证Docker是否正确安装和配置。&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;docker run hello-world&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4-12-docker-&quot;&gt;&lt;a name=&quot;12、列出本地已经下载的 Docker 镜像。&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;12、列出本地已经下载的 Docker 镜像。&lt;/h4&gt;&lt;pre&gt;&lt;code&gt;docker images&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;最后如果在镜像列表里面能看到hello-world，docker就是安装成功了~&lt;/p&gt;
</description><pubDate>Wed, 23 Oct 2024 16:51:20 +0800</pubDate></item><item><title>CentOS上安装FirewallD</title><link>https://blog.bee1001.com/?id=35</link><description>&lt;h4 id=&quot;h4--firewalld-&quot;&gt;&lt;a name=&quot;安装FirewallD：&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;安装FirewallD：&lt;/h4&gt;&lt;p&gt;如果你的系统上还没有安装FirewallD，你可以使用以下命令来安装它：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bash
sudo yum install firewalld -y&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4--firewalld-&quot;&gt;&lt;a name=&quot;启动FirewallD服务：&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;启动FirewallD服务：&lt;/h4&gt;&lt;p&gt;使用以下命令来启动FirewallD服务：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bash
sudo systemctl start firewalld&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4--firewalld-&quot;&gt;&lt;a name=&quot;设置FirewallD开机自启：&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;设置FirewallD开机自启：&lt;/h4&gt;&lt;p&gt;如果你希望FirewallD在系统启动时自动启动，可以使用以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bash
sudo systemctl enable firewalld&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4--firewalld-&quot;&gt;&lt;a name=&quot;检查FirewallD服务状态：&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;检查FirewallD服务状态：&lt;/h4&gt;&lt;p&gt;使用以下命令来检查FirewallD服务的状态，确保它正在运行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bash
sudo systemctl status firewalld&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4--firewalld-&quot;&gt;&lt;a name=&quot;查看FirewallD版本：&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;查看FirewallD版本：&lt;/h4&gt;&lt;p&gt;如果你需要确认安装的FirewallD版本，可以使用以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bash
firewall-cmd --version&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4--firewalld-&quot;&gt;&lt;a name=&quot;重新加载FirewallD配置：&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;重新加载FirewallD配置：&lt;/h4&gt;&lt;p&gt;如果你在配置规则后需要重新加载FirewallD，可以使用以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bash
sudo firewall-cmd --reload&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4--&quot;&gt;&lt;a name=&quot;开放或关闭端口：&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;开放或关闭端口：&lt;/h4&gt;&lt;p&gt;你可以通过firewall-cmd命令来开放或关闭端口。例如，开放端口80和443：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bash
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
sudo firewall-cmd --reload&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;h4--&quot;&gt;&lt;a name=&quot;查看开放的端口：&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;查看开放的端口：&lt;/h4&gt;&lt;p&gt;要查看当前开放的端口，可以使用：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bash
sudo firewall-cmd --list-all&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;确保在执行这些命令时具有相应的权限，或者使用sudo来获取必要的权限。如果你在启动FirewallD时遇到任何问题，可以查看系统日志以获取错误信息，或者搜索相关的错误信息来找到解决方案。&lt;/p&gt;
</description><pubDate>Tue, 22 Oct 2024 15:19:43 +0800</pubDate></item><item><title>Linux操作系统之Docker、nginx安装</title><link>https://blog.bee1001.com/?id=34</link><description>&lt;h2 id=&quot;h2-docker-&quot;&gt;&lt;a name=&quot;Docker安装&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;Docker安装&lt;/h2&gt;&lt;hr&gt;
&lt;p&gt;不同操作系统的服务器安装大同小异，这里以 CentOS 为例。&lt;/p&gt;
&lt;h3 id=&quot;h3--&quot;&gt;&lt;a name=&quot;第一步：移除旧版本&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;第一步：移除旧版本&lt;/h3&gt;&lt;p&gt;为确保本次安装是全新安装，需要先移除已经安装的旧版本。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo yum remove -y docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;h3--&quot;&gt;&lt;a name=&quot;第二步：设置仓库&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;第二步：设置仓库&lt;/h3&gt;&lt;p&gt;安装之前，需要设置docker仓库。配置之后，你可以从存储库中安装和更新docker。这里借助 yum-utils 工具包提供的 yum-config-manager 命令实现配置。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;h3--&quot;&gt;&lt;a name=&quot;第三步：安装&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;第三步：安装&lt;/h3&gt;&lt;p&gt;安装docker、containerd、以及docker-compose工具&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;h3--&quot;&gt;&lt;a name=&quot;第四步：启动&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;第四步：启动&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;sudo systemctl start docker&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;h3--&quot;&gt;&lt;a name=&quot;第五步：测试&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;第五步：测试&lt;/h3&gt;&lt;p&gt;执行下面的命令，若出现docker信息，则表示安装成功&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo docker info&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;h3--&quot;&gt;&lt;a name=&quot;第六步：配置自启动&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;第六步：配置自启动&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;sudo systemctl enable docker&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;h3--docker-&quot;&gt;&lt;a name=&quot;第七步：Docker命令补全&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;第七步：Docker命令补全&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;sudo yum install -y bash-completion&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;
&lt;br&gt;

&lt;h1 id=&quot;h1-nginx-&quot;&gt;&lt;a name=&quot;nginx安装&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;nginx安装&lt;/h1&gt;&lt;h3 id=&quot;h3-u4E0Bu8F7Du5B89u88C5u5305u5E76u5B89u88C5&quot;&gt;&lt;a name=&quot;下载安装包并安装&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;下载安装包并安装&lt;/h3&gt;&lt;p&gt;因编译安装nginx在服务器上可能存在组件库缺失导致无法成功安装，这里可使用lnmp安装包来进行一键安装。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo wget https://soft.lnmp.com/lnmp/lnmp2.1.tar.gz -O lnmp2.1.tar.gz &amp;amp;&amp;amp; tar zxf lnmp2.1.tar.gz &amp;amp;&amp;amp; cd lnmp2.1 &amp;amp;&amp;amp; ./install.sh nginx&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果提示wget未找到，执行下面的命令后在进行下载安装即可&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo yum install -y wget&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;
&lt;br&gt;

&lt;h1 id=&quot;h1-docker-&quot;&gt;&lt;a name=&quot;docker镜像拉取超时&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;docker镜像拉取超时&lt;/h1&gt;&lt;p&gt;出现如下错误时，表示 docker 镜像拉取超时。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;error pulling image configuration: download failed after attempts-6: dial tcp 104.18.124.25:443: i/o timeout&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;可以通过修改 docker 镜像地址解决:&lt;/p&gt;
&lt;h3 id=&quot;h3--&quot;&gt;&lt;a name=&quot;第一步：获取镜像加速器地址&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;第一步：获取镜像加速器地址&lt;/h3&gt;&lt;p&gt;这里可使用&lt;code&gt;https://t13qusvc.mirror.aliyuncs.com&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&quot;h3--etc-docker-daemon-json-&quot;&gt;&lt;a name=&quot;第二步：编辑文件 /etc/docker/daemon.json 文件&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;第二步：编辑文件 /etc/docker/daemon.json 文件&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;vim /etc/docker/daemon.json&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;加入以下内容并保存文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
    &quot;registry-mirrors&quot;: [&quot;https://t13qusvc.mirror.aliyuncs.com&quot;]
}&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;h3--docker-&quot;&gt;&lt;a name=&quot;第三步：重启docker服务&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;第三步：重启docker服务&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;systemctl daemon-reload
systemctl restart docker&lt;/code&gt;&lt;/pre&gt;</description><pubDate>Mon, 14 Oct 2024 16:53:17 +0800</pubDate></item><item><title>Linux安装safe-rm防止误删文件或目录</title><link>https://blog.bee1001.com/?id=33</link><description>&lt;p&gt;在Linux系统中安装safe-rm工具可以有效地防止误删除重要文件或目录。以下是安装safe-rm的步骤：&lt;/p&gt;
&lt;h5 id=&quot;h5-1-safe-rm-&quot;&gt;&lt;a name=&quot;1、下载safe-rm：&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;1、下载safe-rm：&lt;/h5&gt;&lt;p&gt;使用wget命令从官方网站下载safe-rm的压缩包。例如，下载0.12版本的命令为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget https://launchpad.net/safe-rm/trunk/0.12/+download/safe-rm-0.12.tar.gz&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&quot;h5-2-&quot;&gt;&lt;a name=&quot;2、解压压缩包：&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;2、解压压缩包：&lt;/h5&gt;&lt;p&gt;将下载的压缩包解压到/usr/src/目录下。使用以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tar xf safe-rm-0.12.tar.gz -C /usr/src&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&quot;h5-3-safe-rm-usr-local-bin-&quot;&gt;&lt;a name=&quot;3、拷贝safe-rm到/usr/local/bin/目录：&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;3、拷贝safe-rm到/usr/local/bin/目录：&lt;/h5&gt;&lt;p&gt;将safe-rm命令拷贝到/usr/local/bin/目录下，并重命名为rm以替换默认的rm命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /usr/src/safe-rm-0.12/
cp safe-rm /usr/local/bin/rm&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&quot;h5-4-&quot;&gt;&lt;a name=&quot;4、添加环境变量：&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;4、添加环境变量：&lt;/h5&gt;&lt;p&gt;为了让所有用户都能使用safe-rm，需要添加环境变量。编辑/etc/profile文件，添加以下内容：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export PATH=$PATH:/usr/local/bin&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&quot;h5-5-code-source-etc-profile-code-&quot;&gt;&lt;a name=&quot;5、然后，使用&lt;code&gt;source /etc/profile&lt;/code&gt;命令使更改生效。&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;5、然后，使用&lt;code&gt;source /etc/profile&lt;/code&gt;命令使更改生效。&lt;/h5&gt;&lt;pre&gt;&lt;code&gt;source /etc/profile&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&quot;h5-6-safe-rm-&quot;&gt;&lt;a name=&quot;6、配置safe-rm：&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;6、配置safe-rm：&lt;/h5&gt;&lt;p&gt;在/etc/目录下创建safe-rm.conf配置文件，列出你想要保护的目录和文件。例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/
/*
/test&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这样，即使使用rm -rf命令也无法删除这些受保护的文件或目录。&lt;/p&gt;
&lt;h5 id=&quot;h5-7-safe-rm-&quot;&gt;&lt;a name=&quot;7、测试safe-rm：&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;7、测试safe-rm：&lt;/h5&gt;&lt;p&gt;创建一个测试文件，并尝试使用rm -rf命令删除它。如果safe-rm配置正确，它将显示跳过删除的提示：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rm -rf /test
safe-rm: skipping /test&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;请注意，如果你的系统中已经安装了safe-rm并且有更高版本，你可以下载并安装最新版本。另外，确保在进行这些操作时具有相应的权限，通常需要root权限。&lt;/p&gt;
&lt;h5 id=&quot;h5-8-&quot;&gt;&lt;a name=&quot;8、强制删除&quot; class=&quot;reference-link&quot; href=&quot;#&quot;&gt;&lt;/a&gt;&lt;span class=&quot;header-link octicon octicon-link&quot;&gt;&lt;/span&gt;8、强制删除&lt;/h5&gt;&lt;p&gt;如果您已经配置了safe-rm.conf文件，并且现在想要删除之前受保护的文件或目录，但发现无法删除，您可以尝试以下方法：&lt;/p&gt;
&lt;p&gt;系统的rm命令位于/bin/目录下，而safe-rm可能会创建一个软链接或别名覆盖它。您可以通过调用/bin/rm来绕过safe-rm的保护，例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/bin/rm -rf /test&lt;/code&gt;&lt;/pre&gt;</description><pubDate>Fri, 11 Oct 2024 13:55:37 +0800</pubDate></item></channel></rss>