<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>白鲸</title>
  
  
  <link href="https://blog.helijike.eu.org/atom.xml" rel="self"/>
  
  <link href="https://blog.helijike.eu.org/"/>
  <updated>2026-06-27T11:37:37.241Z</updated>
  <id>https://blog.helijike.eu.org/</id>
  
  <author>
    <name>鲸落</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>OpenClaw 基础使用流程（新手极简版）</title>
    <link href="https://blog.helijike.eu.org/posts/openclaw-basic-guide.html"/>
    <id>https://blog.helijike.eu.org/posts/openclaw-basic-guide.html</id>
    <published>2026-06-27T11:40:00.000Z</published>
    <updated>2026-06-27T11:37:37.241Z</updated>
    
    <content type="html"><![CDATA[<h1 id="OpenClaw-基础使用流程（新手极简版）"><a href="#OpenClaw-基础使用流程（新手极简版）" class="headerlink" title="OpenClaw 基础使用流程（新手极简版）"></a>OpenClaw 基础使用流程（新手极简版）</h1><p>一份去繁就简的 OpenClaw 开箱指南，只保留最核心、最不踩坑的操作步骤。</p><hr><h2 id="🟢-第一步：安装"><a href="#🟢-第一步：安装" class="headerlink" title="🟢 第一步：安装"></a>🟢 第一步：安装</h2><p>OpenClaw 基于 Node.js。打开终端，运行：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install -g openclaw</span><br></pre></td></tr></table></figure><p>安装完成后验证：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">openclaw --version</span><br><span class="line"><span class="comment"># 输出如：OpenClaw 2026.6.10</span></span><br></pre></td></tr></table></figure><hr><h2 id="🔵-第二步：启动聊天"><a href="#🔵-第二步：启动聊天" class="headerlink" title="🔵 第二步：启动聊天"></a>🔵 第二步：启动聊天</h2><p>装好后的第一件事：直接聊。OpenClaw 会自动引导你完成模型配置。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">openclaw chat</span><br></pre></td></tr></table></figure><p>第一次运行会进入配置引导，按提示：</p><ol><li><strong>Workspace directory</strong> → 回车（默认路径）</li><li><strong>Configure model/auth now?</strong> → 选 <code>Yes</code></li><li><strong>Model/auth provider</strong> → 选 <code>More…</code>，手动输入你的模型提供商（如 <code>deepseek</code>）</li><li><strong>Enter API key</strong> → 粘贴密钥</li></ol><p>完成后进入聊天界面，底部状态栏显示：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">agent main | deepseek/deepseek-v4-flash | think high | tokens 87k/1.0m</span><br></pre></td></tr></table></figure><hr><h2 id="🟡-第三步：网页版模式"><a href="#🟡-第三步：网页版模式" class="headerlink" title="🟡 第三步：网页版模式"></a>🟡 第三步：网页版模式</h2><p>OpenClaw 也提供了网页版（WebChat），体验更直观：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">openclaw gateway start</span><br></pre></td></tr></table></figure><p>浏览器打开：<code>http://127.0.0.1:18789/</code></p><p>如果想开机自启：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">openclaw gateway install   <span class="comment"># 安装 systemd 服务</span></span><br><span class="line">systemctl --user start openclaw-gateway.service</span><br></pre></td></tr></table></figure><p>如果配置了语音（Microsoft TTS 等），网页版还支持语音输入和 TTS 朗读。</p><hr><h2 id="🟣-第四步：常用斜杠命令"><a href="#🟣-第四步：常用斜杠命令" class="headerlink" title="🟣 第四步：常用斜杠命令"></a>🟣 第四步：常用斜杠命令</h2><p>在聊天界面中，以 <code>/</code> 开头的命令：</p><div class="table-container"><table><thead><tr><th>命令</th><th>作用</th></tr></thead><tbody><tr><td><code>/exit</code></td><td>退出聊天界面</td></tr><tr><td><code>/clear</code></td><td>清屏（对话内容还在）</td></tr><tr><td><code>/auth &lt;provider&gt;</code></td><td>原地刷新密钥</td></tr><tr><td><code>/status</code></td><td>查看当前 session 状态</td></tr><tr><td><code>/talk</code></td><td>切换语音模式（需先配置 TTS）</td></tr></tbody></table></div><hr><h2 id="🟠-第五步：用技能扩展能力"><a href="#🟠-第五步：用技能扩展能力" class="headerlink" title="🟠 第五步：用技能扩展能力"></a>🟠 第五步：用技能扩展能力</h2><p>OpenClaw 真正的威力在<strong>技能系统（Skills）</strong>。技能分两类：</p><ul><li><strong>内建技能</strong>：npm 包自带</li><li><strong>插件技能</strong>：<code>~/.openclaw/plugin-skills/</code>，社区或自建</li></ul><h3 id="安装社区技能"><a href="#安装社区技能" class="headerlink" title="安装社区技能"></a>安装社区技能</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npx skills add &lt;作者&gt;/&lt;仓库名&gt;</span><br></pre></td></tr></table></figure><h3 id="推荐安装"><a href="#推荐安装" class="headerlink" title="推荐安装"></a>推荐安装</h3><div class="table-container"><table><thead><tr><th>技能</th><th>作用</th></tr></thead><tbody><tr><td><strong>obsidian-wiki</strong></td><td>让 AI 自动维护你的 Obsidian 知识库</td></tr><tr><td><strong>frontend-design</strong></td><td>UI 设计辅助</td></tr><tr><td><strong>nuwa-skill</strong></td><td>15+ 人物视角技能（乔布斯、芒格、费曼等）</td></tr></tbody></table></div><h3 id="创建自己的技能"><a href="#创建自己的技能" class="headerlink" title="创建自己的技能"></a>创建自己的技能</h3><p>只需一个目录 + 一个 <code>SKILL.md</code> 文件：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">mkdir</span> -p ~/.openclaw/plugin-skills/my-skill/</span><br></pre></td></tr></table></figure><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="section"># my-skill/SKILL.md</span></span><br><span class="line"></span><br><span class="line"><span class="section">## 技能说明</span></span><br><span class="line"></span><br><span class="line">告诉 AI 在什么场景下触发这个技能。</span><br></pre></td></tr></table></figure><p>重启对话即生效，不需要重启 OpenClaw。</p><hr><h2 id="🔴-第六步：配置说明"><a href="#🔴-第六步：配置说明" class="headerlink" title="🔴 第六步：配置说明"></a>🔴 第六步：配置说明</h2><p>OpenClaw 的配置集中在两个文件：</p><div class="table-container"><table><thead><tr><th>文件</th><th>作用</th></tr></thead><tbody><tr><td><code>~/.openclaw/openclaw.json</code></td><td>全局配置（模型、代理、插件）</td></tr><tr><td><code>~/.openclaw/auth-profiles.json</code></td><td>密钥认证信息</td></tr></tbody></table></div><p><strong>不要手动编辑</strong> <code>openclaw.json</code> 的密钥字段——密钥统一走 <code>auth-profiles.json</code>。</p><hr><h2 id="💡-日常工作流"><a href="#💡-日常工作流" class="headerlink" title="💡 日常工作流"></a>💡 日常工作流</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">终端 → openclaw chat（或浏览器 WebChat）</span><br><span class="line">↓</span><br><span class="line">开始对话</span><br><span class="line">↓</span><br><span class="line">处理完 → /wiki-update 把知识存入 Obsidian</span><br><span class="line">↓</span><br><span class="line">/exit 退出</span><br></pre></td></tr></table></figure><hr><h2 id="⚠️-常见踩坑"><a href="#⚠️-常见踩坑" class="headerlink" title="⚠️ 常见踩坑"></a>⚠️ 常见踩坑</h2><div class="table-container"><table><thead><tr><th>现象</th><th>原因</th><th>解决</th></tr></thead><tbody><tr><td><code>Too many arguments</code></td><td>给 <code>openclaw chat</code> 传了参数</td><td>直接 <code>openclaw chat</code>，不加任何参数</td></tr><tr><td>密钥无效</td><td>过期或没配置</td><td><code>/auth deepseek</code> 刷新</td></tr><tr><td>网页版打不开</td><td>Gateway 没启动</td><td>先跑 <code>openclaw gateway start</code></td></tr><tr><td>语音报错</td><td>TTS 没配</td><td>在 <code>openclaw.json</code> 的 <code>messages.tts</code> 配置</td></tr></tbody></table></div><hr><p>以上就是 OpenClaw 最纯净、最基础的使用流程。祝聊得愉快 🚀</p>]]></content>
    
    
    <summary type="html">OpenClaw 开箱指南，覆盖安装、聊天、网页版、技能扩展、常见坑，保留最核心、最不踩坑的操作步骤。</summary>
    
    
    
    <category term="教程" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="教程" scheme="https://blog.helijike.eu.org/tags/%E6%95%99%E7%A8%8B/"/>
    
    <category term="OpenClaw" scheme="https://blog.helijike.eu.org/tags/OpenClaw/"/>
    
    <category term="AI" scheme="https://blog.helijike.eu.org/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>系统代理 vs TUN 模式：到底差在哪里？一文彻底搞懂</title>
    <link href="https://blog.helijike.eu.org/posts/system-proxy-vs-tun.html"/>
    <id>https://blog.helijike.eu.org/posts/system-proxy-vs-tun.html</id>
    <published>2026-06-26T16:28:00.000Z</published>
    <updated>2026-06-26T16:40:15.998Z</updated>
    
    <content type="html"><![CDATA[<h1 id="系统代理-vs-TUN-模式：到底差在哪里？一文彻底搞懂"><a href="#系统代理-vs-TUN-模式：到底差在哪里？一文彻底搞懂" class="headerlink" title="系统代理 vs TUN 模式：到底差在哪里？一文彻底搞懂"></a>系统代理 vs TUN 模式：到底差在哪里？一文彻底搞懂</h1><p>很多人在使用 Clash、V2Ray、Sing-box、Nekobox 等代理工具时都会遇到同一个问题：</p><p><strong>明明代理已经开启，浏览器能正常访问 Google、YouTube，但游戏、桌面客户端、某些软件却完全无法联网。</strong></p><p>这是为什么？今天这篇文章就用最通俗易懂的方式，把<strong>系统代理</strong>和<strong>TUN 模式</strong>的本质区别讲清楚，帮助你快速选择合适的工作模式。</p><hr><h2 id="一、核心区别：流量拦截的层次不同"><a href="#一、核心区别：流量拦截的层次不同" class="headerlink" title="一、核心区别：流量拦截的层次不同"></a>一、核心区别：流量拦截的层次不同</h2><p>代理工具的工作模式，本质上决定了它能在哪个层面”接管”你的网络流量。</p><h3 id="1-系统代理模式（System-Proxy）——“礼貌型”代理"><a href="#1-系统代理模式（System-Proxy）——“礼貌型”代理" class="headerlink" title="1. 系统代理模式（System Proxy）——“礼貌型”代理"></a>1. 系统代理模式（System Proxy）——“礼貌型”代理</h3><p><strong>工作原理</strong>：</p><p>代理客户端在操作系统设置中（Windows 注册表、macOS 网络偏好设置等）声明一个代理地址和端口。只有<strong>主动遵守系统代理设置</strong>的应用程序才会把流量发送给它。</p><p><strong>典型表现</strong>：</p><ul><li>Chrome、Edge、Firefox 等主流浏览器会自动读取并使用。</li><li>支持 HTTP/SOCKS5 代理的软件也能正常工作。</li><li>大部分命令行工具（如 curl、git）可以通过环境变量配置。</li></ul><p><strong>优点</strong>：</p><ul><li>配置简单，几乎零学习成本</li><li>资源占用低，速度更快</li><li>延迟通常更小</li></ul><p><strong>缺点</strong>：</p><ul><li>很多软件<strong>完全无视</strong>系统代理（尤其是游戏、Electron 客户端、Steam、Epic Games 等）</li><li>一般只支持 TCP，不支持 UDP（打游戏、语音聊天、视频会议容易出问题）</li><li>分流规则只能对”听话”的软件生效</li></ul><p><strong>比喻</strong>：你在公司门口贴了一张”请把文件交给我”的告示，只有听话的员工会照做，其他人直接从后门走了。</p><h3 id="2-TUN-模式（虚拟网卡模式）——“强制型”代理"><a href="#2-TUN-模式（虚拟网卡模式）——“强制型”代理" class="headerlink" title="2. TUN 模式（虚拟网卡模式）——“强制型”代理"></a>2. TUN 模式（虚拟网卡模式）——“强制型”代理</h3><p><strong>工作原理</strong>：</p><p>代理工具创建一个<strong>虚拟网卡</strong>（TUN/TAP 设备），然后修改系统路由表，让所有（或指定）的网络数据包先经过这张虚拟网卡。代理程序在底层对数据包进行解析、匹配规则、加密转发。</p><p><strong>典型表现</strong>：</p><ul><li>几乎所有软件的流量都会被接管，不管它是否支持代理设置</li><li>支持 TCP + UDP 全协议</li><li>游戏、系统更新、桌面客户端全部走代理</li></ul><p><strong>优点</strong>：</p><ul><li>真正的全局代理效果</li><li>UDP 支持良好，游戏延迟更稳定</li><li>分流规则对全系统生效</li></ul><p><strong>缺点</strong>：</p><ul><li>需要管理员/root 权限</li><li>资源占用稍高，可能有轻微额外延迟</li><li>配置不当容易导致全网断连</li><li>极少数游戏的反作弊系统可能会检测虚拟网卡</li></ul><p><strong>比喻</strong>：你在公司门口设立了强制安检通道，所有人（包括不想配合的）都必须经过检查。</p><hr><h2 id="二、实际使用场景推荐"><a href="#二、实际使用场景推荐" class="headerlink" title="二、实际使用场景推荐"></a>二、实际使用场景推荐</h2><div class="table-container"><table><thead><tr><th>使用场景</th><th>推荐模式</th><th>推荐理由</th></tr></thead><tbody><tr><td>日常刷网页、ChatGPT、API 调用</td><td>系统代理</td><td>够快、够简单</td></tr><tr><td>玩游戏、用客户端软件</td><td>TUN 模式</td><td>全局覆盖 + UDP 支持</td></tr><tr><td>混合使用（部分走代理、部分直连）</td><td>系统代理 + 规则</td><td>灵活省资源</td></tr><tr><td>需要极致全局、多设备共享</td><td>TUN / 透明代理</td><td>最彻底（适合软路由）</td></tr><tr><td>对速度和低延迟极致敏感</td><td>系统代理优先</td><td>轻量无感</td></tr></tbody></table></div><hr><h2 id="三、常见问题快速排查"><a href="#三、常见问题快速排查" class="headerlink" title="三、常见问题快速排查"></a>三、常见问题快速排查</h2><ol><li><strong>浏览器能上，外服游戏上不去</strong> → 切换到 TUN 模式。</li><li><strong>TUN 模式下部分网站打不开</strong> → 检查分流规则、尝试关闭 GVisor 栈，或临时切回系统代理。</li><li><strong>开启 TUN 后整个网络断掉</strong> → 路由冲突，检查虚拟网卡设置，重启客户端即可恢复。</li><li><strong>权限问题</strong> → Windows 建议以管理员身份运行，或安装为系统服务；macOS/Linux 需要 sudo。</li><li><strong>进阶方案</strong>：Proxifier（按进程规则代理） + 系统代理组合使用，可实现更精细控制。</li></ol><hr><h2 id="四、总结"><a href="#四、总结" class="headerlink" title="四、总结"></a>四、总结</h2><p><strong>系统代理</strong>是轻量、依赖合作的”君子协议”；<strong>TUN 模式</strong>是霸道、底层强制的”全局接管”。</p><p>理解了二者的本质区别，你就不会再被”开了代理却没效果”困扰。选择哪种模式，取决于你的实际需求：<strong>日常轻度使用选系统代理，需要彻底全局就上 TUN</strong>。</p><hr><blockquote><p><strong>参考视频</strong>：Bilibili 搜索《系统代理和 TUN，到底差在哪？》（UP 主：飞行认知），短短 3 分 44 秒，动画演示非常清晰，建议配合观看。</p></blockquote>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;系统代理-vs-TUN-模式：到底差在哪里？一文彻底搞懂&quot;&gt;&lt;a href=&quot;#系统代理-vs-TUN-模式：到底差在哪里？一文彻底搞懂&quot; class=&quot;headerlink&quot; title=&quot;系统代理 vs TUN 模式：到底差在哪里？一文彻底搞懂&quot;&gt;&lt;/a&gt;系统</summary>
      
    
    
    
    <category term="技术" scheme="https://blog.helijike.eu.org/categories/%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="代理" scheme="https://blog.helijike.eu.org/tags/%E4%BB%A3%E7%90%86/"/>
    
    <category term="网络" scheme="https://blog.helijike.eu.org/tags/%E7%BD%91%E7%BB%9C/"/>
    
    <category term="Clash" scheme="https://blog.helijike.eu.org/tags/Clash/"/>
    
    <category term="TUN" scheme="https://blog.helijike.eu.org/tags/TUN/"/>
    
    <category term="翻墙" scheme="https://blog.helijike.eu.org/tags/%E7%BF%BB%E5%A2%99/"/>
    
  </entry>
  
  <entry>
    <title>英特尔 CPU 全系列解析（i3/i5/i7/i9/Ultra）</title>
    <link href="https://blog.helijike.eu.org/posts/intel-cpu-guide.html"/>
    <id>https://blog.helijike.eu.org/posts/intel-cpu-guide.html</id>
    <published>2026-06-26T16:28:00.000Z</published>
    <updated>2026-06-26T16:40:19.603Z</updated>
    
    <content type="html"><![CDATA[<h1 id="英特尔-CPU-全系列解析（i3-i5-i7-i9-Ultra）-CPU‑Z-截图速读与选购要点"><a href="#英特尔-CPU-全系列解析（i3-i5-i7-i9-Ultra）-CPU‑Z-截图速读与选购要点" class="headerlink" title="英特尔 CPU 全系列解析（i3/i5/i7/i9/Ultra）+ CPU‑Z 截图速读与选购要点"></a>英特尔 CPU 全系列解析（i3/i5/i7/i9/Ultra）+ CPU‑Z 截图速读与选购要点</h1><blockquote><p>从 i3 到 Ultra，一张图看懂英特尔 CPU 产品线布局。</p></blockquote><hr><h2 id="1-入门级：酷睿-i3"><a href="#1-入门级：酷睿-i3" class="headerlink" title="1. 入门级：酷睿 i3"></a>1. 入门级：酷睿 i3</h2><p>酷睿 i3 面向基础计算与轻度多任务。</p><ul><li><strong>核心数常见范围</strong>：4–6 核（视代际而定）</li><li><strong>适合人群/场景</strong>：网页浏览、视频观看、Office、轻度网游</li><li><strong>不太适合</strong>：长时间渲染、重度生产力、现代 3A 大作高画质</li></ul><hr><h2 id="2-中端主流：酷睿-i5"><a href="#2-中端主流：酷睿-i5" class="headerlink" title="2. 中端主流：酷睿 i5"></a>2. 中端主流：酷睿 i5</h2><p>酷睿 i5 是主流”甜点位”，在性能与价格之间更均衡。</p><ul><li><strong>核心数常见范围</strong>：6–14 核</li><li><strong>适合人群/场景</strong>：主流游戏、编程、轻度到中度的视频/图片处理</li></ul><blockquote><p>💡 <strong>选购提示：型号 + 代际同样重要</strong></p><p>CPU 性能不仅看 i3/i5/i7/i9，还与”代数”强相关。新一代 i3 可能接近或超过旧一代 i5。优先在预算内选择更新代际的产品。</p></blockquote><hr><h2 id="3-高性能：酷睿-i7"><a href="#3-高性能：酷睿-i7" class="headerlink" title="3. 高性能：酷睿 i7"></a>3. 高性能：酷睿 i7</h2><p>酷睿 i7 适合需要更强多任务与生产力的人群。</p><ul><li><strong>核心数常见范围</strong>：8–20 核</li><li><strong>适合人群/场景</strong>：内容创作、多开大型软件、游戏 + 录制/直播</li></ul><hr><h2 id="4-旗舰级：酷睿-i9"><a href="#4-旗舰级：酷睿-i9" class="headerlink" title="4. 旗舰级：酷睿 i9"></a>4. 旗舰级：酷睿 i9</h2><p>酷睿 i9 面向专业工作负载与发烧级玩家。</p><ul><li><strong>核心数常见范围</strong>：16–24 核</li><li><strong>适合人群/场景</strong>：3D 建模、4K 视频剪辑、大型工程、顶级游戏配置</li><li><strong>注意</strong>：对普通用户可能存在”性能过剩”，同时对散热/供电要求更高</li></ul><hr><h2 id="5-未来趋势：酷睿-Ultra"><a href="#5-未来趋势：酷睿-Ultra" class="headerlink" title="5. 未来趋势：酷睿 Ultra"></a>5. 未来趋势：酷睿 Ultra</h2><p>酷睿 Ultra 的一大亮点是集成 <strong>NPU（神经处理单元）</strong>，用于加速 AI 相关任务。</p><ul><li><strong>NPU 适用方向</strong>：如达芬奇、Photoshop 等软件中的 AI 生成/增强功能</li><li><strong>意义</strong>：更智能的本地 AI 体验、更高能效</li></ul><hr><h2 id="6-CPU-后缀含义速查"><a href="#6-CPU-后缀含义速查" class="headerlink" title="6. CPU 后缀含义速查"></a>6. CPU 后缀含义速查</h2><p>不同后缀代表不同功耗/定位/功能特性：</p><div class="table-container"><table><thead><tr><th>后缀</th><th>含义</th></tr></thead><tbody><tr><td>U</td><td>低功耗、续航优先，常见于轻薄本</td></tr><tr><td>F</td><td>无核显（需独显），通常更便宜</td></tr><tr><td>T</td><td>低功耗台式机版本，温度更低</td></tr><tr><td>H</td><td>高性能移动端（游戏本常见），功耗/发热更高</td></tr><tr><td>K</td><td>支持超频（更看重散热与主板供电）</td></tr><tr><td>KF</td><td>支持超频 + 无核显（通常比 K 更便宜）</td></tr></tbody></table></div><hr><h2 id="7-其他系列"><a href="#7-其他系列" class="headerlink" title="7. 其他系列"></a>7. 其他系列</h2><p>除酷睿系列外，还有面向不同市场的产品线：</p><ul><li><strong>博锐（vPro）</strong>：面向企业管理与安全需求（如 AMT、内存加密等）</li><li><strong>灵动</strong>：超低功耗平台，面向小型/便携设备与行业终端</li><li><strong>赛扬 / 奔腾</strong>：传统入门级系列（现已停产）</li><li><strong>至强（Xeon）</strong>：面向工作站与服务器，核心数多、适合并行工作负载</li></ul><hr><h2 id="8-选购小结"><a href="#8-选购小结" class="headerlink" title="8. 选购小结"></a>8. 选购小结</h2><ul><li>明确用途：办公/学习、主流游戏、创作生产力、专业工作站</li><li>同预算优先看：<strong>代际 + 实际核心/线程 + 散热/功耗平台匹配</strong></li><li>结合整机：主板、显卡、内存、散热与电源配置同样关键</li></ul><hr><h2 id="9-附：如何查看-CPU-生产日期"><a href="#9-附：如何查看-CPU-生产日期" class="headerlink" title="9. 附：如何查看 CPU 生产日期"></a>9. 附：如何查看 CPU 生产日期</h2><p>要查看处理器的生产日期，通常可以通过以下 3 种途径：<strong>看 CPU 表面标识</strong>、<strong>系统命令行查询</strong>、或<strong>第三方硬件检测软件</strong>。</p><h3 id="Intel-CPU（BATCH-FPO）"><a href="#Intel-CPU（BATCH-FPO）" class="headerlink" title="Intel CPU（BATCH / FPO）"></a>Intel CPU（BATCH / FPO）</h3><p>找到 CPU 表面的 <strong>BATCH 码（FPO）</strong>，通常由字母和数字组成。</p><p><strong>常见编码理解方式</strong>：</p><ul><li>第 1 个字母：产地（如 <strong>X</strong>=越南、<strong>L</strong>=马来西亚、<strong>V</strong>=中国成都）</li><li>第 2 位数字：生产年份（如 <strong>2</strong>=2022 年）</li><li>第 3–4 位数字：生产周数（如 <strong>32</strong>=第 32 周，约 8 月）</li></ul><blockquote><p>例：<code>L232XXXX</code> 表示该 CPU 于 <strong>2022 年第 32 周</strong>在<strong>马来西亚</strong>生产。</p></blockquote><h3 id="AMD-CPU（四位日期码）"><a href="#AMD-CPU（四位日期码）" class="headerlink" title="AMD CPU（四位日期码）"></a>AMD CPU（四位日期码）</h3><p>CPU 表面通常会印有 4 位数字（如 <code>1923</code>）：</p><ul><li>前两位：生产年份（19=2019 年）</li><li>后两位：生产周数（23=第 23 周）</li></ul><blockquote><p>例：<code>1923</code> 表示该 CPU 于 <strong>2019 年第 23 周</strong>生产。</p></blockquote><h3 id="通过系统命令查看"><a href="#通过系统命令查看" class="headerlink" title="通过系统命令查看"></a>通过系统命令查看</h3><p><strong>Windows：</strong><br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wmic cpu get manufacturing <span class="built_in">date</span></span><br></pre></td></tr></table></figure></p><p><strong>Linux：</strong><br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo dmidecode -t processor</span><br></pre></td></tr></table></figure><br>在输出中查找 <code>Serial Number</code> 或 <code>Version</code> 字段，其中可能包含日期编码。</p><hr><h2 id="10-附：CPU-Z-截图速读指南"><a href="#10-附：CPU-Z-截图速读指南" class="headerlink" title="10. 附：CPU-Z 截图速读指南"></a>10. 附：CPU-Z 截图速读指南</h2><p>下面按 CPU-Z 常见页签，逐一解读各页面关键信息。</p><h3 id="处理器（CPU）页"><a href="#处理器（CPU）页" class="headerlink" title="处理器（CPU）页"></a>处理器（CPU）页</h3><p><img src="/img/英特尔CPU全系列解析/cpu.png" alt="CPU-Z 处理器页"></p><ul><li><strong>看什么</strong>：Name/Specification（型号）、Code Name（代号/架构）、Package（接口）、Cores/Threads（核心/线程）、Core Speed（实时频率）、TDP（功耗级别提示）</li><li><strong>这张截图显示</strong>：<ul><li>Intel Core <strong>Ultra 5</strong>，代号 <strong>Arrow Lake</strong></li><li><strong>Socket 1851 LGA（LGA1851）</strong> 平台</li><li>核心结构 <strong>6P + 4E</strong>，总 <strong>10 核 / 10 线程</strong></li><li>当时实时频率约 <strong>4.8 GHz</strong>（倍频 x48，总线 100 MHz）</li><li>TDP 显示 <strong>64W</strong></li></ul></li></ul><blockquote><p>⚠️ CPU-Z 通常看不到 Intel 的”批次/生产周（FPO/BATCH）”，生产日期需看 CPU 顶盖刻字或外盒标签。</p></blockquote><h3 id="主板（Mainboard）页"><a href="#主板（Mainboard）页" class="headerlink" title="主板（Mainboard）页"></a>主板（Mainboard）页</h3><p><img src="/img/英特尔CPU全系列解析/mainboard.png" alt="CPU-Z 主板页"></p><ul><li><strong>看什么</strong>：Manufacturer/Model（主板品牌型号）、Chipset（芯片组）、BIOS Version/Date（BIOS 版本与日期）、Graphic Interface（显卡插槽的当前工作通道与速率）</li><li><strong>这张截图显示</strong>：<ul><li>主板：<strong>ASUS EX-B860M-V5（Rev 1.xx）</strong></li><li>芯片组：<strong>Intel B860（Arrow Lake 平台）</strong></li><li>BIOS：<strong>1802</strong>，日期 <strong>09/22/2025</strong></li><li>显卡接口：当前 <strong>x8 / 8.0 GT/s</strong>，最大支持 <strong>x16 / 32.0 GT/s</strong></li></ul></li></ul><blockquote><p>💡 “当前 x8 / 8.0 GT/s”表示空闲或省电状态，负载上来后会自动升速。</p></blockquote><h3 id="内存（Memory）页"><a href="#内存（Memory）页" class="headerlink" title="内存（Memory）页"></a>内存（Memory）页</h3><p><img src="/img/英特尔CPU全系列解析/memory.png" alt="CPU-Z 内存页"></p><ul><li><strong>看什么</strong>：Type（DDR4/DDR5）、Size（容量）、Channel（通道）、DRAM Frequency（内存实际频率；DDR 标称要 ×2）、Timings（CL/tRCD/tRP/tRAS）</li><li><strong>这张截图显示</strong>：<ul><li><strong>DDR5 32GB</strong></li><li>Channel：<strong>2 × 32-bit</strong>（DDR5 单条内部是 2×32-bit 子通道）</li><li>DRAM Frequency 约 <strong>2397 MHz</strong> → 标称约 <strong>DDR5-4800</strong></li><li>时序约 <strong>CL40-39-39-77</strong></li></ul></li></ul><blockquote><p>⚠️ 内存运行在 DDR5-4800（JEDEC 默认档），SPD 显示支持 6000，说明 XMP/EXPO 尚未开启。</p></blockquote><h3 id="SPD-页"><a href="#SPD-页" class="headerlink" title="SPD 页"></a>SPD 页</h3><p><img src="/img/英特尔CPU全系列解析/spd.png" alt="CPU-Z SPD 页"></p><ul><li><strong>看什么</strong>：Module Size（单条容量）、Manufacturer（厂商）、Max Bandwidth（SPD 标称带宽档）、Profiles（XMP/EXPO 频率与电压/时序）</li><li><strong>这张截图显示</strong>：<ul><li>内存条厂商：<strong>Kingston（金士顿）</strong>，颗粒：<strong>SK Hynix</strong></li><li>支持 <strong>EXPO / XMP 3.0</strong></li><li>配置表有 <strong>DDR5-6000（3000 MHz）</strong> 档位，电压约 <strong>1.350V</strong></li></ul></li></ul><h3 id="显卡（Graphics）页"><a href="#显卡（Graphics）页" class="headerlink" title="显卡（Graphics）页"></a>显卡（Graphics）页</h3><p><img src="/img/英特尔CPU全系列解析/graphics.png" alt="CPU-Z 显卡页"></p><ul><li><strong>看什么</strong>：显卡名称、GPU 代号、显存类型/容量/位宽、当前频率</li><li><strong>这张截图显示</strong>：<ul><li>显卡：<strong>NVIDIA GeForce RTX 5060（七彩虹 Colorful）</strong></li><li>显存：约 <strong>8GB</strong>，类型 <strong>GDDR7</strong>，位宽 <strong>128-bit</strong></li><li>频率在桌面空闲状态偏低（正常省电）</li></ul></li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;英特尔-CPU-全系列解析（i3-i5-i7-i9-Ultra）-CPU‑Z-截图速读与选购要点&quot;&gt;&lt;a href=&quot;#英特尔-CPU-全系列解析（i3-i5-i7-i9-Ultra）-CPU‑Z-截图速读与选购要点&quot; class=&quot;headerlink&quot; tit</summary>
      
    
    
    
    <category term="技术" scheme="https://blog.helijike.eu.org/categories/%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="CPU" scheme="https://blog.helijike.eu.org/tags/CPU/"/>
    
    <category term="英特尔" scheme="https://blog.helijike.eu.org/tags/%E8%8B%B1%E7%89%B9%E5%B0%94/"/>
    
    <category term="硬件" scheme="https://blog.helijike.eu.org/tags/%E7%A1%AC%E4%BB%B6/"/>
    
    <category term="选购指南" scheme="https://blog.helijike.eu.org/tags/%E9%80%89%E8%B4%AD%E6%8C%87%E5%8D%97/"/>
    
  </entry>
  
  <entry>
    <title>网络工程基础知识核心笔记</title>
    <link href="https://blog.helijike.eu.org/posts/network-basics-notes.html"/>
    <id>https://blog.helijike.eu.org/posts/network-basics-notes.html</id>
    <published>2026-06-26T15:53:00.000Z</published>
    <updated>2026-06-26T16:40:22.690Z</updated>
    
    <content type="html"><![CDATA[<h1 id="网络工程基础知识核心笔记"><a href="#网络工程基础知识核心笔记" class="headerlink" title="网络工程基础知识核心笔记"></a>网络工程基础知识核心笔记</h1><blockquote><p>从 IP 地址到 TCP/UDP，一份面向入门的网络工程核心知识梳理，适合复习与面试准备。</p></blockquote><hr><h2 id="IP-地址、子网掩码与子网划分"><a href="#IP-地址、子网掩码与子网划分" class="headerlink" title="IP 地址、子网掩码与子网划分"></a>IP 地址、子网掩码与子网划分</h2><h3 id="IP-地址"><a href="#IP-地址" class="headerlink" title="IP 地址"></a>IP 地址</h3><p>IP 地址是网络中设备的唯一标识，如同网购的精准收货地址，确保数据包在全球几十亿设备中准确找到目标设备（手机、电脑、服务器等）。</p><p>分为两种类型：</p><ul><li><strong>公网 IP</strong>：由运营商分配，全球唯一的”门牌号”，整个互联网都可识别。</li><li><strong>私网 IP</strong>：通常以 <code>192.168</code> 开头，相当于局域网内的”房间号”，仅在局域网内部有效。</li></ul><h3 id="子网掩码"><a href="#子网掩码" class="headerlink" title="子网掩码"></a>子网掩码</h3><p>子网掩码是 IP 地址的”分隔符”，用于区分地址中的网络位和主机位。</p><p>最常见的子网掩码是 <code>255.255.255.0</code>，其含义是：IP 地址的前三段为<strong>网络位</strong>，最后一段为<strong>主机位</strong>。</p><h3 id="子网划分"><a href="#子网划分" class="headerlink" title="子网划分"></a>子网划分</h3><p>子网划分是将大网段拆分为多个互相隔离的小网段（子网）的过程。</p><p>例如，<code>192.168.1.0</code> 网段可容纳 254 台设备。若所有设备共处同一网段，易导致<strong>广播泛滥</strong>，引发网络卡顿和安全问题。通过子网划分，每个子网独立管理设备、互不干扰，既能提升网络效率，又能增强安全性。</p><hr><h2 id="上网必备的三大协议"><a href="#上网必备的三大协议" class="headerlink" title="上网必备的三大协议"></a>上网必备的三大协议</h2><h3 id="ARP-协议"><a href="#ARP-协议" class="headerlink" title="ARP 协议"></a>ARP 协议</h3><p>所有通信设备都有全球唯一的 <strong>MAC 地址</strong>，数据包在局域网内最终通过 MAC 地址定位设备。<strong>ARP 协议的作用是通过 IP 地址查询对应设备的 MAC 地址</strong>，是内网设备通信的基础。</p><p><strong>示例：</strong> 电脑需向同局域网的打印机（IP 为 <code>192.168.1.10</code>）发送文件时，会在局域网内广播询问——</p><blockquote><p>“谁是 192.168.1.10，请回复你的 MAC 地址”</p></blockquote><p>打印机收到后回复自身 MAC 地址，电脑将其缓存，后续通信可直接使用该 MAC 地址，无需重复广播。</p><h3 id="DHCP-协议"><a href="#DHCP-协议" class="headerlink" title="DHCP 协议"></a>DHCP 协议</h3><p>DHCP 协议相当于<strong>“自动分配地址的物业”</strong>，能自动为联网设备分配 IP 地址、网关、DNS 等上网参数。</p><ul><li>无需管理员手动设置</li><li>自动避免 IP 地址冲突</li></ul><p>手机连接 Wi-Fi 时，DHCP 会自动完成所有参数配置，用户无需关心底层细节。</p><h3 id="DNS-协议"><a href="#DNS-协议" class="headerlink" title="DNS 协议"></a>DNS 协议</h3><p>DNS 协议被称为<strong>“互联网的查询台”</strong>。</p><p>用户输入的网址（如 <code>www.baidu.com</code>）是人类可理解的字符，而电脑只识别数字 IP 地址。DNS 的功能就是将网址<strong>翻译成对应的 IP 地址</strong>。</p><p>没有 DNS 的世界——你得记住所有网站的数字 IP 才能上网。</p><hr><h2 id="交换机与路由器"><a href="#交换机与路由器" class="headerlink" title="交换机与路由器"></a>交换机与路由器</h2><h3 id="交换机"><a href="#交换机" class="headerlink" title="交换机"></a>交换机</h3><blockquote><p>局域网内的 <strong>“内部快递员”</strong></p></blockquote><ul><li>仅负责<strong>同一网段</strong>（同一”小区”）内的设备数据转发</li><li>基于 <strong>MAC 地址</strong>定位设备</li><li>只在局域网内工作，注重转发效率</li></ul><h3 id="路由器"><a href="#路由器" class="headerlink" title="路由器"></a>路由器</h3><blockquote><p><strong>“跨网络的全国快递分拣中心”</strong></p></blockquote><ul><li>负责<strong>跨网段、跨城市</strong>的数据包转发</li><li>基于 <strong>IP 地址</strong>寻找最优路径</li><li>用户能刷抖音、访问外网，都依靠路由器将数据”一跳一跳”发送到全球各地，并将结果返回</li></ul><p><strong>总结：</strong> 同网段内网通信靠交换机，跨网段访问互联网靠路由器。</p><hr><h2 id="数据传输的两大核心模式：TCP-与-UDP"><a href="#数据传输的两大核心模式：TCP-与-UDP" class="headerlink" title="数据传输的两大核心模式：TCP 与 UDP"></a>数据传输的两大核心模式：TCP 与 UDP</h2><h3 id="TCP（传输控制协议）"><a href="#TCP（传输控制协议）" class="headerlink" title="TCP（传输控制协议）"></a>TCP（传输控制协议）</h3><p><strong>核心特点：可靠优先，哪怕慢一点</strong></p><p>工作机制：</p><ol><li><strong>三次握手建立连接</strong>：<code>&quot;你准备好了吗？&quot; → &quot;准备好了。&quot; → &quot;那我开始发了。&quot;</code></li><li><strong>编号确认</strong>：发送时对每个数据包编号，接收方收到后回复确认（如”收到 1，请发 2”）</li><li><strong>自动重传</strong>：若出现丢包，TCP 会自动重传</li><li><strong>四次挥手断开连接</strong>：数据传输结束后优雅关闭</li></ol><p><strong>适用场景：</strong> 微信发文件、浏览网页、接收邮件等——这些场景不允许数据丢失。</p><h3 id="UDP（用户数据报协议）"><a href="#UDP（用户数据报协议）" class="headerlink" title="UDP（用户数据报协议）"></a>UDP（用户数据报协议）</h3><p><strong>核心特点：快速优先，可靠性较低</strong></p><p>工作方式可比喻为<strong>“广场喊话”</strong>——</p><blockquote><p>无需握手建立连接，发送方直接发送数据，不要求接收方确认，也不进行丢包重传。</p></blockquote><p>打个比方：像”三秒后有一百个包裹扔下来，你们自己接，接不到算球”。因此 UDP <strong>速度极快但可靠性低</strong>。</p><p><strong>适用场景：</strong> 刷抖音、实时游戏、视频会议等——对延迟敏感、偶尔卡顿可接受的场景。</p><hr><h2 id="速查总表"><a href="#速查总表" class="headerlink" title="速查总表"></a>速查总表</h2><div class="table-container"><table><thead><tr><th>概念</th><th>关键作用</th><th>类比</th></tr></thead><tbody><tr><td>IP 地址</td><td>设备唯一标识</td><td>收货地址</td></tr><tr><td>子网掩码</td><td>区分网络位/主机位</td><td>地址分隔符</td></tr><tr><td>ARP</td><td>IP → MAC 地址查询</td><td>内网寻人广播</td></tr><tr><td>DHCP</td><td>自动分配网络参数</td><td>物业自动配钥匙</td></tr><tr><td>DNS</td><td>域名 → IP 解析</td><td>互联网查询台</td></tr><tr><td>交换机</td><td>同网段数据转发</td><td>内部快递员</td></tr><tr><td>路由器</td><td>跨网段数据转发</td><td>全国分拣中心</td></tr><tr><td>TCP</td><td>可靠传输</td><td>挂号信（有回执）</td></tr><tr><td>UDP</td><td>快速传输</td><td>广场喊话（不保证）</td></tr></tbody></table></div><hr>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;网络工程基础知识核心笔记&quot;&gt;&lt;a href=&quot;#网络工程基础知识核心笔记&quot; class=&quot;headerlink&quot; title=&quot;网络工程基础知识核心笔记&quot;&gt;&lt;/a&gt;网络工程基础知识核心笔记&lt;/h1&gt;&lt;blockquote&gt;
&lt;p&gt;从 IP 地址到 TCP/UDP，</summary>
      
    
    
    
    <category term="教程" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="网络工程" scheme="https://blog.helijike.eu.org/tags/%E7%BD%91%E7%BB%9C%E5%B7%A5%E7%A8%8B/"/>
    
    <category term="笔记" scheme="https://blog.helijike.eu.org/tags/%E7%AC%94%E8%AE%B0/"/>
    
    <category term="TCP/IP" scheme="https://blog.helijike.eu.org/tags/TCP-IP/"/>
    
    <category term="基础" scheme="https://blog.helijike.eu.org/tags/%E5%9F%BA%E7%A1%80/"/>
    
  </entry>
  
  <entry>
    <title>Markdown 语法速查指南</title>
    <link href="https://blog.helijike.eu.org/posts/e1ca28e.html"/>
    <id>https://blog.helijike.eu.org/posts/e1ca28e.html</id>
    <published>2026-05-21T02:12:00.000Z</published>
    <updated>2026-05-21T02:15:46.934Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>Markdown 是一种轻量级标记语言，用简单的符号就能写出结构清晰的文档。这篇教程覆盖了最常用的语法，随查随用。</p></blockquote><hr><h2 id="标题"><a href="#标题" class="headerlink" title="标题"></a>标题</h2><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="section"># 一级标题</span></span><br><span class="line"><span class="section">## 二级标题</span></span><br><span class="line"><span class="section">### 三级标题</span></span><br><span class="line"><span class="section">#### 四级标题</span></span><br><span class="line"><span class="section">##### 五级标题</span></span><br><span class="line"><span class="section">###### 六级标题</span></span><br></pre></td></tr></table></figure><p>效果：</p><h1 id="一级标题"><a href="#一级标题" class="headerlink" title="一级标题"></a>一级标题</h1><h2 id="二级标题"><a href="#二级标题" class="headerlink" title="二级标题"></a>二级标题</h2><h3 id="三级标题"><a href="#三级标题" class="headerlink" title="三级标题"></a>三级标题</h3><hr><h2 id="段落与换行"><a href="#段落与换行" class="headerlink" title="段落与换行"></a>段落与换行</h2><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">这是第一段。</span><br><span class="line">直接换行不会分段，需要加一个空行。</span><br><span class="line"></span><br><span class="line">这是第二段。</span><br></pre></td></tr></table></figure><p>段落之间用空行分隔。行尾加两个空格再回车可以强制换行，但更推荐用空行。</p><hr><h2 id="文字样式"><a href="#文字样式" class="headerlink" title="文字样式"></a>文字样式</h2><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="strong">**粗体**</span></span><br><span class="line"><span class="emphasis">*斜体*</span></span><br><span class="line"><span class="strong">**<span class="emphasis">*粗斜体*</span>**</span></span><br><span class="line">~~删除线~~</span><br><span class="line"><span class="code">`行内代码`</span></span><br><span class="line"><span class="language-xml"><span class="tag">&lt;<span class="name">u</span>&gt;</span></span>下划线<span class="language-xml"><span class="tag">&lt;/<span class="name">u</span>&gt;</span></span></span><br></pre></td></tr></table></figure><p>效果：<strong>粗体</strong> <em>斜体</em> <strong><em>粗斜体</em></strong> <del>删除线</del> <code>行内代码</code> <u>下划线</u></p><hr><h2 id="列表"><a href="#列表" class="headerlink" title="列表"></a>列表</h2><h3 id="无序列表"><a href="#无序列表" class="headerlink" title="无序列表"></a>无序列表</h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="bullet">-</span> 苹果</span><br><span class="line"><span class="bullet">-</span> 香蕉</span><br><span class="line"><span class="bullet">-</span> 橘子</span><br><span class="line"><span class="bullet">  -</span> 嵌套列表（缩进两个空格）</span><br><span class="line"><span class="bullet">  -</span> 继续嵌套</span><br></pre></td></tr></table></figure><h3 id="有序列表"><a href="#有序列表" class="headerlink" title="有序列表"></a>有序列表</h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="bullet">1.</span> 第一步</span><br><span class="line"><span class="bullet">2.</span> 第二步</span><br><span class="line"><span class="bullet">3.</span> 第三步</span><br></pre></td></tr></table></figure><h3 id="任务列表"><a href="#任务列表" class="headerlink" title="任务列表"></a>任务列表</h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="bullet">-</span> [x] 已完成任务</span><br><span class="line"><span class="bullet">-</span> [ ] 未完成任务</span><br><span class="line"><span class="bullet">-</span> [ ] 另一个待办</span><br></pre></td></tr></table></figure><hr><h2 id="链接"><a href="#链接" class="headerlink" title="链接"></a>链接</h2><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">[<span class="string">显示文字</span>](<span class="link">https://example.com</span>)</span><br><span class="line"></span><br><span class="line">[<span class="string">带标题的链接</span>](<span class="link">https://example.com &quot;鼠标悬停提示&quot;</span>)</span><br><span class="line"></span><br><span class="line">[<span class="string">相对链接</span>](<span class="link">/posts/about.html</span>)</span><br></pre></td></tr></table></figure><p>效果：<a href="https://example.com">显示文字</a></p><hr><h2 id="图片"><a href="#图片" class="headerlink" title="图片"></a>图片</h2><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">![<span class="string">替代文字</span>](<span class="link">https://example.com/image.png</span>)</span><br><span class="line"></span><br><span class="line">![<span class="string">带标题的图片</span>](<span class="link">https://example.com/image.png &quot;图片标题&quot;</span>)</span><br><span class="line"></span><br><span class="line">![<span class="string">本地图片</span>](<span class="link">/img/covers/blog-migration-guide.png</span>)</span><br></pre></td></tr></table></figure><hr><h2 id="引用"><a href="#引用" class="headerlink" title="引用"></a>引用</h2><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="quote">&gt; 这是一段引用。</span></span><br><span class="line"><span class="quote">&gt;</span></span><br><span class="line"><span class="quote">&gt; &gt; 这是嵌套引用。</span></span><br><span class="line"><span class="quote">&gt;</span></span><br><span class="line"><span class="quote">&gt; 引用可以包含多个段落，用空行分隔。</span></span><br></pre></td></tr></table></figure><p>效果：</p><blockquote><p>这是一段引用。</p><blockquote><p>这是嵌套引用。</p></blockquote><p>引用可以包含多个段落，用空行分隔。</p></blockquote><hr><h2 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h2><h3 id="行内代码"><a href="#行内代码" class="headerlink" title="行内代码"></a>行内代码</h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">在文字中可以用 <span class="code">`code`</span> 来表示代码片段。</span><br></pre></td></tr></table></figure><h3 id="代码块"><a href="#代码块" class="headerlink" title="代码块"></a>代码块</h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="code">```python</span></span><br><span class="line"><span class="code">def hello():</span></span><br><span class="line"><span class="code">    print(&quot;Hello, Markdown!&quot;)</span></span><br><span class="line"><span class="code">```</span></span><br><span class="line"></span><br><span class="line"><span class="code">```bash</span></span><br><span class="line"><span class="code"># 终端命令</span></span><br><span class="line"><span class="code">git add .</span></span><br><span class="line"><span class="code">git commit -m &quot;feat: add new feature&quot;</span></span><br><span class="line"><span class="code">```</span></span><br><span class="line"></span><br><span class="line"><span class="code">```javascript</span></span><br><span class="line"><span class="code">const greet = (name) =&gt; &#123;</span></span><br><span class="line"><span class="code">  return `Hello, $&#123;name&#125;!`;</span></span><br><span class="line"><span class="code">&#125;;</span></span><br><span class="line"><span class="code">```</span></span><br></pre></td></tr></table></figure><p>支持的语言标识：<code>python</code> <code>bash</code> <code>javascript</code> <code>html</code> <code>css</code> <code>json</code> <code>yaml</code> <code>go</code> <code>rust</code> 等。</p><hr><h2 id="表格"><a href="#表格" class="headerlink" title="表格"></a>表格</h2><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">| 左对齐 | 居中对齐 | 右对齐 |</span><br><span class="line">|:-------|:--------:|-------:|</span><br><span class="line">| 单元格 | 单元格   | 单元格 |</span><br><span class="line">| 内容   | 内容     | 内容   |</span><br></pre></td></tr></table></figure><p>效果：</p><div class="table-container"><table><thead><tr><th style="text-align:left">左对齐</th><th style="text-align:center">居中对齐</th><th style="text-align:right">右对齐</th></tr></thead><tbody><tr><td style="text-align:left">单元格</td><td style="text-align:center">单元格</td><td style="text-align:right">单元格</td></tr><tr><td style="text-align:left">内容</td><td style="text-align:center">内容</td><td style="text-align:right">内容</td></tr></tbody></table></div><hr><h2 id="分割线"><a href="#分割线" class="headerlink" title="分割线"></a>分割线</h2><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">---</span><br></pre></td></tr></table></figure><p>用三个或以上的 <code>-</code> <code>*</code> <code>_</code> 都可以。</p><hr><h2 id="转义字符"><a href="#转义字符" class="headerlink" title="转义字符"></a>转义字符</h2><p>在特殊符号前加反斜杠 <code>\</code> 即可显示原字符：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">\<span class="emphasis">*这不是斜体\*</span></span><br><span class="line">\[这不是链接\]</span><br></pre></td></tr></table></figure><hr><h2 id="进阶用法"><a href="#进阶用法" class="headerlink" title="进阶用法"></a>进阶用法</h2><h3 id="脚注"><a href="#脚注" class="headerlink" title="脚注"></a>脚注</h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">这是一段文字[^1]。</span><br><span class="line"></span><br><span class="line">[<span class="symbol">^1</span>]: <span class="link">这是脚注的内容，通常在页面底部显示。</span></span><br></pre></td></tr></table></figure><h3 id="锚点"><a href="#锚点" class="headerlink" title="锚点"></a>锚点</h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[<span class="string">跳转到标题</span>](<span class="link">#标题</span>)</span><br></pre></td></tr></table></figure><h3 id="Emoji"><a href="#Emoji" class="headerlink" title="Emoji"></a>Emoji</h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">:smile: :heart: :rocket: :fire:</span><br></pre></td></tr></table></figure><p>😄 ❤️ 🚀 🔥</p><h3 id="折叠块（HTML）"><a href="#折叠块（HTML）" class="headerlink" title="折叠块（HTML）"></a>折叠块（HTML）</h3><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">details</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">summary</span>&gt;</span>点击展开<span class="tag">&lt;/<span class="name">summary</span>&gt;</span></span><br><span class="line">  这里是被隐藏的内容。</span><br><span class="line"><span class="tag">&lt;/<span class="name">details</span>&gt;</span></span><br></pre></td></tr></table></figure><details>  <summary>点击展开</summary>  这里是被隐藏的内容。</details><hr><h2 id="Hexo-专属语法"><a href="#Hexo-专属语法" class="headerlink" title="Hexo 专属语法"></a>Hexo 专属语法</h2><p>本站基于 Hexo，额外支持：</p><h3 id="文章内嵌图片"><a href="#文章内嵌图片" class="headerlink" title="文章内嵌图片"></a>文章内嵌图片</h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#123;% asset<span class="emphasis">_img example.png 替代文字 %&#125;</span></span><br></pre></td></tr></table></figure><h3 id="文章摘要"><a href="#文章摘要" class="headerlink" title="文章摘要"></a>文章摘要</h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">这里是文章的开头部分，会被显示为摘要。</span><br><span class="line"></span><br><span class="line">&lt;!-- more --&gt;</span><br><span class="line"></span><br><span class="line">这里是「阅读全文」之后才会显示的内容。</span><br></pre></td></tr></table></figure><h3 id="资源文件夹引用"><a href="#资源文件夹引用" class="headerlink" title="资源文件夹引用"></a>资源文件夹引用</h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#123;% post<span class="emphasis">_link 文章标题 显示文字 %&#125;</span></span><br></pre></td></tr></table></figure><hr><h2 id="速查表"><a href="#速查表" class="headerlink" title="速查表"></a>速查表</h2><div class="table-container"><table><thead><tr><th>语法</th><th>效果</th></tr></thead><tbody><tr><td><code># 标题</code></td><td>一级标题</td></tr><tr><td><code>**文字**</code></td><td><strong>粗体</strong></td></tr><tr><td><code>*文字*</code></td><td><em>斜体</em></td></tr><tr><td><code>~~文字~~</code></td><td><del>删除线</del></td></tr><tr><td><code>`代码` </code></td><td><code>代码</code></td></tr><tr><td><code>&gt; 引用</code></td><td>引用块</td></tr><tr><td><code>- 列表</code></td><td>无序列表</td></tr><tr><td><code>1. 列表</code></td><td>有序列表</td></tr><tr><td><code>[文字](url)</code></td><td>链接</td></tr><tr><td><code>![](url)</code></td><td>图片</td></tr><tr><td><code>``` </code></td><td>代码块</td></tr><tr><td>`\</td><td>表 \</td><td>`</td><td>表格</td></tr><tr><td><code>---</code></td><td>分割线</td></tr></tbody></table></div><hr><blockquote><p><strong>Markdown 的核心就这些了。写多了自然就记住了，不记得的时候回来翻翻这篇就行。</strong></p></blockquote>]]></content>
    
    
      
      
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;Markdown 是一种轻量级标记语言，用简单的符号就能写出结构清晰的文档。这篇教程覆盖了最常用的语法，随查随用。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;标题&quot;&gt;&lt;a href=&quot;#标题&quot; class=&quot;headerlink</summary>
      
    
    
    
    <category term="教程" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/"/>
    
    <category term="Markdown" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/Markdown/"/>
    
    
    <category term="教程" scheme="https://blog.helijike.eu.org/tags/%E6%95%99%E7%A8%8B/"/>
    
    <category term="Markdown" scheme="https://blog.helijike.eu.org/tags/Markdown/"/>
    
    <category term="语法" scheme="https://blog.helijike.eu.org/tags/%E8%AF%AD%E6%B3%95/"/>
    
    <category term="速查" scheme="https://blog.helijike.eu.org/tags/%E9%80%9F%E6%9F%A5/"/>
    
  </entry>
  
  <entry>
    <title>换电脑后博客环境迁移指南</title>
    <link href="https://blog.helijike.eu.org/posts/b0e27be0.html"/>
    <id>https://blog.helijike.eu.org/posts/b0e27be0.html</id>
    <published>2026-05-21T01:05:00.000Z</published>
    <updated>2026-05-21T01:18:19.732Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>换电脑后怎么把博客环境搬过去？两种情况都帮你安排明白。</p></blockquote><hr><h2 id="前置准备：新电脑要装什么"><a href="#前置准备：新电脑要装什么" class="headerlink" title="前置准备：新电脑要装什么"></a>前置准备：新电脑要装什么</h2><p>不管哪种情况，新电脑都需要先装好这些：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># CachyOS / Arch Linux</span></span><br><span class="line">sudo pacman -S git nodejs npm</span><br><span class="line"></span><br><span class="line"><span class="comment"># Ubuntu / Debian</span></span><br><span class="line">sudo apt install git nodejs npm</span><br><span class="line"></span><br><span class="line"><span class="comment"># macOS</span></span><br><span class="line">brew install git node</span><br><span class="line"></span><br><span class="line"><span class="comment"># Windows（用 winget 一键装）</span></span><br><span class="line">winget install Git.Git</span><br><span class="line">winget install OpenJS.NodeJS</span><br></pre></td></tr></table></figure><p>然后配置 git 和 GitHub 认证（参考本站另一篇 <a href="/posts/a097f2.html">GitHub PAT 教程</a>）。</p><hr><h2 id="情况一：没存-U-盘-网盘"><a href="#情况一：没存-U-盘-网盘" class="headerlink" title="情况一：没存 U 盘 / 网盘"></a>情况一：没存 U 盘 / 网盘</h2><blockquote><p>前提：源码已推送到 GitHub（<code>hexo_blog-source</code> 仓库）</p></blockquote><h3 id="步骤"><a href="#步骤" class="headerlink" title="步骤"></a>步骤</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 1. 克隆源码仓库</span></span><br><span class="line">git <span class="built_in">clone</span> https://github.com/SEYYl/hexo_blog-source.git</span><br><span class="line"><span class="built_in">cd</span> hexo_blog-source</span><br><span class="line"></span><br><span class="line"><span class="comment"># 2. 切到 source 分支</span></span><br><span class="line">git checkout <span class="built_in">source</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 3. 安装 Hexo 及所有依赖</span></span><br><span class="line">npm install</span><br></pre></td></tr></table></figure><h3 id="4-检查主题"><a href="#4-检查主题" class="headerlink" title="4. 检查主题"></a>4. 检查主题</h3><p>Solitude 主题可能通过两种方式管理：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 方式 A：如果是 git submodule</span></span><br><span class="line">git submodule update --init --recursive</span><br><span class="line"></span><br><span class="line"><span class="comment"># 方式 B：如果是直接放在 themes/ 里（已随源码 push）</span></span><br><span class="line"><span class="built_in">ls</span> themes/solitude/   <span class="comment"># 能看到文件就说明齐了</span></span><br></pre></td></tr></table></figure><h3 id="5-添加-hexo-部署用的-remote"><a href="#5-添加-hexo-部署用的-remote" class="headerlink" title="5. 添加 hexo 部署用的 remote"></a>5. 添加 hexo 部署用的 remote</h3><p>源码仓库配了两个 remote，新电脑需要重新添加 public remote：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 查看已有 remote</span></span><br><span class="line">git remote -v</span><br><span class="line"><span class="comment"># 应该只有 origin</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 添加 public remote（用于 hexo deploy）</span></span><br><span class="line">git remote add public https://github.com/SEYYl/hexo_blog.git</span><br></pre></td></tr></table></figure><h3 id="6-验证"><a href="#6-验证" class="headerlink" title="6. 验证"></a>6. 验证</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 本地预览</span></span><br><span class="line">npx hexo server    <span class="comment"># http://localhost:4000</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 检查能否部署</span></span><br><span class="line">npx hexo deploy    <span class="comment"># 第一次会提示输入 GitHub PAT</span></span><br></pre></td></tr></table></figure><hr><h2 id="情况二：有备份（U-盘或网盘）"><a href="#情况二：有备份（U-盘或网盘）" class="headerlink" title="情况二：有备份（U 盘或网盘）"></a>情况二：有备份（U 盘或网盘）</h2><blockquote><p>虽然手动备份了，但最好还是和 GitHub 同步一下，避免版本混乱。</p></blockquote><h3 id="步骤-1"><a href="#步骤-1" class="headerlink" title="步骤"></a>步骤</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 1. 把备份复制到新电脑</span></span><br><span class="line"><span class="built_in">cp</span> -r /路径/U盘或网盘/boke1.0/boke /home/你的名字/下载/boke/</span><br><span class="line"><span class="built_in">cd</span> /home/你的名字/下载/boke/</span><br></pre></td></tr></table></figure><h3 id="2-确认-git-remote"><a href="#2-确认-git-remote" class="headerlink" title="2. 确认 git remote"></a>2. 确认 git remote</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git remote -v</span><br></pre></td></tr></table></figure><p>应该能看到：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">origin   https://github.com/SEYYl/hexo_blog-source.git (fetch)</span><br><span class="line">origin   https://github.com/SEYYl/hexo_blog-source.git (push)</span><br></pre></td></tr></table></figure><p>如果没有，重新添加：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">git remote add origin https://github.com/SEYYl/hexo_blog-source.git</span><br><span class="line">git remote add public https://github.com/SEYYl/hexo_blog.git</span><br></pre></td></tr></table></figure><h3 id="3-和-GitHub-同步（关键步骤）"><a href="#3-和-GitHub-同步（关键步骤）" class="headerlink" title="3. 和 GitHub 同步（关键步骤）"></a>3. 和 GitHub 同步（关键步骤）</h3><p>备份可能比 GitHub 上的版本旧，也可能新，先确认：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 拉取远程最新状态</span></span><br><span class="line">git fetch origin</span><br><span class="line"></span><br><span class="line"><span class="comment"># 查看本地和远程的差异</span></span><br><span class="line">git <span class="built_in">log</span> origin/source..HEAD   <span class="comment"># 本地有但远程没有的提交</span></span><br><span class="line">git <span class="built_in">log</span> HEAD..origin/source   <span class="comment"># 远程有但本地没有的提交</span></span><br></pre></td></tr></table></figure><p><strong>如果本地比远程新（备份时没 push）：</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git push origin <span class="built_in">source</span></span><br></pre></td></tr></table></figure><p><strong>如果远程比本地新（其他电脑上改过）：</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git pull origin <span class="built_in">source</span></span><br></pre></td></tr></table></figure><p><strong>如果有冲突：</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">git pull origin <span class="built_in">source</span> --rebase</span><br><span class="line"><span class="comment"># 解决冲突 → git add . → git rebase --continue</span></span><br></pre></td></tr></table></figure><h3 id="4-安装依赖"><a href="#4-安装依赖" class="headerlink" title="4. 安装依赖"></a>4. 安装依赖</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install</span><br></pre></td></tr></table></figure><h3 id="5-验证"><a href="#5-验证" class="headerlink" title="5. 验证"></a>5. 验证</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">npx hexo server</span><br><span class="line">npx hexo deploy</span><br></pre></td></tr></table></figure><hr><h2 id="两种方案对比"><a href="#两种方案对比" class="headerlink" title="两种方案对比"></a>两种方案对比</h2><div class="table-container"><table><thead><tr><th></th><th>情况一：无备份</th><th>情况二：有备份</th></tr></thead><tbody><tr><td>速度</td><td>慢（下载依赖）</td><td>快（依赖可能已装好）</td></tr><tr><td>安全性</td><td>100% 来自 GitHub</td><td>需手动同步</td></tr><tr><td>推荐度</td><td>⭐⭐⭐ 推荐</td><td>⭐⭐ 备用</td></tr><tr><td>前提</td><td>源码已 push</td><td>U 盘/网盘里有最新源码</td></tr></tbody></table></div><p><strong>建议</strong>：平时用情况一（纯从 GitHub 克隆），省心。U 盘备份当作「最终保险」，不用频繁更新。</p><hr><h2 id="从零开始的完整-checklist"><a href="#从零开始的完整-checklist" class="headerlink" title="从零开始的完整 checklist"></a>从零开始的完整 checklist</h2><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">□ 装 git、node、npm</span><br><span class="line">□ 配置 git 用户名和邮箱</span><br><span class="line">□ 配置 GitHub PAT 认证</span><br><span class="line">□ 克隆 hexo<span class="emphasis">_blog-source（或复制备份）</span></span><br><span class="line"><span class="emphasis">□ 切到 source 分支</span></span><br><span class="line"><span class="emphasis">□ 配置 git remote（origin + public）</span></span><br><span class="line"><span class="emphasis">□ npm install 安装依赖</span></span><br><span class="line"><span class="emphasis">□ 检查 themes/solitude/ 是否完整</span></span><br><span class="line"><span class="emphasis">□ npx hexo server 预览</span></span><br><span class="line"><span class="emphasis">□ npx hexo deploy 部署上线</span></span><br></pre></td></tr></table></figure><hr><blockquote><p><strong>一句话总结：</strong><br>源码在 GitHub 上 = 随时可以搬家。U 盘备份是保险，但不是必需品。</p></blockquote>]]></content>
    
    
      
      
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;换电脑后怎么把博客环境搬过去？两种情况都帮你安排明白。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;前置准备：新电脑要装什么&quot;&gt;&lt;a href=&quot;#前置准备：新电脑要装什么&quot; class=&quot;headerlink&quot; title=&quot;前</summary>
      
    
    
    
    <category term="教程" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/"/>
    
    <category term="Hexo" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/Hexo/"/>
    
    
    <category term="git" scheme="https://blog.helijike.eu.org/tags/git/"/>
    
    <category term="教程" scheme="https://blog.helijike.eu.org/tags/%E6%95%99%E7%A8%8B/"/>
    
    <category term="新电脑" scheme="https://blog.helijike.eu.org/tags/%E6%96%B0%E7%94%B5%E8%84%91/"/>
    
    <category term="hexo" scheme="https://blog.helijike.eu.org/tags/hexo/"/>
    
    <category term="迁移" scheme="https://blog.helijike.eu.org/tags/%E8%BF%81%E7%A7%BB/"/>
    
  </entry>
  
  <entry>
    <title>GitHub PAT 教程：新电脑配置指南</title>
    <link href="https://blog.helijike.eu.org/posts/a097f2.html"/>
    <id>https://blog.helijike.eu.org/posts/a097f2.html</id>
    <published>2026-05-21T00:40:55.000Z</published>
    <updated>2026-05-21T00:50:28.513Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>新电脑到手后，如何把代码推到 GitHub？这篇教程帮你一次搞定。</p></blockquote><hr><h2 id="为什么要用-PAT？"><a href="#为什么要用-PAT？" class="headerlink" title="为什么要用 PAT？"></a>为什么要用 PAT？</h2><p>2021 年 8 月起，GitHub 不再接受命令行密码登录。现在只能用两种方式认证：</p><div class="table-container"><table><thead><tr><th>方式</th><th>适用场景</th></tr></thead><tbody><tr><td><strong>Personal Access Token (PAT)</strong></td><td>简单快速，适合个人使用</td></tr><tr><td><strong>SSH Key</strong></td><td>更安全，适合多设备/团队</td></tr></tbody></table></div><p>对于个人开发者，PAT 是最简单的方式——生成一次，配置好就不用再管。</p><hr><h2 id="一、生成-Token"><a href="#一、生成-Token" class="headerlink" title="一、生成 Token"></a>一、生成 Token</h2><h3 id="1-进入设置"><a href="#1-进入设置" class="headerlink" title="1. 进入设置"></a>1. 进入设置</h3><p>登录 GitHub 后，点击右上角你的头像 → <strong>Settings</strong></p><h3 id="2-找到-Developer-settings"><a href="#2-找到-Developer-settings" class="headerlink" title="2. 找到 Developer settings"></a>2. 找到 Developer settings</h3><p>在左侧栏的最底部，点 <strong>Developer settings</strong></p><h3 id="3-进入-Token-管理"><a href="#3-进入-Token-管理" class="headerlink" title="3. 进入 Token 管理"></a>3. 进入 Token 管理</h3><p>左侧栏点开 <strong>Personal access tokens</strong> → <strong>Tokens (classic)</strong></p><p>然后点右上角的 <strong>Generate new token</strong> → <strong>Generate new token (classic)</strong></p><h3 id="4-配置权限"><a href="#4-配置权限" class="headerlink" title="4. 配置权限"></a>4. 配置权限</h3><p>页面跳转后，按以下内容填写：</p><div class="table-container"><table><thead><tr><th>字段</th><th>填写</th></tr></thead><tbody><tr><td><strong>Note</strong></td><td>随便起个名字，比如你的电脑名 <code>my-laptop</code></td></tr><tr><td><strong>Expiration</strong></td><td>选 <code>No expiration</code>（永不过期）或 <code>90 days</code></td></tr><tr><td><strong>Select scopes</strong></td><td>勾选 <strong>repo</strong>（整栏打勾）和 <strong>workflow</strong></td></tr></tbody></table></div><blockquote><p>💡 <code>repo</code> 权限让 token 可以读写你的所有仓库，<code>workflow</code> 允许推送 GitHub Actions。对个人项目来说这两项就够了。</p></blockquote><h3 id="5-生成并复制"><a href="#5-生成并复制" class="headerlink" title="5. 生成并复制"></a>5. 生成并复制</h3><p>拉到页面底部，点 <strong>Generate token</strong></p><p>你会看到一串以 <code>ghp_</code> 开头的字符串，像这样：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</span><br></pre></td></tr></table></figure><p>⚠️ <strong>这个页面关掉后就再也看不到了！</strong> 立刻点旁边的复制按钮，或者选中后 Ctrl+C，然后粘贴到记事本里临时保存一下。</p><h3 id="5-复制-Token"><a href="#5-复制-Token" class="headerlink" title="5. 复制 Token"></a>5. 复制 Token</h3><p>点 <strong>Generate token</strong>，你会看到一段像这样的字符串：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ghp_xx…xxxx</span><br></pre></td></tr></table></figure><p>⚠️ <strong>关掉页面就再也看不到了</strong>，立刻复制并保存到安全的地方。</p><hr><h2 id="二、新电脑配置"><a href="#二、新电脑配置" class="headerlink" title="二、新电脑配置"></a>二、新电脑配置</h2><h3 id="1-安装-git"><a href="#1-安装-git" class="headerlink" title="1. 安装 git"></a>1. 安装 git</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># CachyOS / Arch Linux</span></span><br><span class="line">sudo pacman -S git</span><br><span class="line"></span><br><span class="line"><span class="comment"># Ubuntu / Debian</span></span><br><span class="line">sudo apt install git</span><br><span class="line"></span><br><span class="line"><span class="comment"># macOS</span></span><br><span class="line">brew install git</span><br><span class="line"></span><br><span class="line"><span class="comment"># Windows</span></span><br><span class="line">winget install Git.Git</span><br></pre></td></tr></table></figure><h3 id="2-配置用户名和邮箱"><a href="#2-配置用户名和邮箱" class="headerlink" title="2. 配置用户名和邮箱"></a>2. 配置用户名和邮箱</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">git config --global user.name <span class="string">&quot;SEYYl&quot;</span></span><br><span class="line">git config --global user.email <span class="string">&quot;你的邮箱@example.com&quot;</span></span><br></pre></td></tr></table></figure><h3 id="3-配置-Token-存储（关键步骤）"><a href="#3-配置-Token-存储（关键步骤）" class="headerlink" title="3. 配置 Token 存储（关键步骤）"></a>3. 配置 Token 存储（关键步骤）</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git config --global credential.helper store</span><br></pre></td></tr></table></figure><p>这行命令让 git 把用户名和 token 保存到本地 <code>~/.git-credentials</code> 文件中。<strong>只需第一次输入，之后自动认证。</strong></p><h3 id="4-克隆项目并测试"><a href="#4-克隆项目并测试" class="headerlink" title="4. 克隆项目并测试"></a>4. 克隆项目并测试</h3><p>克隆任意一个仓库，第一次会提示输入密码：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git <span class="built_in">clone</span> https://github.com/你的用户名/你的项目.git</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">Username for &#x27;https://github.com&#x27;: 你的用户名</span><br><span class="line">Password for &#x27;https://你的用户名@github.com&#x27;: 粘贴你的token在这里</span><br></pre></td></tr></table></figure><p>成功后，token 已被保存。后续所有 <code>git push</code> / <code>git pull</code> 都不需要再输入。</p><p>验证一下：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> 你的项目</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;# test&quot;</span> &gt;&gt; README.md</span><br><span class="line">git add .</span><br><span class="line">git commit -m <span class="string">&quot;test push&quot;</span></span><br><span class="line">git push</span><br></pre></td></tr></table></figure><p>没有报错 → 搞定。</p><hr><h2 id="三、日常操作"><a href="#三、日常操作" class="headerlink" title="三、日常操作"></a>三、日常操作</h2><p>一切就绪后，正常工作流就是：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 修改代码 → 提交 → 推送</span></span><br><span class="line">git add .</span><br><span class="line">git commit -m <span class="string">&quot;做了什么改动&quot;</span></span><br><span class="line">git push</span><br></pre></td></tr></table></figure><p>git 会自动用存储的 token 认证，不需要任何额外操作。</p><hr><h2 id="四、多台电脑怎么管理"><a href="#四、多台电脑怎么管理" class="headerlink" title="四、多台电脑怎么管理"></a>四、多台电脑怎么管理</h2><p>每台新电脑重复「二、新电脑配置」的步骤即可。</p><div class="table-container"><table><thead><tr><th>电脑</th><th>Token 建议名</th></tr></thead><tbody><tr><td>主力笔记本</td><td><code>main-laptop</code></td></tr><tr><td>台式机</td><td><code>desktop-pc</code></td></tr><tr><td>临时设备</td><td>用完记得删除</td></tr></tbody></table></div><p><strong>如果 token 泄露</strong>：去 GitHub → Settings → Developer settings → Tokens → 点 <code>Delete</code> 删除，重新生成一个。</p><hr><h2 id="五、常见问题"><a href="#五、常见问题" class="headerlink" title="五、常见问题"></a>五、常见问题</h2><p><strong>Q: 提示 <code>remote: Invalid username or password.</code></strong></p><p>原因：token 过期或输入错了。重新生成一个，重新执行 <code>git push</code> 输入新 token。</p><p><strong>Q: 想换一台电脑的 token 怎么办？</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 清除已存储的 token</span></span><br><span class="line"><span class="built_in">rm</span> ~/.git-credentials</span><br><span class="line"></span><br><span class="line"><span class="comment"># 下次 push 时重新输入新 token</span></span><br><span class="line">git push</span><br></pre></td></tr></table></figure><p><strong>Q: 用 SSH 是不是更好？</strong></p><p>SSH 更安全，但配置步骤多一步（生成密钥 → 贴到 GitHub）。单台个人电脑用 PAT 完全够用。等你想深入了解时再切 SSH 也不迟。</p><hr><h2 id="六、一些建议"><a href="#六、一些建议" class="headerlink" title="六、一些建议"></a>六、一些建议</h2><ul><li><strong>给 Token 起有意义的名字</strong>：比如 <code>macbook-air</code> <code>desktop-ubuntu</code>，方便以后管理</li><li><strong>定期检查</strong>：去 GitHub Token 管理页面看看哪些还在用，不用的及时删掉</li><li><strong>别把 Token 贴到公开代码里</strong>：如果误操作了，立刻去 GitHub 撤销它</li></ul><hr><blockquote><p><strong>一句话总结：</strong><br>装 git → 设用户名 → 设 credential helper → clone 时输一次 token → 之后就忘了这件事。</p></blockquote>]]></content>
    
    
      
      
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;新电脑到手后，如何把代码推到 GitHub？这篇教程帮你一次搞定。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;为什么要用-PAT？&quot;&gt;&lt;a href=&quot;#为什么要用-PAT？&quot; class=&quot;headerlink&quot; title=</summary>
      
    
    
    
    <category term="教程" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/"/>
    
    <category term="Git" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/Git/"/>
    
    
    <category term="GitHub" scheme="https://blog.helijike.eu.org/tags/GitHub/"/>
    
    <category term="git" scheme="https://blog.helijike.eu.org/tags/git/"/>
    
    <category term="教程" scheme="https://blog.helijike.eu.org/tags/%E6%95%99%E7%A8%8B/"/>
    
    <category term="新电脑" scheme="https://blog.helijike.eu.org/tags/%E6%96%B0%E7%94%B5%E8%84%91/"/>
    
  </entry>
  
  <entry>
    <title>Hexo 博客上传同步指南</title>
    <link href="https://blog.helijike.eu.org/posts/c4d8e6b2.html"/>
    <id>https://blog.helijike.eu.org/posts/c4d8e6b2.html</id>
    <published>2026-05-19T16:50:00.000Z</published>
    <updated>2026-06-26T17:38:10.092Z</updated>
    
    <content type="html"><![CDATA[<h1 id="Hexo-博客上传同步指南"><a href="#Hexo-博客上传同步指南" class="headerlink" title="Hexo 博客上传同步指南"></a>Hexo 博客上传同步指南</h1><blockquote><p>我的博客分两个仓库：</p><ul><li><a href="https://github.com/SEYYl/hexo_blog-source"><code>hexo_blog-source</code></a> — 存源码（文章、主题、配置）</li><li><a href="https://github.com/SEYYl/hexo_blog"><code>hexo_blog</code></a> — 存生成后的静态文件（部署到 Pages）</li></ul></blockquote><p>每次写完文章，要同步两个地方。</p><hr><h2 id="写完后要做的事"><a href="#写完后要做的事" class="headerlink" title="写完后要做的事"></a>写完后要做的事</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 1. 生成静态文件</span></span><br><span class="line">hexo g</span><br><span class="line"></span><br><span class="line"><span class="comment"># 2. 本地预览（可选）</span></span><br><span class="line">hexo s</span><br><span class="line"><span class="comment"># 打开 http://localhost:4000 看看效果</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 3. 部署到 Pages（推送 public 到 hexo_blog）</span></span><br><span class="line">hexo d</span><br><span class="line"></span><br><span class="line"><span class="comment"># 4. 推送源码到 hexo_blog-source</span></span><br><span class="line">git add -A</span><br><span class="line">git commit -m <span class="string">&quot;新文章：xxx&quot;</span></span><br><span class="line">git push origin <span class="built_in">source</span></span><br></pre></td></tr></table></figure><hr><h2 id="流程拆解"><a href="#流程拆解" class="headerlink" title="流程拆解"></a>流程拆解</h2><h3 id="hexo-g-—-生成"><a href="#hexo-g-—-生成" class="headerlink" title="hexo g — 生成"></a><code>hexo g</code> — 生成</h3><p>把 Markdown 文章编译成 HTML，输出到 <code>public/</code> 目录。</p><h3 id="hexo-d-—-部署"><a href="#hexo-d-—-部署" class="headerlink" title="hexo d — 部署"></a><code>hexo d</code> — 部署</h3><p>把 <code>public/</code> 目录推送到 <code>hexo_blog</code> 仓库（已在 <code>_config.yml</code> 中配置好），Cloudflare Pages 检测到更新后自动部署。</p><h3 id="git-push-origin-source-—-保存源码"><a href="#git-push-origin-source-—-保存源码" class="headerlink" title="git push origin source — 保存源码"></a><code>git push origin source</code> — 保存源码</h3><p>把源文件（文章、图片、配置等）推送到 <code>hexo_blog-source</code>（<code>source</code> 分支），防止丢了。</p><blockquote><p>⚠️ 源码在 <code>source</code> 分支上，不要写成 <code>main</code>。</p></blockquote><hr><h2 id="只用记住这四行"><a href="#只用记住这四行" class="headerlink" title="只用记住这四行"></a>只用记住这四行</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">hexo g          <span class="comment"># 生成</span></span><br><span class="line">hexo d          <span class="comment"># 部署到 Pages</span></span><br><span class="line">git add -A      <span class="comment"># 收集源码改动</span></span><br><span class="line">git commit -m <span class="string">&quot;新文章&quot;</span>  <span class="comment"># 打包</span></span><br><span class="line">git push origin <span class="built_in">source</span>    <span class="comment"># 推送到源码仓库（source 分支）</span></span><br></pre></td></tr></table></figure><blockquote><p>顺序不能乱：先 <code>hexo g &amp;&amp; hexo d</code>，再 <code>git push</code>。</p></blockquote><hr><h2 id="补：从源码仓库恢复博客"><a href="#补：从源码仓库恢复博客" class="headerlink" title="补：从源码仓库恢复博客"></a>补：从源码仓库恢复博客</h2><p>换了电脑或重装系统后：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 注意拉 source 分支，不是 main</span></span><br><span class="line">git <span class="built_in">clone</span> -b <span class="built_in">source</span> https://github.com/SEYYl/hexo_blog-source.git</span><br><span class="line"><span class="built_in">cd</span> hexo_blog-source</span><br><span class="line">npm install</span><br></pre></td></tr></table></figure><p>然后就能继续写文章了。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;Hexo-博客上传同步指南&quot;&gt;&lt;a href=&quot;#Hexo-博客上传同步指南&quot; class=&quot;headerlink&quot; title=&quot;Hexo 博客上传同步指南&quot;&gt;&lt;/a&gt;Hexo 博客上传同步指南&lt;/h1&gt;&lt;blockquote&gt;
&lt;p&gt;我的博客分两个仓库：&lt;/p</summary>
      
    
    
    
    <category term="教程" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="Git" scheme="https://blog.helijike.eu.org/tags/Git/"/>
    
    <category term="GitHub" scheme="https://blog.helijike.eu.org/tags/GitHub/"/>
    
    <category term="Hexo" scheme="https://blog.helijike.eu.org/tags/Hexo/"/>
    
  </entry>
  
  <entry>
    <title>Git 三连操作备忘</title>
    <link href="https://blog.helijike.eu.org/posts/b2c8f4a3.html"/>
    <id>https://blog.helijike.eu.org/posts/b2c8f4a3.html</id>
    <published>2026-05-19T16:45:00.000Z</published>
    <updated>2026-05-20T10:18:18.577Z</updated>
    
    <content type="html"><![CDATA[<h1 id="Git-三连操作备忘"><a href="#Git-三连操作备忘" class="headerlink" title="Git 三连操作备忘"></a>Git 三连操作备忘</h1><blockquote><p>太久没动怕忘了，记在这里</p></blockquote><p>其实就是三步：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">git add -A        <span class="comment"># 1. 收集</span></span><br><span class="line">git commit -m <span class="string">&quot;…&quot;</span> <span class="comment"># 2. 打包</span></span><br><span class="line">git push          <span class="comment"># 3. 发货</span></span><br></pre></td></tr></table></figure><hr><h2 id="拆开看"><a href="#拆开看" class="headerlink" title="拆开看"></a>拆开看</h2><h3 id="git-add-A"><a href="#git-add-A" class="headerlink" title="git add -A"></a><code>git add -A</code></h3><p>告诉 Git “这些文件的改动我要了”。</p><ul><li>新文件、修改、删除，全包</li><li>也可以只加某个文件：<code>git add app.py</code></li></ul><h3 id="git-commit-m-quot-…-quot"><a href="#git-commit-m-quot-…-quot" class="headerlink" title="git commit -m &quot;…&quot;"></a><code>git commit -m &quot;…&quot;</code></h3><p>打成个包，写个标签说明改了啥。</p><ul><li>这个包<strong>只在本地</strong>，还没到 GitHub</li><li>说明文字写清楚改了什么东西，方便以后翻历史</li></ul><h3 id="git-push"><a href="#git-push" class="headerlink" title="git push"></a><code>git push</code></h3><p>把本地的包推到 GitHub 远程仓库。</p><ul><li>如果配置了 Render 自动部署，推到 GitHub 后它会自动重新部署</li></ul><hr><h2 id="完整流程（平时用的）"><a href="#完整流程（平时用的）" class="headerlink" title="完整流程（平时用的）"></a>完整流程（平时用的）</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 先看看改了哪些文件</span></span><br><span class="line">git status</span><br><span class="line"></span><br><span class="line"><span class="comment"># 确认没问题，全部打包</span></span><br><span class="line">git add -A</span><br><span class="line">git commit -m <span class="string">&quot;改了什么写这里&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 推到 GitHub</span></span><br><span class="line">git push</span><br></pre></td></tr></table></figure><hr><h2 id="想回滚怎么办"><a href="#想回滚怎么办" class="headerlink" title="想回滚怎么办"></a>想回滚怎么办</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 看历史版本</span></span><br><span class="line">git <span class="built_in">log</span> --oneline</span><br><span class="line"></span><br><span class="line"><span class="comment"># 回到某个版本（本地）</span></span><br><span class="line">git reset --hard &lt;版本号&gt;</span><br></pre></td></tr></table></figure><p><code>版本号</code> 就是从 <code>git log</code> 看到的那串字符，比如 <code>a1b2c3d</code>。</p><hr><h2 id="一句话总结"><a href="#一句话总结" class="headerlink" title="一句话总结"></a>一句话总结</h2><p><strong><code>add</code> 收集 → <code>commit</code> 打包 → <code>push</code> 发货。</strong></p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;Git-三连操作备忘&quot;&gt;&lt;a href=&quot;#Git-三连操作备忘&quot; class=&quot;headerlink&quot; title=&quot;Git 三连操作备忘&quot;&gt;&lt;/a&gt;Git 三连操作备忘&lt;/h1&gt;&lt;blockquote&gt;
&lt;p&gt;太久没动怕忘了，记在这里&lt;/p&gt;
&lt;/blockq</summary>
      
    
    
    
    <category term="教程" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="Git" scheme="https://blog.helijike.eu.org/tags/Git/"/>
    
    <category term="GitHub" scheme="https://blog.helijike.eu.org/tags/GitHub/"/>
    
  </entry>
  
  <entry>
    <title>我造了个叫 Markdownify 的小工具</title>
    <link href="https://blog.helijike.eu.org/posts/a7f3e2d1.html"/>
    <id>https://blog.helijike.eu.org/posts/a7f3e2d1.html</id>
    <published>2026-05-19T16:30:00.000Z</published>
    <updated>2026-05-20T10:18:28.590Z</updated>
    
    <content type="html"><![CDATA[<h1 id="我造了个叫-Markdownify-的小工具"><a href="#我造了个叫-Markdownify-的小工具" class="headerlink" title="我造了个叫 Markdownify 的小工具"></a>我造了个叫 Markdownify 的小工具</h1><blockquote><p>HTML / 网址 / 纯文本 → Markdown，一键搞定</p></blockquote><p>前段时间写博客、做笔记的时候老碰到一个麻烦：从网页复制内容到 Markdown 编辑器，格式全乱。要么粘出来一堆 HTML 标签，要么图片链接全丢了。</p><p>网上搜了一圈类似的工具，要么要注册，要么有广告，要么转换质量不行。于是我自己搞了一个——<strong>Markdownify</strong>。</p><h2 id="它是干什么的"><a href="#它是干什么的" class="headerlink" title="它是干什么的"></a>它是干什么的</h2><p>很简单：<strong>把东西变成 Markdown</strong>。支持三种输入方式：</p><ul><li><strong>HTML 代码</strong> — 粘贴直接转</li><li><strong>网页链接</strong> — 自动抓取并提取正文</li><li><strong>纯文本</strong> — 自动识别标题/列表/段落</li></ul><h2 id="几个我觉得好用的功能"><a href="#几个我觉得好用的功能" class="headerlink" title="几个我觉得好用的功能"></a>几个我觉得好用的功能</h2><h3 id="智能粘贴"><a href="#智能粘贴" class="headerlink" title="智能粘贴"></a>智能粘贴</h3><p>复制一段内容往输入框一贴，它会自动判断：</p><ul><li>贴的是 <code>https://...</code> → 直接抓取网页转 Markdown</li><li>贴的是 <code>&lt;html&gt;</code> → 自动切到 HTML 模式</li><li>贴的是纯文字 → 自动切到文本模式</li></ul><p>全程不用手动切换，贴完就有了。</p><h3 id="批量-URL-转换"><a href="#批量-URL-转换" class="headerlink" title="批量 URL 转换"></a>批量 URL 转换</h3><p>写研究类文章的时候最有用。把一堆链接贴进去：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">https://example.com/article1</span><br><span class="line">https://example.com/article2</span><br></pre></td></tr></table></figure><p>一次全抓完，合并成一个 Markdown 文件，每个来源带标题和链接。</p><h3 id="正文提取"><a href="#正文提取" class="headerlink" title="正文提取"></a>正文提取</h3><p>抓网页的时候自动去掉导航栏、广告、侧边栏，只留文章主体。用的是 readability 算法，和浏览器阅读模式同款。</p><h3 id="纯文本模式"><a href="#纯文本模式" class="headerlink" title="纯文本模式"></a>纯文本模式</h3><p>有时候不是 HTML，就是一段纯文字：</p><p>``text</p><h1 id="标题"><a href="#标题" class="headerlink" title="标题"></a>标题</h1><p>这是一段文字。</p><ul><li>列表项 1</li><li>列表项 2<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">它会自动转成格式化的 HTML 和 Markdown，段落用 `&lt;p&gt;` 包，列表用 `&lt;ul&gt;`，标题用 `&lt;h1&gt;`。</span><br><span class="line"></span><br><span class="line">## 长什么样</span><br><span class="line"></span><br><span class="line">界面有三套主题：</span><br><span class="line"></span><br><span class="line">- **浅色模式** — 默认的干净白底</span><br><span class="line">- **深色模式** — 护眼暗色</span><br><span class="line">- **赛博科技** — 蓝紫冷色风格（我最喜欢这个）</span><br><span class="line"></span><br><span class="line">布局支持堆叠和并排，宽屏下并排显示，左边编辑右边预览，效率很高。</span><br><span class="line"></span><br><span class="line">## 技术栈</span><br><span class="line"></span><br><span class="line">后端 Flask，前端原生 JS（没有框架，够用就行），核心库是 `html2text` 和 `readability-lxml`。</span><br><span class="line"></span><br><span class="line">项目开源在 GitHub：**[SEYYl/Markdownify](https://github.com/SEYYl/Markdownify)**</span><br><span class="line"></span><br><span class="line">## 在线体验</span><br><span class="line"></span><br><span class="line">👉 [https://html-to-md-qfrj.onrender.com](https://html-to-md-qfrj.onrender.com)</span><br><span class="line"></span><br><span class="line">Render 免费实例可能会休眠，第一次打开等几秒就好。</span><br><span class="line"></span><br><span class="line">## 本地跑</span><br><span class="line"></span><br><span class="line">```bash</span><br><span class="line">git clone https://github.com/SEYYl/Markdownify.git</span><br><span class="line">cd Markdownify</span><br><span class="line">python -m venv venv</span><br><span class="line">source venv/bin/activate</span><br><span class="line">pip install -r requirements.txt</span><br><span class="line">python app.py</span><br></pre></td></tr></table></figure></li></ul><p>打开 <code>http://localhost:5000</code> 就能用。</p><p>也可以用 Docker：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">docker build -t markdownify .</span><br><span class="line">docker run -d -p 5000:5000 markdownify</span><br></pre></td></tr></table></figure><h2 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h2><p>这个工具最初只是自己用用，后来越加越多功能——批量转换、正文提取、纯文本识别、历史记录、HTML 格式化……干脆认真做了个开源项目。</p><p>如果你也有类似的痛点，试试看。有用的话点个 Star ⭐</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;我造了个叫-Markdownify-的小工具&quot;&gt;&lt;a href=&quot;#我造了个叫-Markdownify-的小工具&quot; class=&quot;headerlink&quot; title=&quot;我造了个叫 Markdownify 的小工具&quot;&gt;&lt;/a&gt;我造了个叫 Markdownify 的小</summary>
      
    
    
    
    <category term="工具" scheme="https://blog.helijike.eu.org/categories/%E5%B7%A5%E5%85%B7/"/>
    
    
    <category term="Markdown" scheme="https://blog.helijike.eu.org/tags/Markdown/"/>
    
    <category term="Flask" scheme="https://blog.helijike.eu.org/tags/Flask/"/>
    
    <category term="开源" scheme="https://blog.helijike.eu.org/tags/%E5%BC%80%E6%BA%90/"/>
    
    <category term="Python" scheme="https://blog.helijike.eu.org/tags/Python/"/>
    
  </entry>
  
  <entry>
    <title>WordPress博客一步一步部署教程</title>
    <link href="https://blog.helijike.eu.org/posts/87b19224.html"/>
    <id>https://blog.helijike.eu.org/posts/87b19224.html</id>
    <published>2026-04-26T07:25:35.000Z</published>
    <updated>2026-05-18T16:42:59.037Z</updated>
    
    <content type="html"><![CDATA[<h1 id="WordPress-博客一步一步部署教程（小白友好版）"><a href="#WordPress-博客一步一步部署教程（小白友好版）" class="headerlink" title="WordPress 博客一步一步部署教程（小白友好版）"></a>WordPress 博客一步一步部署教程（小白友好版）</h1><p>我这次使用 <strong>WordPress</strong> 这个经典博客项目来一步步讲解，如何部署一个属于自己的博客。  </p><p>虽然这些内容看起来很基础，但对不同领域的小白来说还是有一定难度的。所以我写了这篇超详细教程，每一步都配有设置步骤和截图说明，力求不遗漏任何细节，让小白也能一遍就学会怎么搭建和部署。</p><hr><h2 id="第一阶段：配置-Cloudflare-CDN-与-SSL-证书"><a href="#第一阶段：配置-Cloudflare-CDN-与-SSL-证书" class="headerlink" title="第一阶段：配置 Cloudflare CDN 与 SSL 证书"></a>第一阶段：配置 Cloudflare CDN 与 SSL 证书</h2><p>在开始操作服务器之前，我们先把域名解析和 HTTPS 加密处理好，避免后面出现重定向错误。</p><h3 id="1-域名解析"><a href="#1-域名解析" class="headerlink" title="1. 域名解析"></a>1. 域名解析</h3><ol><li>登录 Cloudflare 控制台，进入你的域名管理页面。</li><li>找到 <strong>DNS → 记录</strong>。</li><li>添加两条 <strong>A 记录</strong>：<ul><li><code>@</code>（主域名）</li><li><code>www</code></li></ul></li><li>两条记录都指向你的 VPS IP 地址。</li><li><strong>关键点</strong>：确保记录后面的黄色云朵图标是<strong>打开状态</strong>（启用 Cloudflare CDN 服务）。</li></ol><h3 id="2-生成源服务器证书"><a href="#2-生成源服务器证书" class="headerlink" title="2. 生成源服务器证书"></a>2. 生成源服务器证书</h3><ol><li>在 Cloudflare 左侧菜单找到 <strong>SSL/TLS → 源服务器</strong>。</li><li>点击“创建证书”按钮，保持默认设置生成即可。</li><li>生成后会显示两段内容：<ul><li>PEM（证书）</li><li>KEY（私钥）</li></ul></li><li>把这两段内容<strong>复制并临时保存到记事本</strong>，后面马上要用。</li></ol><hr><h2 id="第二阶段：宝塔环境配置"><a href="#第二阶段：宝塔环境配置" class="headerlink" title="第二阶段：宝塔环境配置"></a>第二阶段：宝塔环境配置</h2><p>我这里为了节约步骤，直接使用宝塔的<strong>一键部署</strong>功能，里面有很多常见网站的一键式部署模板，非常适合小白。</p><h3 id="1-添加站点"><a href="#1-添加站点" class="headerlink" title="1. 添加站点"></a>1. 添加站点</h3><ul><li>点击左侧导航栏的 <strong>网站</strong>。</li><li>在“PHP 项目”分类下，点击<strong>添加站点</strong>。</li></ul><h3 id="2-一键部署-WordPress"><a href="#2-一键部署-WordPress" class="headerlink" title="2. 一键部署 WordPress"></a>2. 一键部署 WordPress</h3><ol><li>切换到 <strong>一键部署</strong> 选项卡。</li><li>选择 <strong>WordPress 6.9</strong>（版本可能不是最新的，后续可自行升级）。</li><li>在“域名”输入框中填入你的域名。</li><li>其他选项保持默认，点击部署。</li></ol><p>部署完成后会弹出<strong>数据库用户名和密码</strong>，请<strong>截图保存</strong>。<br>如果不小心关掉了也没关系，后续可以在“数据库”菜单里找到对应的数据库，获取账号和密码。</p><h3 id="3-SSL-证书配置"><a href="#3-SSL-证书配置" class="headerlink" title="3. SSL 证书配置"></a>3. SSL 证书配置</h3><ol><li>点击刚刚创建好的网站，进入<strong>设置</strong>。</li><li>找到 <strong>SSL</strong> 菜单。</li><li>把刚才在 Cloudflare 生成的<strong>证书（PEM）</strong>和<strong>私钥（KEY）</strong>分别复制到对应位置（注意不要搞反）。</li><li>开启<strong>强制 SSL</strong>，让网站全局走 HTTPS 协议。</li></ol><h3 id="4-设置伪静态规则"><a href="#4-设置伪静态规则" class="headerlink" title="4. 设置伪静态规则"></a>4. 设置伪静态规则</h3><ol><li>找到 <strong>伪静态</strong> 菜单。</li><li>在下拉列表中选择 <strong>WordPress</strong>。</li><li>点击保存。</li></ol><hr><h2 id="第三阶段：安装-WordPress"><a href="#第三阶段：安装-WordPress" class="headerlink" title="第三阶段：安装 WordPress"></a>第三阶段：安装 WordPress</h2><p>后面就是点点点就能完成的简单操作了。</p><h3 id="1-选择语言"><a href="#1-选择语言" class="headerlink" title="1. 选择语言"></a>1. 选择语言</h3><p>访问你的域名，会自动跳转到 WordPress 安装向导。<br>选择 <strong>简体中文</strong> → 点击继续。</p><h3 id="2-欢迎页面"><a href="#2-欢迎页面" class="headerlink" title="2. 欢迎页面"></a>2. 欢迎页面</h3><p>直接点击 <strong>继续</strong>。</p><h3 id="3-填写数据库信息"><a href="#3-填写数据库信息" class="headerlink" title="3. 填写数据库信息"></a>3. 填写数据库信息</h3><ul><li>数据库名</li><li>用户名</li><li>密码<br>其他保持默认即可。</li></ul><blockquote><p><strong>补充</strong>：如果没保存数据库账号密码也没关系。<br>进入宝塔左侧 <strong>数据库</strong> 菜单，找到和你域名一致的数据库，复制账号（表名和账号名一致）和密码。</p></blockquote><h3 id="4-运行安装"><a href="#4-运行安装" class="headerlink" title="4. 运行安装"></a>4. 运行安装</h3><p>数据库信息填写正确后，会看到“不错。您完成了安装过程…”的提示，点击 <strong>运行安装程序</strong>。</p><h3 id="5-设置网站基本信息"><a href="#5-设置网站基本信息" class="headerlink" title="5. 设置网站基本信息"></a>5. 设置网站基本信息</h3><p>填写以下内容：</p><ul><li>站点标题</li><li>管理员用户名</li><li>登录密码（自动生成的密码请务必保存好）</li><li>邮箱</li></ul><h3 id="6-登录后台"><a href="#6-登录后台" class="headerlink" title="6. 登录后台"></a>6. 登录后台</h3><p>使用刚才设置的账号（或邮箱+密码）登录。<br>登录成功后即可进入 WordPress 后台，开始设置自己的个人内容啦！</p><hr><h2 id="第四阶段：配置自动备份（必须做！）"><a href="#第四阶段：配置自动备份（必须做！）" class="headerlink" title="第四阶段：配置自动备份（必须做！）"></a>第四阶段：配置自动备份（必须做！）</h2><p>网站搭建好后，<strong>数据备份是重中之重</strong>。我们用宝塔的计划任务功能，每天自动备份网站文件和数据库。</p><h3 id="1-添加网站文件备份"><a href="#1-添加网站文件备份" class="headerlink" title="1. 添加网站文件备份"></a>1. 添加网站文件备份</h3><ol><li>找到 <strong>计划任务</strong> 菜单。</li><li>选择 <strong>备份网站</strong>。</li><li>默认备份所有网站，保留最新 <strong>3 份</strong>（节省硬盘空间）。</li></ol><h3 id="2-添加数据库备份"><a href="#2-添加数据库备份" class="headerlink" title="2. 添加数据库备份"></a>2. 添加数据库备份</h3><p>同样方式，选择 <strong>备份数据库</strong>，设置默认参数后确认。</p><hr><p>到这里，你的 <strong>WordPress 网站就已经部署完毕</strong>！</p><ul><li>已配置 Cloudflare CDN 加速  </li><li>全站 HTTPS 加密  </li><li>完善的伪静态规则  </li><li>每天自动备份的安全保障  </li></ul><p>后续安装插件、主题优化等操作，就看你有没有时间慢慢折腾啦～  </p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;WordPress-博客一步一步部署教程（小白友好版）&quot;&gt;&lt;a href=&quot;#WordPress-博客一步一步部署教程（小白友好版）&quot; class=&quot;headerlink&quot; title=&quot;WordPress 博客一步一步部署教程（小白友好版）&quot;&gt;&lt;/a&gt;WordP</summary>
      
    
    
    
    <category term="教程" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/"/>
    
    <category term="WordPress" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/WordPress/"/>
    
    
    <category term="建站" scheme="https://blog.helijike.eu.org/tags/%E5%BB%BA%E7%AB%99/"/>
    
    <category term="WordPress" scheme="https://blog.helijike.eu.org/tags/WordPress/"/>
    
  </entry>
  
  <entry>
    <title>配置七牛云 Kodo 存储</title>
    <link href="https://blog.helijike.eu.org/posts/b86c2edc.html"/>
    <id>https://blog.helijike.eu.org/posts/b86c2edc.html</id>
    <published>2026-04-21T16:49:17.000Z</published>
    <updated>2026-05-18T16:42:59.038Z</updated>
    
    <content type="html"><![CDATA[<h1 id="为博客图片配置七牛云-Kodo-存储，彻底杜绝盗刷流量"><a href="#为博客图片配置七牛云-Kodo-存储，彻底杜绝盗刷流量" class="headerlink" title="为博客图片配置七牛云 Kodo 存储，彻底杜绝盗刷流量"></a>为博客图片配置七牛云 Kodo 存储，彻底杜绝盗刷流量</h1><blockquote><p>记录一次从“公开空间”到“私有空间 + CDN 防盗链”的完整折腾过程</p></blockquote><p>我的博客（<a href="https://blog.nanyu.xin">blog.nanyu.xin</a>）使用的是 <strong>Anheyu</strong> 博客框架。随着文章越来越多，本地服务器的存储压力逐渐变大，于是决定把图片搬到云对象存储上。我选择了七牛云的 Kodo 服务，便宜、稳定，而且新用户有免费额度。</p><p>但是，<strong>对象存储最怕的就是盗刷流量</strong>——如果有人把你的图片链接贴到其他网站，或者直接用脚本疯狂请求，一天就能刷掉你几个月的套餐费用。为了避免这种情况，我需要一套比较完善的安全配置。</p><p>经过一番摸索（期间也遇到了一些坑），终于配置好了。下面是我的完整过程，希望对你有帮助。</p><h3 id="💎-我的部署环境"><a href="#💎-我的部署环境" class="headerlink" title="💎 我的部署环境"></a>💎 我的部署环境</h3><ul><li><p><strong>服务器管理面板</strong>：1Panel</p></li><li><p><strong>博客框架</strong>：Anheyu-app（基于 Golang + Vue3 构建）</p></li><li><p><strong>部署方式</strong>：Docker Compose</p></li></ul><h2 id="一、创建存储空间-——-第一步就选“私有”"><a href="#一、创建存储空间-——-第一步就选“私有”" class="headerlink" title="一、创建存储空间 —— 第一步就选“私有”"></a>一、创建存储空间 —— 第一步就选“私有”</h2><p>进入七牛云控制台 → 对象存储 Kodo → 新建空间。</p><p><strong>关键点</strong>：访问控制一定要选择 <strong>“私有”</strong>。如果选了“公开”，任何人都能直接访问你的图片，防盗链效果会大打折扣。</p><p>创建完成后，记下你的 <strong>空间名称</strong> 和 <strong>存储区域</strong>（比如我的是 <code>my-anheyu-tupian</code>，区域 <code>华南-广东</code>）。</p><h2 id="二、绑定自定义域名并配置-HTTPS"><a href="#二、绑定自定义域名并配置-HTTPS" class="headerlink" title="二、绑定自定义域名并配置 HTTPS"></a>二、绑定自定义域名并配置 HTTPS</h2><p>七牛云提供的测试域名（如 <code>xxx.clouddn.com</code>）有诸多限制，而且不支持私有空间的高级配置。<strong>强烈建议绑定自己的域名</strong>。</p><ol><li><p>在七牛云 Kodo 空间管理 → <strong>域名管理</strong> → 绑定你自己的域名，例如 <code>anheyutupian.nanyu.xin</code>。</p></li><li><p>按照提示去你的域名 DNS 服务商（如阿里云、腾讯云）添加 <strong>CNAME 记录</strong>，指向七牛云给出的地址。</p></li><li><p><strong>申请 SSL 证书</strong>：七牛云提供免费的 TrustAsia 单域名证书，有效期为 90 天。在 CDN 域名的 <strong>HTTPS 配置</strong> 中申请并绑定。</p><ul><li><p>注意：申请时需要添加一条 <strong>TXT 解析记录</strong> 验证域名所有权。添加后稍等几分钟，验证通过即可签发证书。</p></li><li><p><strong>证书签发后，务必开启 HTTPS</strong>，否则博客（如果用的是 HTTPS）会因为混合内容而拦截图片。</p></li></ul></li></ol><h2 id="三、CDN-访问控制-——-防盗链的核心"><a href="#三、CDN-访问控制-——-防盗链的核心" class="headerlink" title="三、CDN 访问控制 —— 防盗链的核心"></a>三、CDN 访问控制 —— 防盗链的核心</h2><p>图片存储的访问路径是：<strong>用户 → CDN 域名 → 七牛云私有存储空间</strong>。所以防盗链主要在 <strong>CDN 层</strong> 实现。</p><p>进入七牛云 <strong>CDN 控制台</strong> → 域名管理 → 找到你绑定的域名（例如 <code>anheyutupian.nanyu.xin</code>）→ <strong>访问控制</strong>。</p><h3 id="1-Referer-防盗链"><a href="#1-Referer-防盗链" class="headerlink" title="1. Referer 防盗链"></a>1. Referer 防盗链</h3><ul><li><p>模式选择 <strong>“白名单”</strong>。</p></li><li><p>填入你博客的域名：<code>blog.nanyu.xin</code> 以及 <code>*.nanyu.xin</code>（通配符可以匹配所有子域名）。</p></li><li><p><strong>禁止空 Referer</strong>：取消勾选“允许空 Referer”。这样直接粘贴图片链接到浏览器地址栏也会被拒绝（返回 403）。</p></li></ul><h3 id="2-回源鉴权-——-必须开启"><a href="#2-回源鉴权-——-必须开启" class="headerlink" title="2. 回源鉴权 —— 必须开启"></a>2. 回源鉴权 —— 必须开启</h3><p>因为你的存储空间是 <strong>私有</strong> 的，CDN 必须获得授权才能从空间拉取图片。所以 <strong>“回源鉴权”</strong> 一定要设置为 <strong>“已开启”</strong>。</p><p>如果这一步没开，你博客上的所有图片都会 403。</p><h3 id="3-IP-黑白名单（备用）"><a href="#3-IP-黑白名单（备用）" class="headerlink" title="3. IP 黑白名单（备用）"></a>3. IP 黑白名单（备用）</h3><p>目前可以不配置。如果以后发现某个 IP 疯狂刷流量，可以直接在这里拉黑。</p><h2 id="四、Anheyu-博客存储策略配置"><a href="#四、Anheyu-博客存储策略配置" class="headerlink" title="四、Anheyu 博客存储策略配置"></a>四、Anheyu 博客存储策略配置</h2><p>登录 Anheyu 博客后台（地址通常是 <code>https://你的博客域名/login</code>），找到存储策略配置的地方（一般在 <code>后台 -&gt; 系统管理 -&gt; 存储策略</code>，具体路径可参考官方文档）。</p><blockquote><p><strong>注意</strong>：由于我部署时使用了 <code>1Panel</code> 和 <code>Docker Compose</code>，因此在 Anheyu 后台填入的配置项与标准部署方式完全相同，具体取决于后台的表单字段。</p></blockquote><p>需要填写的关键项：</p><div class="table-container"><table><thead><tr><th>配置项</th><th>填写内容</th><th>说明</th></tr></thead><tbody><tr><td>存储空间</td><td>my-anheyu-tupian</td><td>你在七牛云创建的空间名称</td></tr><tr><td>存储区域</td><td>华南-广东</td><td>与创建时一致</td></tr><tr><td>AccessKey / SecretKey</td><td>从七牛云“密钥管理”获取</td><td>注意保密</td></tr><tr><td>访问域名</td><td><a href="https://anheyutupian.nanyu.xin">https://anheyutupian.nanyu.xin</a></td><td>绑定的自定义域名，必须带 https://</td></tr><tr><td>私有空间</td><td>开启</td><td>这个开关非常重要！如果不开启，Anheyu 不会生成带签名的链接，导致访问失败</td></tr><tr><td>存储根目录</td><td>/anheyu</td><td>可选，方便管理文件</td></tr></tbody></table></div><h2 id="五、踩坑与解决"><a href="#五、踩坑与解决" class="headerlink" title="五、踩坑与解决"></a>五、踩坑与解决</h2><h3 id="坑1：图片一直显示-“This-image-couldn’t-be-loaded”"><a href="#坑1：图片一直显示-“This-image-couldn’t-be-loaded”" class="headerlink" title="坑1：图片一直显示 “This image couldn’t be loaded”"></a>坑1：图片一直显示 “This image couldn’t be loaded”</h3><p><strong>原因</strong>：我忘记在 Anheyu 存储策略中开启 <strong>“私有空间”</strong> 开关。<br><strong>解决</strong>：打开开关，保存，刷新博客 → 图片恢复正常。</p><h3 id="坑2：HTTPS-证书验证失败"><a href="#坑2：HTTPS-证书验证失败" class="headerlink" title="坑2：HTTPS 证书验证失败"></a>坑2：HTTPS 证书验证失败</h3><p><strong>原因</strong>：申请证书时添加的 TXT 记录没有生效，或者主机记录写错了（应该是 <code>_dnsauth.anheyutupian</code>，而不是 <code>_dnsauth.anheyutupian.nanyu.xin</code>）。<br><strong>解决</strong>：去 DNS 管理后台仔细核对记录值，等待生效后重新验证。</p><h3 id="坑3：存储空间的-Referer-防盗链要不要开？"><a href="#坑3：存储空间的-Referer-防盗链要不要开？" class="headerlink" title="坑3：存储空间的 Referer 防盗链要不要开？"></a>坑3：存储空间的 Referer 防盗链要不要开？</h3><p><strong>不要开</strong>。因为你的存储空间已经是私有模式，并且 CDN 已经开启了回源鉴权。如果存储空间再开启 Referer 防盗链，CDN 的回源请求可能会因为没有 Referer 而被拒绝，导致图片 403。<strong>CDN 负责防盗链，存储空间只负责私有鉴权</strong>，各司其职即可。</p><h3 id="坑4：在-1Panel-中如何修改-docker-compose-yml-的环境变量？"><a href="#坑4：在-1Panel-中如何修改-docker-compose-yml-的环境变量？" class="headerlink" title="坑4：在 1Panel 中如何修改 docker-compose.yml 的环境变量？"></a>坑4：在 <code>1Panel</code> 中如何修改 <code>docker-compose.yml</code> 的环境变量？</h3><p><strong>原因</strong>：修改环境变量后，需要重启容器才能生效，但直接在 <code>1Panel</code> 界面操作有时容易遗漏。<br><strong>解决</strong>：进入 <code>1Panel</code> → <strong>容器</strong> → <strong>编排</strong>，找到你的 <code>anheyu</code> 编排，点击编辑，修改环境变量后保存，<code>1Panel</code> 会自动应用更改并重启服务。或者你也可以直接修改服务器上的 <code>.env</code> 文件，再在 <code>1Panel</code> 界面中重建应用。</p><h2 id="六、最终效果验证"><a href="#六、最终效果验证" class="headerlink" title="六、最终效果验证"></a>六、最终效果验证</h2><p>配置完成后，你可以做两个测试：</p><ol><li><p><strong>正常访问</strong>：打开你的博客文章，图片应该正常显示。</p></li><li><p><strong>盗链测试</strong>：复制一张图片的完整 URL，在浏览器的无痕模式中直接打开。此时因为 Referer 为空，且你设置了“禁止空 Referer”，所以应该返回 <strong>403 Forbidden</strong>。</p></li></ol><h2 id="七、总结"><a href="#七、总结" class="headerlink" title="七、总结"></a>七、总结</h2><p>现在的安全配置如下：</p><div class="table-container"><table><thead><tr><th>配置项</th><th>状态</th><th>作用</th></tr></thead><tbody><tr><td>存储空间访问控制</td><td>私有</td><td>杜绝公开访问</td></tr><tr><td>CDN 回源鉴权</td><td>已开启</td><td>允许 CDN 拉取私有空间文件</td></tr><tr><td>CDN Referer 防盗链</td><td>白名单 + 禁止空 Referer</td><td>只允许博客域名访问</td></tr><tr><td>CDN HTTPS</td><td>已开启 + 有效证书</td><td>避免混合内容拦截</td></tr><tr><td>Anheyu 存储策略私有空间</td><td>已开启</td><td>生成带签名的临时链接</td></tr></tbody></table></div><p>这套配置基本可以防止绝大多数恶意刷流量和盗链行为。当然，如果以后遇到更高级的攻击（比如伪造 Referer），还可以考虑开启 <strong>时间戳防盗链</strong> 或配置 <strong>IP 黑白名单</strong>，不过对于个人博客来说，目前已经足够安全了。</p><p>希望这篇博客能帮你少踩一些坑。如果你也使用 <code>Anheyu</code> + <code>七牛云</code>，照着配一遍，应该就能安心使用啦。</p><blockquote><p>博客框架：<a href="https://github.com/anzhiyu-c/anheyu-app">Anheyu-app</a><br>我的博客：<a href="https://blog.nanyu.xin">南夕桥</a></p></blockquote>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;为博客图片配置七牛云-Kodo-存储，彻底杜绝盗刷流量&quot;&gt;&lt;a href=&quot;#为博客图片配置七牛云-Kodo-存储，彻底杜绝盗刷流量&quot; class=&quot;headerlink&quot; title=&quot;为博客图片配置七牛云 Kodo 存储，彻底杜绝盗刷流量&quot;&gt;&lt;/a&gt;为博客图片</summary>
      
    
    
    
    <category term="教程" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="七牛云" scheme="https://blog.helijike.eu.org/tags/%E4%B8%83%E7%89%9B%E4%BA%91/"/>
    
    <category term="图床" scheme="https://blog.helijike.eu.org/tags/%E5%9B%BE%E5%BA%8A/"/>
    
  </entry>
  
  <entry>
    <title>从零开始：我和 AI 一起在 CachyOS 上装好了中文输入法</title>
    <link href="https://blog.helijike.eu.org/posts/8452a9f.html"/>
    <id>https://blog.helijike.eu.org/posts/8452a9f.html</id>
    <published>2026-04-21T16:47:28.000Z</published>
    <updated>2026-05-18T16:42:59.037Z</updated>
    
    <content type="html"><![CDATA[<h1 id="从零开始：我和-AI-一起在-CachyOS-上装好了中文输入法"><a href="#从零开始：我和-AI-一起在-CachyOS-上装好了中文输入法" class="headerlink" title="从零开始：我和 AI 一起在 CachyOS 上装好了中文输入法"></a>从零开始：我和 AI 一起在 CachyOS 上装好了中文输入法</h1><blockquote><p>一个 Linux 小白的真实经历，全程记录 + 保姆级教程</p></blockquote><p>前两天我装了 CachyOS（一个基于 Arch 的 Linux 发行版），系统很流畅，界面也漂亮。但遇到一个头疼的问题：<strong>没法打中文</strong>。</p><p>网上搜了一堆教程，有的太老，有的太乱。最后我决定直接问 AI。没想到，跟着它的回答一步步做，竟然真的搞定了。</p><p>下面就是我们的完整对话记录，我把所有步骤重新整理了一遍，保证<strong>简单、清晰、能看懂</strong>。</p><hr><h2 id="一、我先问了-AI-最基本的问题"><a href="#一、我先问了-AI-最基本的问题" class="headerlink" title="一、我先问了 AI 最基本的问题"></a>一、我先问了 AI 最基本的问题</h2><p><strong>我：</strong></p><blockquote><p>CachyOS 安装中文输入法，怎么安装？具体流程是什么？</p></blockquote><p><strong>AI 的回答很直接：</strong><br>它说 CachyOS 基于 Arch，最推荐用 <strong>Fcitx5</strong> 框架。但是也要看桌面环境（Desktop Environment，简称 DE）。<br>然后它甩给我一张表格，让我先搞清楚自己用的是哪个桌面。</p><div class="table-container"><table><thead><tr><th>桌面环境</th><th>推荐输入法框架</th><th>特别提醒</th></tr></thead><tbody><tr><td>KDE Plasma + Wayland</td><td>Fcitx5</td><td>必须额外设置虚拟键盘</td></tr><tr><td>KDE Plasma + X11</td><td>Fcitx5</td><td>正常装就行</td></tr><tr><td>GNOME + Wayland</td><td>IBus</td><td>GNOME 用 IBus 最省心</td></tr><tr><td>Xfce / LXQt / 其他</td><td>Fcitx5</td><td>通用方案</td></tr></tbody></table></div><p><strong>我一看：</strong> 我装的是 KDE Plasma，而且用 <code>echo $XDG_SESSION_TYPE</code> 一查，输出 <code>wayland</code>。所以我要走 <strong>Fcitx5 + 虚拟键盘</strong> 这条路。</p><hr><h2 id="二、跟着-AI-的步骤，开始安装"><a href="#二、跟着-AI-的步骤，开始安装" class="headerlink" title="二、跟着 AI 的步骤，开始安装"></a>二、跟着 AI 的步骤，开始安装</h2><h3 id="第-1-步：安装-Fcitx5-和中文组件"><a href="#第-1-步：安装-Fcitx5-和中文组件" class="headerlink" title="第 1 步：安装 Fcitx5 和中文组件"></a>第 1 步：安装 Fcitx5 和中文组件</h3><p>打开终端（就是那个黑窗口），复制粘贴下面这行：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">sudo pacman -Syu</span><br><span class="line">sudo pacman -S fcitx5 fcitx5-chinese-addons fcitx5-configtool fcitx5-qt fcitx5-gtk</span><br></pre></td></tr></table></figure><p>AI 还特别解释了每个包的作用（我怕记不住，就记了个大概）：</p><ul><li><p><code>fcitx5</code> —— 主程序</p></li><li><p><code>fcitx5-chinese-addons</code> —— 拼音、五笔这些输入法引擎</p></li><li><p><code>fcitx5-configtool</code> —— 图形化设置界面</p></li><li><p><code>fcitx5-qt</code> 和 <code>fcitx5-gtk</code> —— 让各种软件都能用输入法</p></li></ul><p>我又多装了一个增强词库（AI 建议的）：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo pacman -S fcitx5-pinyin-zhwiki</span><br></pre></td></tr></table></figure><h3 id="第-2-步：配置环境变量（AI-说这步最最关键）"><a href="#第-2-步：配置环境变量（AI-说这步最最关键）" class="headerlink" title="第 2 步：配置环境变量（AI 说这步最最关键）"></a>第 2 步：配置环境变量（AI 说这步最最关键）</h3><p>很多人装了不能用，就是忘了这步。<br>用下面的命令编辑系统环境文件：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo nano /etc/environment</span><br></pre></td></tr></table></figure><p>在文件末尾<strong>另起三行</strong>，写上：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">GTK_IM_MODULE=fcitx</span><br><span class="line">QT_IM_MODULE=fcitx</span><br><span class="line">XMODIFIERS=@im=fcitx</span><br></pre></td></tr></table></figure><p>按 <code>Ctrl+O</code> 保存，<code>Ctrl+X</code> 退出。</p><blockquote><p>AI 的解释：这三行告诉电脑“以后所有程序都给我用 fcitx 作为输入法模块”。</p></blockquote><h3 id="第-3-步：设置开机自动启动"><a href="#第-3-步：设置开机自动启动" class="headerlink" title="第 3 步：设置开机自动启动"></a>第 3 步：设置开机自动启动</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo <span class="built_in">cp</span> /usr/share/applications/org.fcitx.Fcitx5.desktop /etc/xdg/autostart/</span><br></pre></td></tr></table></figure><p>这样每次登录系统，输入法就会自己跑起来。</p><h3 id="第-4-步：注销，重新登录"><a href="#第-4-步：注销，重新登录" class="headerlink" title="第 4 步：注销，重新登录"></a>第 4 步：注销，重新登录</h3><p><strong>一定要注销！</strong> 不是关机再开，是点左下角菜单里的“注销”（Log Out）。<br>重新登录后，修改才能生效。</p><h3 id="第-5-步：在图形界面里添加拼音输入法"><a href="#第-5-步：在图形界面里添加拼音输入法" class="headerlink" title="第 5 步：在图形界面里添加拼音输入法"></a>第 5 步：在图形界面里添加拼音输入法</h3><p>重新登录后，在开始菜单里找到 <strong>“Fcitx5 配置”</strong> 并打开。</p><ul><li><p>点 <strong>“输入法”</strong> 标签</p></li><li><p>点左下角的 <strong>“+”</strong> 号</p></li><li><p>如果没看到 “Pinyin”，就<strong>取消勾选</strong>右下角的 <strong>“仅显示当前语言”</strong></p></li><li><p>找到 <strong>“Pinyin”</strong>，选中，点“添加”</p></li><li><p>关掉窗口</p></li></ul><p>现在按下 <code>Ctrl + 空格</code>，就能切到中文拼音了！</p><hr><h2 id="三、我遇到了一个坑：KDE-Wayland-下打不开输入法"><a href="#三、我遇到了一个坑：KDE-Wayland-下打不开输入法" class="headerlink" title="三、我遇到了一个坑：KDE Wayland 下打不开输入法"></a>三、我遇到了一个坑：KDE Wayland 下打不开输入法</h2><p>按照上面做完，我按 <code>Ctrl+空格</code> 没有任何反应。<br>我赶紧回头翻 AI 的那张表，发现它专门提醒过：</p><blockquote><p><strong>KDE Plasma (Wayland) 用户</strong>：必须额外配置虚拟键盘。</p></blockquote><p>于是照做：</p><ol><li><p>打开 <strong>系统设置</strong> → <strong>键盘</strong> → <strong>虚拟键盘</strong></p></li><li><p>把下拉框改成 <strong>“Fcitx 5 Wayland 启动器”</strong></p></li><li><p>点“应用”</p></li></ol><p>然后再次注销、重新登录。<br>再按 <code>Ctrl+空格</code> —— 成功了！中文候选词框终于出现了。</p><hr><h2 id="四、如果你是-GNOME-用户（AI-给的备选方案）"><a href="#四、如果你是-GNOME-用户（AI-给的备选方案）" class="headerlink" title="四、如果你是 GNOME 用户（AI 给的备选方案）"></a>四、如果你是 GNOME 用户（AI 给的备选方案）</h2><p>虽然我没用 GNOME，但 AI 也给了另一套方案。我把它贴出来，方便用 GNOME 的朋友：</p><p><strong>安装 IBus 和拼音引擎：</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo pacman -S ibus ibus-libpinyin</span><br></pre></td></tr></table></figure><p>然后在 GNOME 的 <strong>设置 → 区域与语言 → 输入源</strong> 里，点“+”添加 <strong>“汉语 (Intelligent Pinyin)”</strong>。<br>之后用 <code>Super + 空格</code>（Win键+空格）切换输入法。</p><hr><h2 id="五、我遇到的其他小问题（以及怎么解决的）"><a href="#五、我遇到的其他小问题（以及怎么解决的）" class="headerlink" title="五、我遇到的其他小问题（以及怎么解决的）"></a>五、我遇到的其他小问题（以及怎么解决的）</h2><h3 id="Q1：按-Ctrl-空格-没反应，但是虚拟键盘也设置了？"><a href="#Q1：按-Ctrl-空格-没反应，但是虚拟键盘也设置了？" class="headerlink" title="Q1：按 Ctrl+空格 没反应，但是虚拟键盘也设置了？"></a>Q1：按 <code>Ctrl+空格</code> 没反应，但是虚拟键盘也设置了？</h3><p>AI 建议我运行诊断命令：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">fcitx5-diagnose</span><br></pre></td></tr></table></figure><p>它自动检查，发现我的 GTK 配置文件缺了一行。于是我手动添加：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nano ~/.config/gtk-3.0/settings.ini</span><br></pre></td></tr></table></figure><p>在 <code>[Settings]</code> 下面加一行：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gtk-im-module=fcitx</span><br></pre></td></tr></table></figure><p>保存，重启 Firefox，中文就能打了。</p><h3 id="Q2：终端里总是报错“找不到输入法模块”？"><a href="#Q2：终端里总是报错“找不到输入法模块”？" class="headerlink" title="Q2：终端里总是报错“找不到输入法模块”？"></a>Q2：终端里总是报错“找不到输入法模块”？</h3><p>AI 说这是因为我没<strong>完全关闭</strong>终端。修改环境变量后，要重新打开终端，甚至注销才彻底生效。</p><hr><h2 id="六、最后的总结（给不想看过程的人）"><a href="#六、最后的总结（给不想看过程的人）" class="headerlink" title="六、最后的总结（给不想看过程的人）"></a>六、最后的总结（给不想看过程的人）</h2><p>如果你也在 CachyOS 上装中文输入法，只需要记住三点：</p><ol><li><p><strong>先看自己是什么桌面环境</strong>（KDE / GNOME / Xfce）和显示协议（Wayland / X11）。</p></li><li><p><strong>KDE 用 Fcitx5</strong>，<strong>GNOME 用 IBus</strong>。</p></li><li><p><strong>KDE + Wayland 必须多一步</strong>：在系统设置里把虚拟键盘改成 “Fcitx 5 Wayland 启动器”。</p></li></ol><p>按照我和 AI 的对话步骤，一个一个命令敲，不出半小时你就能流畅地打中文了。</p><hr><p><strong>最后说一句：</strong> 以前总觉得 Linux 装输入法很麻烦，没想到只要问对人（机），跟着做就行。希望这篇博客也能帮到你。</p><p>如果你也遇到了奇怪的问题，欢迎在评论区留言，我会把 AI 教给我的排错方法再分享出来。</p><p><em>—— 一个刚学会在 CachyOS 上打中文的普通用户</em></p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;从零开始：我和-AI-一起在-CachyOS-上装好了中文输入法&quot;&gt;&lt;a href=&quot;#从零开始：我和-AI-一起在-CachyOS-上装好了中文输入法&quot; class=&quot;headerlink&quot; title=&quot;从零开始：我和 AI 一起在 CachyOS 上装好了中</summary>
      
    
    
    
    <category term="教程" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="CachyOS" scheme="https://blog.helijike.eu.org/tags/CachyOS/"/>
    
    <category term="输入法" scheme="https://blog.helijike.eu.org/tags/%E8%BE%93%E5%85%A5%E6%B3%95/"/>
    
  </entry>
  
  <entry>
    <title>把域名从 Cloudflare 迁移到七牛云 CDN</title>
    <link href="https://blog.helijike.eu.org/posts/1a091685.html"/>
    <id>https://blog.helijike.eu.org/posts/1a091685.html</id>
    <published>2026-04-21T16:44:58.000Z</published>
    <updated>2026-05-18T16:42:59.038Z</updated>
    
    <content type="html"><![CDATA[<h2 id="为什么要换？"><a href="#为什么要换？" class="headerlink" title="为什么要换？"></a>为什么要换？</h2><p>Cloudflare 免费 CDN 很好，但国内访问速度有时候不理想。七牛云 CDN 在国内节点多，加速效果更好，而且每月有 <strong>10GB 免费流量</strong>，个人网站基本够用。</p><h2 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h2><ul><li><p>一个已经在 Cloudflare 托管的域名（比如 <code>example.com</code>）</p></li><li><p>七牛云账号（已完成实名认证）</p></li><li><p>如果你的网站主要面向国内，域名需要备过案</p></li></ul><h2 id="第一步：在七牛云添加域名"><a href="#第一步：在七牛云添加域名" class="headerlink" title="第一步：在七牛云添加域名"></a>第一步：在七牛云添加域名</h2><ol><li><p>登录七牛云控制台，进入 <strong>CDN</strong> 服务，点击 <strong>添加域名</strong>。</p></li><li><p>填写你的域名（例如 <code>www.yourname.com</code> 或 <code>blog.yourname.com</code>）。</p></li><li><p><strong>源站配置</strong>：</p><ul><li><p>如果你有自己的服务器（IP 固定），选 <strong>IP 地址</strong>，然后填你的服务器公网 IP。</p></li><li><p>如果你用的是对象存储（如七牛云 Kodo），选 <strong>七牛云存储</strong>。</p></li></ul></li><li><p><strong>回源 HOST</strong>：选择 <strong>自定义</strong>，填入你的域名（就是和加速域名一样的那个）。</p></li><li><p><strong>回源协议</strong>：如果你的源站支持 HTTPS 就选 HTTPS，否则选 HTTP。选错也没事，后面可以改。</p></li><li><p>其他选项（缓存配置）保持默认就行，直接点 <strong>创建</strong>。</p></li></ol><blockquote><p>创建后，七牛云会给你一个 <strong>CNAME 地址</strong>，长这样：<code>yourdomain-id.qiniudns.com</code>，记下来，待会儿要用。</p></blockquote><h2 id="第二步：在-Cloudflare-修改-DNS-解析"><a href="#第二步：在-Cloudflare-修改-DNS-解析" class="headerlink" title="第二步：在 Cloudflare 修改 DNS 解析"></a>第二步：在 Cloudflare 修改 DNS 解析</h2><ol><li><p>登录 Cloudflare，进入你的域名管理页。</p></li><li><p>找到你要加速的那个域名（比如 <code>blog.yourname.com</code>）的记录。</p></li><li><p><strong>删除</strong>原来的 <strong>A 记录</strong>（如果存在）。</p></li><li><p>点击 <strong>添加记录</strong>：</p><ul><li><p>类型：<strong>CNAME</strong></p></li><li><p>名称：你的子域名（比如 <code>blog</code>）</p></li><li><p>目标：粘贴七牛云给你的 CNAME 地址</p></li><li><p><strong>代理状态：一定要设为“仅 DNS”</strong>（灰色的云朵图标，不是橙色的）</p></li></ul></li><li><p>保存。</p></li></ol><blockquote><p>如果你要加速根域名（比如 <code>yourname.com</code> 本身），Cloudflare 支持 CNAME 扁平化，同样操作即可。但是要注意：根域名用了 CNAME 之后，就不能再添加 MX 邮件记录了。</p></blockquote><h2 id="第三步：等待生效并验证"><a href="#第三步：等待生效并验证" class="headerlink" title="第三步：等待生效并验证"></a>第三步：等待生效并验证</h2><p>DNS 解析需要几分钟到几十分钟才能全球生效。你可以用以下命令在电脑上验证（Windows 打开 CMD，Mac 打开终端）：</p><h3 id="1-检查-DNS-是否已指向七牛云"><a href="#1-检查-DNS-是否已指向七牛云" class="headerlink" title="1. 检查 DNS 是否已指向七牛云"></a>1. 检查 DNS 是否已指向七牛云</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nslookup blog.yourname.com</span><br></pre></td></tr></table></figure><p>如果看到一堆 IP 地址（比如 <code>183.60.227.41</code> 之类的），而且<strong>没有</strong> <code>cloudflare</code> 字样，就说明解析成功了。</p><h3 id="2测试-CDN-是否正常工作"><a href="#2测试-CDN-是否正常工作" class="headerlink" title="2测试 CDN 是否正常工作"></a>2测试 CDN 是否正常工作</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl -I http://blog.yourname.com</span><br></pre></td></tr></table></figure><ul><li><p>如果返回的 <code>Server</code> 是 <code>nginx</code>（或者 <code>qiniu</code>），说明流量已经走七牛云了。</p></li><li><p>如果返回 <code>Server: cloudflare</code> 或者有 <code>CF-RAY</code> 字段，说明 Cloudflare 还在拦截，请检查第二步中是否把代理状态改成了“仅 DNS”。</p></li></ul><blockquote><p>如果看到 <code>301 Moved Permanently</code> 并且跳转到 <code>https://</code>，那是因为你在七牛云开启了“强制 HTTPS”，属于正常现象。</p></blockquote><h2 id="常见问题与解决"><a href="#常见问题与解决" class="headerlink" title="常见问题与解决"></a>常见问题与解决</h2><h3 id="问题1：nslookup-正确，但-curl-还是显示-Cloudflare"><a href="#问题1：nslookup-正确，但-curl-还是显示-Cloudflare" class="headerlink" title="问题1：nslookup 正确，但 curl 还是显示 Cloudflare"></a>问题1：nslookup 正确，但 curl 还是显示 Cloudflare</h3><p><strong>原因</strong>：Cloudflare 的 DNS 扁平化可能会“劫持”流量，即使你关了代理。</p><p><strong>解决办法</strong>：彻底更换 DNS 服务商，比如用 DNSPod 或阿里云 DNS。步骤：</p><ol><li><p>在 DNSPod 添加你的域名。</p></li><li><p>去你的域名注册商（比如 Namesilo、GoDaddy）把 NS 记录改成 DNSPod 的。</p></li><li><p>在 DNSPod 里添加 CNAME 记录指向七牛云。</p></li><li><p>等生效后再测试。</p></li></ol><h3 id="问题2：根域名（yourname-com）同时存在-A-记录和-CNAME-记录"><a href="#问题2：根域名（yourname-com）同时存在-A-记录和-CNAME-记录" class="headerlink" title="问题2：根域名（yourname.com）同时存在 A 记录和 CNAME 记录"></a>问题2：根域名（yourname.com）同时存在 A 记录和 CNAME 记录</h3><p><strong>原因</strong>：同一个域名不能同时有 A 和 CNAME，会冲突。</p><p><strong>解决办法</strong>：删除 A 记录，只保留 CNAME。</p><h3 id="问题3：访问-http-总是跳转到-https"><a href="#问题3：访问-http-总是跳转到-https" class="headerlink" title="问题3：访问 http 总是跳转到 https"></a>问题3：访问 http 总是跳转到 https</h3><p><strong>原因</strong>：七牛云开启了“强制 HTTPS”。</p><p><strong>解决办法</strong>：</p><ul><li><p>如果你接受 HTTPS，那就保持现状，无需操作。</p></li><li><p>如果你想同时支持 HTTP，去七牛云 CDN 配置里找到 <strong>HTTPS 配置</strong>，把“强制 HTTPS”关掉。</p></li></ul><h2 id="费用要花多少钱？"><a href="#费用要花多少钱？" class="headerlink" title="费用要花多少钱？"></a>费用要花多少钱？</h2><p>七牛云 CDN 的计费很良心：</p><div class="table-container"><table><thead><tr><th>项目</th><th>价格</th></tr></thead><tbody><tr><td>免费额度（HTTP）</td><td>每月 10 GB</td></tr><tr><td>超出后 HTTP 流量</td><td>0.24 元/GB</td></tr><tr><td>HTTPS 流量（无免费额度）</td><td>0.28 元/GB</td></tr><tr><td>新用户优惠</td><td>0.1 元买 10GB HTTPS 流量包（有效期12个月）</td></tr></tbody></table></div><p><strong>个人博客费用估算</strong>：</p><ul><li><p>纯 HTTP，月流量 5 GB：<strong>0 元</strong></p></li><li><p>纯 HTTP，月流量 15 GB：约 <strong>1.2 元</strong></p></li><li><p>HTTPS，月流量 15 GB：约 <strong>4.2 元</strong>（如果买了优惠包，约 1.5 元）</p></li></ul><blockquote><p>注意：一旦域名开启了 HTTPS，无论用户用 <code>http://</code> 还是 <code>https://</code> 访问，都会按照 HTTPS 价格计费。</p></blockquote><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>把域名从 Cloudflare 迁到七牛云并不难，核心就三步：</p><ol><li><p>在七牛云添加域名，拿到 CNAME 地址。</p></li><li><p>在 Cloudflare 把域名的 A 记录改为 CNAME，并关闭代理（灰色云朵）。</p></li><li><p>等待解析生效，用 <code>nslookup</code> 和 <code>curl</code> 验证。</p></li></ol><p>如果遇到流量还被 Cloudflare 拦截，最好的办法是换 DNS 服务商（DNSPod）。七牛云的费用对个人站长非常友好，每月基本免费。</p><p>照着这个教程操作，你也能轻松用上国内高速 CDN！</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;为什么要换？&quot;&gt;&lt;a href=&quot;#为什么要换？&quot; class=&quot;headerlink&quot; title=&quot;为什么要换？&quot;&gt;&lt;/a&gt;为什么要换？&lt;/h2&gt;&lt;p&gt;Cloudflare 免费 CDN 很好，但国内访问速度有时候不理想。七牛云 CDN 在国内节点多，加速效果</summary>
      
    
    
    
    <category term="教程" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="Cloudflare" scheme="https://blog.helijike.eu.org/tags/Cloudflare/"/>
    
    <category term="七牛云" scheme="https://blog.helijike.eu.org/tags/%E4%B8%83%E7%89%9B%E4%BA%91/"/>
    
    <category term="CDN" scheme="https://blog.helijike.eu.org/tags/CDN/"/>
    
  </entry>
  
  <entry>
    <title>记一次惊心动魄的 Hexo 博客部署踩坑实录（上）</title>
    <link href="https://blog.helijike.eu.org/posts/4168ed28.html"/>
    <id>https://blog.helijike.eu.org/posts/4168ed28.html</id>
    <published>2026-02-14T05:25:11.000Z</published>
    <updated>2026-05-18T16:42:59.038Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>起因:<br>1.很久没有更新博客，今天本来打算用 VS Code 写篇新文章并推送到 GitHub 上。原本以为只需简单的“暂存-提交-推送”三连就能搞定，没想到却触发了一连串匪夷所思的报错。<br>2.经过一步步的排查、试错和底层逻辑剖析，我最终不仅解决了所有 Bug，还顺手重构了博客的“双分支备份工作流”。这篇文章完整记录了这次的踩坑与排雷过程，希望能给遇到同样问题的 Hexo 博主们提供一份详尽的避坑指南。</p></blockquote><h2 id="📍-阶段一：密码验证失败？旧时代的眼泪"><a href="#📍-阶段一：密码验证失败？旧时代的眼泪" class="headerlink" title="📍 阶段一：密码验证失败？旧时代的眼泪"></a>📍 阶段一：密码验证失败？旧时代的眼泪</h2><p>一切的起因，源于我写完文章后，习惯性地在 VS Code 的源代码管理面板中点击了 “发布 Branch”。迎接我的不是成功的绿灯，而是一行刺眼的红字：</p><p>``Bash<br>remote: Support for password authentication was removed on August 13, 2021.<br>fatal: Authentication failed for ‘<a href="https://github.com/[用户名]/[仓库名].git/">https://github.com/[用户名]/[仓库名].git/</a>‘<br><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">### 🐛 问题剖析：</span><br><span class="line">这是 GitHub 在 2021 年进行安全升级留下的“坑”。GitHub 早已不支持使用账号和登录密码直接进行 Git 操作，必须使用 Personal Access Token (PAT) 或者浏览器授权登录。而我的 Git 显然还记着旧时代的密码。</span><br><span class="line"></span><br><span class="line">### 🛠️ 解决过程：</span><br><span class="line"></span><br><span class="line">排查本地凭据： 最初以为是 Windows 系统的“凭据管理器”里缓存了旧密码，但打开后发现列表里干干净净，并没有 github.com 的记录。这说明密码被 Git 的内部配置“死记硬背”下来了。</span><br><span class="line"></span><br><span class="line">1. 重新唤醒浏览器授权： 为了覆盖旧的无效身份，我直接使用了 VS Code 左下角自带的 “账户” 功能。</span><br><span class="line">2. 点击左下角的小人图标 -&gt; 选择 “登录以同步设置”。</span><br><span class="line">3. 在弹出的选项中选择 GitHub。</span><br><span class="line">4. 系统成功唤起浏览器，点击绿色的 &quot;Authorize&quot; 完成授权。</span><br><span class="line">5. 至此，Git 的网络通信和权限问题暂时打通，但真正的硬核报错才刚刚开始。</span><br><span class="line"></span><br><span class="line">## 📍 阶段二：神秘的 fatal: not a git repository 与 Hexo 的底层逻辑</span><br><span class="line">**授权成功后，我尝试在终端手动执行 git add .，结果又挨了一记闷棍：**</span><br><span class="line"></span><br><span class="line">```Bash</span><br><span class="line">fatal: not a git repository (or any of the parent directories): .git</span><br></pre></td></tr></table></figure></p><h3 id="🐛-问题剖析："><a href="#🐛-问题剖析：" class="headerlink" title="🐛 问题剖析："></a>🐛 问题剖析：</h3><p>在这个瞬间，我猛然意识到问题的核心：我使用的博客框架是 Hexo！<br>在 Hexo 的工作流中，存在一个非常容易让人混淆的机制：</p><ol><li>博客根目录（也就是我当前终端所在的文件夹）默认不是一个 Git 仓库。</li><li>Hexo 在部署时，会偷偷在根目录下生成一个隐藏的 .deploy_git 文件夹，那个文件夹才是一个真正的 Git 仓库，用来存放生成好的网页代码。</li><li>所以我直接在根目录敲 Git 命令，当然会报错说找不到仓库。</li></ol><h3 id="🛠️-解决思路转换："><a href="#🛠️-解决思路转换：" class="headerlink" title="🛠️ 解决思路转换："></a>🛠️ 解决思路转换：</h3><p>既然是 Hexo，发布网页根本不需要手动 git add / commit。只需要使用 Hexo 专属三连：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">hexo clean  <span class="comment"># 清除缓存</span></span><br><span class="line">hexo g      <span class="comment"># 生成网页</span></span><br><span class="line">hexo d      <span class="comment"># 部署上天</span></span><br></pre></td></tr></table></figure><h2 id="📍-阶段三：头疼的-Error-Spawn-failed"><a href="#📍-阶段三：头疼的-Error-Spawn-failed" class="headerlink" title="📍 阶段三：头疼的 Error: Spawn failed"></a>📍 阶段三：头疼的 Error: Spawn failed</h2><p><strong>满怀希望地敲下 hexo d，万万没想到，终端吐出了一大段错误代码，最后定格在：</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">FATAL Something<span class="string">&#x27;s wrong. Maybe you can find the solution here...</span></span><br><span class="line"><span class="string">Error: Spawn failed</span></span><br></pre></td></tr></table></figure><h3 id="🐛-问题剖析：-1"><a href="#🐛-问题剖析：-1" class="headerlink" title="🐛 问题剖析："></a>🐛 问题剖析：</h3><p>Spawn failed 是 Hexo 最臭名昭著的报错之一。它的本质是：Hexo 尝试在后台调用 hexo-deployer-git 插件去推送到 GitHub 时，Git 进程卡死或崩溃了。结合前面的密码报错，极大可能是刚才网络不通畅时，导致隐藏的 .deploy_git 文件夹里的状态错乱了。</p><h3 id="🛠️-解决过程："><a href="#🛠️-解决过程：" class="headerlink" title="🛠️ 解决过程："></a>🛠️ 解决过程：</h3><p>核弹级清理： 在 VS Code 的资源管理器中，直接找到并删除了 .deploy_git 文件夹。（不用担心，这只是临时生成的网页缓存，删除不影响源文件）。</p><p>测试底层连接： 为了确保 Git 有权限，在终端手动执行了一次测试：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git ls-remote https://github.com/[用户名]/[仓库名].git</span><br></pre></td></tr></table></figure><p>终端成功返回了 HEAD 和 refs/heads/main 等哈希值。这证明本地和 GitHub 的网线彻底接通了！</p><h2 id="📍-阶段四：配置文件的“地雷阵”-SSH-与-YAML"><a href="#📍-阶段四：配置文件的“地雷阵”-SSH-与-YAML" class="headerlink" title="📍 阶段四：配置文件的“地雷阵” (SSH 与 YAML)"></a>📍 阶段四：配置文件的“地雷阵” (SSH 与 YAML)</h2><p>你以为网络通了就能成功吗？并没有。删掉缓存后再次 hexo d，报错变成了找不到远程仓库。</p><p>我打开根目录下的 _config.yml 检查部署配置，发现了一个致命细节：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 错误示范</span></span><br><span class="line"><span class="attr">deploy:</span></span><br><span class="line">  <span class="attr">type:</span> <span class="string">git</span></span><br><span class="line">  <span class="attr">repository:</span> <span class="string">git@github.com:[用户名]/[仓库名].git</span>  <span class="comment"># &lt;--- 问题在这里</span></span><br><span class="line">  <span class="attr">branch:</span> <span class="string">main</span></span><br></pre></td></tr></table></figure><h3 id="🐛-问题剖析：-2"><a href="#🐛-问题剖析：-2" class="headerlink" title="🐛 问题剖析："></a>🐛 问题剖析：</h3><p>SSH 地址的坑： repository 里写的是 git@github.com… 的 SSH 格式地址。但我刚才费劲打通和测试的，是基于浏览器的 HTTPS 授权！使用 SSH 地址会导致系统去寻找本地的 SSH 秘钥，找不到自然再次报错。<br>YAML 格式的傲娇： 当我把地址改成 HTTPS 后，Hexo 竟然直接无视了我的配置，提示 You should configure deployment settings in _config.yml first!。这是因为 YAML 文件对空格的要求极其苛刻，我在修改时不小心破坏了缩进（冒号后缺少空格）。</p><h3 id="🛠️-最终修复："><a href="#🛠️-最终修复：" class="headerlink" title="🛠️ 最终修复："></a>🛠️ 最终修复：</h3><p>严格按照 YAML 的格式规范，重写了 deploy 部分（注意缩进和空格）：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">deploy:</span></span><br><span class="line">  <span class="attr">type:</span> <span class="string">git</span></span><br><span class="line">  <span class="attr">repo:</span> <span class="string">https://github.com/[用户名]/[仓库名].git</span></span><br><span class="line">  <span class="attr">branch:</span> <span class="string">main</span></span><br></pre></td></tr></table></figure><p>保存文件，回到终端，最后一次屏住呼吸敲下：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo clean &amp;&amp; hexo g &amp;&amp; hexo d</span><br></pre></td></tr></table></figure><p>终端里的代码疯狂滚动，最终停在了一行令人热泪盈眶的绿字：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">INFO  Deploy <span class="keyword">done</span>: git</span><br></pre></td></tr></table></figure></p><p>至此，博客的网页代码终于成功发布到了 GitHub Pages 上！</p><p>（未完待续）</p>]]></content>
    
    
      
      
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;起因:&lt;br&gt;1.很久没有更新博客，今天本来打算用 VS Code 写篇新文章并推送到 GitHub 上。原本以为只需简单的“暂存-提交-推送”三连就能搞定，没想到却触发了一连串匪夷所思的报错。&lt;br&gt;2.经过一步步的排查、试错和底层逻辑剖析，我最</summary>
      
    
    
    
    <category term="教程" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="Git" scheme="https://blog.helijike.eu.org/tags/Git/"/>
    
    <category term="Hexo" scheme="https://blog.helijike.eu.org/tags/Hexo/"/>
    
    <category term="踩坑" scheme="https://blog.helijike.eu.org/tags/%E8%B8%A9%E5%9D%91/"/>
    
  </entry>
  
  <entry>
    <title>宝塔迁移1Panel</title>
    <link href="https://blog.helijike.eu.org/posts/0.html"/>
    <id>https://blog.helijike.eu.org/posts/0.html</id>
    <published>2026-02-14T03:04:12.000Z</published>
    <updated>2026-05-18T16:42:59.037Z</updated>
    
    <content type="html"><![CDATA[<h3 id="核心逻辑只有三步：打包带走（备份）-gt-重装环境（换面板）-gt-原样放下（恢复）。"><a href="#核心逻辑只有三步：打包带走（备份）-gt-重装环境（换面板）-gt-原样放下（恢复）。" class="headerlink" title="核心逻辑只有三步：打包带走（备份） -&gt; 重装环境（换面板） -&gt; 原样放下（恢复）。"></a>核心逻辑只有三步：打包带走（备份） -&gt; 重装环境（换面板） -&gt; 原样放下（恢复）。</h3><h3 id="⚠️-重要预警：操作前必读"><a href="#⚠️-重要预警：操作前必读" class="headerlink" title="⚠️ 重要预警：操作前必读"></a>⚠️ 重要预警：操作前必读</h3><p>从宝塔面板（Baota）切换到 1Panel 面板，强烈建议重装服务器系统（例如重置为纯净的 Debian 或 Ubuntu 系统）。</p><ul><li>原因： 宝塔和 1Panel 都会深度修改系统环境（Nginx、防火墙等），直接卸载宝塔再装 1Panel 极大概率会报错、冲突，导致你网站打不开。</li><li>后果： 如果不重装系统，你可能要花几天时间修 Bug。</li></ul><h2 id="第一阶段：在宝塔面板进行备份-最关键"><a href="#第一阶段：在宝塔面板进行备份-最关键" class="headerlink" title="第一阶段：在宝塔面板进行备份 (最关键)"></a>第一阶段：在宝塔面板进行备份 (最关键)</h2><p>既然是 Docker 部署，你的博客通常由两部分组成：</p><ol><li>配置文件（docker-compose.yml，决定了博客怎么运行）。</li><li>数据文件（博客的文章、图片、主题文件等）。</li></ol><h3 id="操作步骤："><a href="#操作步骤：" class="headerlink" title="操作步骤："></a>操作步骤：</h3><ol><li>找到你的博客目录：</li></ol><ul><li>在宝塔面板左侧点击 [文件]。</li><li>找到你存放博客的文件夹（通常在 /www/wwwroot/ 下，或者是 /root/ 下，取决于你当初怎么装的）。</li><li>确认方法： 点进去看，应该能看到 docker-compose.yml 文件和一个包含你博客数据的文件夹（比如 source、themes 或 public）。</li></ul><ol><li>打包下载：</li></ol><ul><li>在宝塔文件管理中，勾选这个博客的整个文件夹。</li><li>点击 [压缩]。</li><li>缩完成后，右键点击压缩包 -&gt; 下载 到你的本地电脑上。</li><li>双重保险： 解压一下你刚下载的包，检查里面是不是有文件，确保没有下载失败。</li></ul><ol><li>记录端口号：<br>查看你的 docker-compose.yml 文件，记下 ports 部分的内容（比如 4000:4000 或 8080:80）。你需要知道容器暴露出来的端口是多少。</li></ol><h2 id="第二阶段：重置系统-amp-安装-1Panel"><a href="#第二阶段：重置系统-amp-安装-1Panel" class="headerlink" title="第二阶段：重置系统 &amp; 安装 1Panel"></a>第二阶段：重置系统 &amp; 安装 1Panel</h2><ol><li>重装系统：</li></ol><ul><li>去你的服务器提供商后台（阿里云、腾讯云等），找到“重装系统”或“更换操作系统”。</li><li>选择 Debian 11/12 或 Ubuntu 22.04（推荐 Debian，资源占用更少）。</li><li>等待重装完成。</li></ul><p>2.安装 1Panel：</p><ul><li>使用 SSH 工具（如果你之前问过 SSH 工具，现在正好用上）连接到你的新系统。</li><li>输入 1Panel 的官方安装命令（根据官网）：</li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl -sSL https://resource.1panel.cn/quick_start.sh -o quick_start.sh &amp;&amp; bash quick_start.sh</span><br></pre></td></tr></table></figure><ul><li>安装完成后，记录下控制台弹出的 面板地址、用户名、密码。</li></ul><h3 id="第三阶段：在-1Panel-中恢复博客"><a href="#第三阶段：在-1Panel-中恢复博客" class="headerlink" title="第三阶段：在 1Panel 中恢复博客"></a>第三阶段：在 1Panel 中恢复博客</h3><p>登录你的 1Panel 面板，开始恢复。</p><h4 id="1-上传备份文件"><a href="#1-上传备份文件" class="headerlink" title="1.上传备份文件"></a>1.上传备份文件</h4><ol><li>点击左侧菜单 [主机] -&gt; [文件]。</li><li>进入 /opt/1panel/apps 目录（或者任何你喜欢的目录，推荐这里方便管理）。</li><li>点击 [上传]，把你第一阶段下载的压缩包传上去。</li><li>点击压缩包后面的 [解压]，进入解压后的文件夹。</li></ol><h4 id="2-创建-Docker-容器（编排）"><a href="#2-创建-Docker-容器（编排）" class="headerlink" title="2.创建 Docker 容器（编排）"></a>2.创建 Docker 容器（编排）</h4><ol><li>点击左侧菜单 [容器] -&gt; [编排]。</li><li>点击 [创建编排]。</li><li>路径选择： 选择你刚才解压出来的那个文件夹（包含 docker-compose.yml 的那个）</li><li>内容编辑器： 正常情况下，面板会自动读取你文件夹里的 docker-compose.yml 内容并显示在编辑器里。<br><u>小白注意： 如果编辑器是空的，你需要手动把文件里的内容复制粘贴进去。</u></li><li>点击 [确认] 或 [创建]。</li><li>等待系统拉取镜像并启动。看状态变成“已启动”即成功。</li></ol><h4 id="3-建立反向代理（让外网能访问）"><a href="#3-建立反向代理（让外网能访问）" class="headerlink" title="3.建立反向代理（让外网能访问）"></a>3.建立反向代理（让外网能访问）</h4><p>Docker 启动后，通常只能通过 IP:端口 访问。为了用域名（比如 www.yourblog.com）访问并加上 HTTPS，需要设置反向代理。</p><ol><li>点击左侧菜单 [网站] -&gt; [网站]。</li><li>点击 [创建网站]。</li><li>运行环境： 选择 “反向代理”。</li><li>主域名： 填你的博客域名。</li><li>代理地址： 127.0.0.1:4000</li><li>注意： 这里的 4000 必须换成你第一阶段记录的端口号。</li><li>点击 [确认]。</li></ol><h4 id="4-开启-HTTPS-SSL"><a href="#4-开启-HTTPS-SSL" class="headerlink" title="4.开启 HTTPS (SSL)"></a>4.开启 HTTPS (SSL)</h4><ol><li>在刚才创建的网站列表中，点击你的域名。</li><li>找到 [HTTPS] 选项卡。</li><li>勾选 [启用 HTTPS]。</li><li>如果你没有证书，1Panel 可以直接申请 Let’s Encrypt 证书（选择“ACME 账户” -&gt; “创建账户” -&gt; 申请证书）。</li></ol><h2 id="常见问题排查（小白锦囊）"><a href="#常见问题排查（小白锦囊）" class="headerlink" title="常见问题排查（小白锦囊）"></a>常见问题排查（小白锦囊）</h2><h3 id="Q-启动编排时报错？"><a href="#Q-启动编排时报错？" class="headerlink" title="Q: 启动编排时报错？"></a>Q: 启动编排时报错？</h3><h4 id="A-检查-docker-compose-yml-里的路径映射（volumes）。如果你在宝塔里的路径是绝对路径（比如-www-wwwroot-blog-data），迁移到-1Panel-后，如果在这个路径下没有对应的文件，就会报错。"><a href="#A-检查-docker-compose-yml-里的路径映射（volumes）。如果你在宝塔里的路径是绝对路径（比如-www-wwwroot-blog-data），迁移到-1Panel-后，如果在这个路径下没有对应的文件，就会报错。" class="headerlink" title="A: 检查 docker-compose.yml 里的路径映射（volumes）。如果你在宝塔里的路径是绝对路径（比如 /www/wwwroot/blog/data），迁移到 1Panel 后，如果在这个路径下没有对应的文件，就会报错。"></a>A: 检查 docker-compose.yml 里的路径映射（volumes）。如果你在宝塔里的路径是绝对路径（比如 /www/wwwroot/blog/data），迁移到 1Panel 后，如果在这个路径下没有对应的文件，就会报错。</h4><h4 id="解决方法：-建议将-docker-compose-yml-里的绝对路径改为相对路径（比如-data），或者确保你解压的路径和配置文件里写的路径完全一致。"><a href="#解决方法：-建议将-docker-compose-yml-里的绝对路径改为相对路径（比如-data），或者确保你解压的路径和配置文件里写的路径完全一致。" class="headerlink" title="解决方法： 建议将 docker-compose.yml 里的绝对路径改为相对路径（比如 ./data），或者确保你解压的路径和配置文件里写的路径完全一致。"></a>解决方法： 建议将 docker-compose.yml 里的绝对路径改为相对路径（比如 ./data），或者确保你解压的路径和配置文件里写的路径完全一致。</h4><h3 id="Q-网站显示-502-Bad-Gateway？"><a href="#Q-网站显示-502-Bad-Gateway？" class="headerlink" title="Q: 网站显示 502 Bad Gateway？"></a>Q: 网站显示 502 Bad Gateway？</h3><h4 id="A-说明“反向代理”没配对。检查你在创建网站时填写的“代理地址”端口，是否真的对应-Docker-容器暴露出的端口。"><a href="#A-说明“反向代理”没配对。检查你在创建网站时填写的“代理地址”端口，是否真的对应-Docker-容器暴露出的端口。" class="headerlink" title="A: 说明“反向代理”没配对。检查你在创建网站时填写的“代理地址”端口，是否真的对应 Docker 容器暴露出的端口。"></a>A: 说明“反向代理”没配对。检查你在创建网站时填写的“代理地址”端口，是否真的对应 Docker 容器暴露出的端口。</h4><p>按照这个流程走，你的博客就能平滑地从宝塔“搬家”到 1Panel 了。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h3 id=&quot;核心逻辑只有三步：打包带走（备份）-gt-重装环境（换面板）-gt-原样放下（恢复）。&quot;&gt;&lt;a href=&quot;#核心逻辑只有三步：打包带走（备份）-gt-重装环境（换面板）-gt-原样放下（恢复）。&quot; class=&quot;headerlink&quot; title=&quot;核心逻辑只有</summary>
      
    
    
    
    <category term="教程" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/"/>
    
    <category term="服务器" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/%E6%9C%8D%E5%8A%A1%E5%99%A8/"/>
    
    
    <category term="宝塔" scheme="https://blog.helijike.eu.org/tags/%E5%AE%9D%E5%A1%94/"/>
    
    <category term="1Panel" scheme="https://blog.helijike.eu.org/tags/1Panel/"/>
    
    <category term="迁移" scheme="https://blog.helijike.eu.org/tags/%E8%BF%81%E7%A7%BB/"/>
    
  </entry>
  
  <entry>
    <title>建站教程三（hexo主题篇）</title>
    <link href="https://blog.helijike.eu.org/posts/15d1e318.html"/>
    <id>https://blog.helijike.eu.org/posts/15d1e318.html</id>
    <published>2025-11-15T04:45:11.000Z</published>
    <updated>2025-11-15T04:46:01.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="安装-Solitude-主题（三种方式任选，推荐第一种）"><a href="#安装-Solitude-主题（三种方式任选，推荐第一种）" class="headerlink" title="安装 Solitude 主题（三种方式任选，推荐第一种）"></a>安装 Solitude 主题（三种方式任选，推荐第一种）</h2><p><a href="https://solitude.js.org/cn">Solitude 是一个极简而优雅的 Hexo 主题，专为开发人员和作家设计。</a></p><h2 id="1-安装solitude"><a href="#1-安装solitude" class="headerlink" title="1.安装solitude"></a>1.安装solitude</h2><h3 id="方式-1：Git-安装"><a href="#方式-1：Git-安装" class="headerlink" title="方式 1：Git 安装"></a>方式 1：Git 安装</h3><ol><li>在命令行里粘贴下面的命令，按回车：</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">git clone -b dev https://github.com/everfu/hexo-theme-solitude.git themes/solitude</span><br><span class="line"></span><br></pre></td></tr></table></figure><ul><li>等待下载完成，博客文件夹里的 “themes” 目录下会多出一个 “solitude” 文件夹，说明主题下载成功了。</li></ul><h3 id="方式-2：直接下载文件安装（没装-Git-可选）"><a href="#方式-2：直接下载文件安装（没装-Git-可选）" class="headerlink" title="方式 2：直接下载文件安装（没装 Git 可选）"></a>方式 2：直接下载文件安装（没装 Git 可选）</h3><ol><li>打开链接<a href="https://github.com/everfu/hexo-theme-solitude/releases，下载最新版本的压缩包（带">https://github.com/everfu/hexo-theme-solitude/releases，下载最新版本的压缩包（带</a> “release” 字样的）。</li><li>找到下载的压缩包，右键解压，把解压出来的文件夹名字改成 “solitude”（必须改这个名字，不然用不了）。</li><li>把改好名的 “solitude” 文件夹，复制到你 Hexo 博客的 “themes” 目录里（比如 “我的博客 \themes”）。</li></ol><h3 id="方式-3：用包管理器安装（熟悉-npm-的可选）"><a href="#方式-3：用包管理器安装（熟悉-npm-的可选）" class="headerlink" title="方式 3：用包管理器安装（熟悉 npm 的可选）"></a>方式 3：用包管理器安装（熟悉 npm 的可选）</h3><p>如果电脑里有 npm、pnpm、yarn 或 bun 中的任意一个，直接在命令行输入对应命令：</p><ul><li>npm：<code>npm i hexo-theme-solitude</code></li><li>pnpm：<code>pnpm i hexo-theme-solitude</code></li><li>yarn：<code>yarn add hexo-theme-solitude</code></li><li>bun：<code>bun add hexo-theme-solitude</code><br>等待安装完成即可。</li></ul><h2 id="2-置主题：让-Hexo-使用-Solitude"><a href="#2-置主题：让-Hexo-使用-Solitude" class="headerlink" title="2.置主题：让 Hexo 使用 Solitude"></a>2.置主题：让 Hexo 使用 Solitude</h2><ol><li>打开你的 Hexo 博客目录，找到名为 “_config.yml” 的文件（这是 Hexo 的全局配置文件，用记事本或记事本 ++ 打开就行）。</li><li>在文件里找 “theme:” 这一行（大概在文件中间位置），把后面的内容改成 “solitude”，比如原来可能是 “theme: landscape”，改成 theme: solitude （注意冒号后面有个空格）。</li><li>保存文件并关闭。</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">theme: anzhiyu</span><br></pre></td></tr></table></figure><h3 id="2-1覆盖配置"><a href="#2-1覆盖配置" class="headerlink" title="2.1覆盖配置"></a>2.1覆盖配置</h3><p>覆盖配置可以使主题配置放置在 Solitude 目录之外，避免在更新主题时丢失自定义的配置。</p><ul><li>[ ] 如果你是linux系统就执行以下命令</li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">cp -rf ./themes/Solitude/_config.yml ./_config.Solitude.yml</span><br><span class="line"></span><br></pre></td></tr></table></figure><ul><li>[ ] 如果你是win系统执行以下命令</li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">copy &quot;themes\Solitude\_config.yml&quot; &quot;_config.Solitude.yml&quot;</span><br><span class="line"></span><br></pre></td></tr></table></figure><blockquote><p>注意：</p><ol><li>只要存在于 _config.Solitude.yml 的配置都是高优先级，修改原 _config.yml 是无效的。</li><li>每次更新主题可能存在配置变更，请注意更新说明，可能需要手动对 _config.Solitude.yml 同步修改。</li><li>想查看覆盖配置有没有生效，可以通过 hexo g —debug 查看命令行输出。</li><li>如果想将某些配置覆盖为空，注意不要把主键删掉，不然是无法覆盖的</li></ol></blockquote><h2 id="3-安装必要依赖（缺一不可）"><a href="#3-安装必要依赖（缺一不可）" class="headerlink" title="3.安装必要依赖（缺一不可）"></a>3.安装必要依赖（缺一不可）</h2><ul><li>npm：<code>npm i hexo-renderer-pug</code></li><li>pnpm：<code>pnpm i hexo-renderer-pug</code></li><li>yarn：<code>yarn add hexo-renderer-pug</code></li><li>bun：<code>bun add hexo-renderer-pug</code><br>等待安装完成，没有报错就可以了。</li></ul><h2 id="4-本地启动博客，查看效果"><a href="#4-本地启动博客，查看效果" class="headerlink" title="4.本地启动博客，查看效果"></a>4.本地启动博客，查看效果</h2><p>1.依次在命令行输入下面三个命令，每个命令输完按回车，等待上一个完成再输下一个：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">hexo clean</span><br><span class="line">hexo generate</span><br><span class="line">hexo server</span><br></pre></td></tr></table></figure><ol><li>当命令行出现 “Hexo is running at <a href="http://localhost:4000">http://localhost:4000</a>. Press Ctrl+C to stop.” 时，说明启动成功了。</li><li>打开浏览器，在地址栏输入 <code>http://localhost:4000</code>，按回车，就能看到你的博客已经换成 Solitude 主题啦！</li></ol><h2 id="5-部署上线（到GitHub与Cloudflare-Pages）"><a href="#5-部署上线（到GitHub与Cloudflare-Pages）" class="headerlink" title="5.部署上线（到GitHub与Cloudflare Pages）"></a>5.部署上线（到GitHub与Cloudflare Pages）</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">//本地预览</span><br><span class="line">hexo cl; hexo s</span><br><span class="line"></span><br><span class="line">//推送更新上线</span><br><span class="line">hexo cl; hexo g; hexo d</span><br><span class="line"></span><br></pre></td></tr></table></figure><blockquote><p>其实和第四步差不多，就多了个hexo d</p></blockquote><h2 id="注意事项"><a href="#注意事项" class="headerlink" title="注意事项"></a>注意事项</h2><ol><li>复制配置文件时，不要删除主题目录（themes/solitude）里的 “_config.yml” 文件，不然会出错。</li><li>以后升级主题后，要对比一下新主题的 “_config.yml” 和你博客目录的 “_config.solitude.yml”，把新增的配置同步过去。</li><li>如果启动后浏览器打不开，检查一下命令有没有输错，或者端口 4000 被占用（可以换端口，输入 <code>hexo server -p 5000</code>，然后访问 <code>http://localhost:5000</code>）。</li></ol>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;安装-Solitude-主题（三种方式任选，推荐第一种）&quot;&gt;&lt;a href=&quot;#安装-Solitude-主题（三种方式任选，推荐第一种）&quot; class=&quot;headerlink&quot; title=&quot;安装 Solitude 主题（三种方式任选，推荐第一种）&quot;&gt;&lt;/a&gt;安装</summary>
      
    
    
    
    <category term="教程" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="hexo" scheme="https://blog.helijike.eu.org/tags/hexo/"/>
    
    <category term="主题" scheme="https://blog.helijike.eu.org/tags/%E4%B8%BB%E9%A2%98/"/>
    
  </entry>
  
  <entry>
    <title>建站教程（hexo零基础建站）</title>
    <link href="https://blog.helijike.eu.org/posts/97844892.html"/>
    <id>https://blog.helijike.eu.org/posts/97844892.html</id>
    <published>2025-11-15T04:14:45.000Z</published>
    <updated>2026-05-18T16:42:59.038Z</updated>
    
    <content type="html"><![CDATA[<h2 id="1-事前准备"><a href="#1-事前准备" class="headerlink" title="1.事前准备"></a>1.事前准备</h2><p>GitHub（必须，你需要注册一个GitHub帐号）<br>Cloudflare（非必须，你需要注册一个Cloudflare帐号，这样你就可以将博客部署在CF的CDN里加速，但是你也可以直接使用GitHub.io分配的域名）</p><h2 id="2-软件支持"><a href="#2-软件支持" class="headerlink" title="2.软件支持"></a>2.软件支持</h2><ol><li>安装Git（必须）</li><li>安装Node.js（必须）</li><li>VSCode（非必须，这是一款轻量型的代码编辑器）</li></ol><h2 id="3配置-Git-密钥并连接至-Github"><a href="#3配置-Git-密钥并连接至-Github" class="headerlink" title="3配置 Git 密钥并连接至 Github"></a>3配置 Git 密钥并连接至 Github</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">git config -l  //查看所有配置</span><br><span class="line">git config --system --list //查看系统配置</span><br><span class="line">git config --global --list //查看用户（全局）配置</span><br></pre></td></tr></table></figure><h3 id="3-1-配置用户名和邮箱"><a href="#3-1-配置用户名和邮箱" class="headerlink" title="3.1 配置用户名和邮箱"></a>3.1 配置用户名和邮箱</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">git config --global user.name &quot;你的用户名&quot;</span><br><span class="line">git config --global user.email &quot;你的邮箱&quot;</span><br></pre></td></tr></table></figure><blockquote><p>通过git config -l 检查是否配置成功</p></blockquote><p>3.2 配置公钥连接Github<br><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh-keygen -t rsa -C &quot;你的邮箱&quot;</span><br></pre></td></tr></table></figure></p><blockquote><p>提示Enter file in which to save the key直接一路回车即可，新手小白不推荐设置密钥<br>生成公钥文件成功后，将公钥文件里的内容复制到GitHub的SSH Keys里，然后输入命令：ssh -T git@github.com</p></blockquote><p>3.3 私钥和公钥文件在C盘下用户文件夹下的.ssh的文件夹</p><ul><li>id_rsa私钥</li><li>id_rsa.pub公钥<blockquote><p>用记事本打开上述图片中的公钥id_rsa.pub，复制里面的内容，然后开始在github中配置ssh密钥。<br>3.4 将 SSH KEY 配置到 GitHub<br>进入github，点击右上角头像 选择settings，进入设置页后选择 SSH and GPG keys，名字随便起，公钥填到Key那一栏。<br>3.5 测试是否成功</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh -T git@github.com</span><br></pre></td></tr></table></figure><h2 id="4-创建GitHub-io仓库-也可以不用GitHub-io"><a href="#4-创建GitHub-io仓库-也可以不用GitHub-io" class="headerlink" title="4.创建GitHub.io仓库(也可以不用GitHub.io)"></a>4.创建GitHub.io仓库(也可以不用GitHub.io)</h2></blockquote></li></ul><ol><li>创建仓库</li><li>创建分支<br><img src="image-1.png" alt="alt text"><h2 id="5-安装Hexo"><a href="#5-安装Hexo" class="headerlink" title="5.安装Hexo"></a>5.安装Hexo</h2></li></ol>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;1-事前准备&quot;&gt;&lt;a href=&quot;#1-事前准备&quot; class=&quot;headerlink&quot; title=&quot;1.事前准备&quot;&gt;&lt;/a&gt;1.事前准备&lt;/h2&gt;&lt;p&gt;GitHub（必须，你需要注册一个GitHub帐号）&lt;br&gt;Cloudflare（非必须，你需要注册一个Cl</summary>
      
    
    
    
    <category term="教程" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="hexo" scheme="https://blog.helijike.eu.org/tags/hexo/"/>
    
    <category term="建站" scheme="https://blog.helijike.eu.org/tags/%E5%BB%BA%E7%AB%99/"/>
    
  </entry>
  
  <entry>
    <title>建站教程二（将静态博客hexo挂载到 Cloudflare Pages）</title>
    <link href="https://blog.helijike.eu.org/posts/b374de5.html"/>
    <id>https://blog.helijike.eu.org/posts/b374de5.html</id>
    <published>2025-11-15T03:40:12.000Z</published>
    <updated>2025-11-15T03:47:04.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="1-打开Cloudflare"><a href="#1-打开Cloudflare" class="headerlink" title="1.打开Cloudflare"></a>1.打开Cloudflare</h2><ul><li>没有的注册一个</li></ul><ol><li>在 Workers 和 Pages 中选择 Pages 的 连接到 Git<br><img src="https://blog.nanyu.xin/api/f/LQpU/1763206144049073925.jpg" alt=""><br><img src="https://blog.nanyu.xin/api/f/TJ1T/1763206200290347769.jpg" alt=""></li><li><p>然后登录你Blog仓库对应的GitHub帐号<br><img src="https://blog.nanyu.xin/api/f/F5Gm/1763206273932401164.jpg" alt=""><br><img src="https://blog.nanyu.xin/api/f/mzxu/1763206337161945101.jpg" alt=""><br>3.点击保存并部署后等待部署完成即可。<br><img src="https://blog.nanyu.xin/api/f/b1ZT/1763206408180849638.jpg" alt=""></p></li><li><p>提示成功！您的项目已部署到以下区域：全球后，浏览器访问：<a href="https://xxxxxxxio.pages.dev">https://xxxxxxxio.pages.dev</a> ，这时候我们就可以看到博客内容了。</p><blockquote><p>这时你也就可以将你的&lt;用户名&gt;.github.io的仓库设置为Private私库了</p></blockquote></li></ol><p>5如果你有自己的域名，你可以在这里绑定你自己的自定义域。</p><h2 id="2-如何使用"><a href="#2-如何使用" class="headerlink" title="2.如何使用"></a>2.如何使用</h2><h3 id="2-1新建一篇文件"><a href="#2-1新建一篇文件" class="headerlink" title="2.1新建一篇文件"></a>2.1新建一篇文件</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">hexo new 这是一篇新的博文</span><br><span class="line"></span><br></pre></td></tr></table></figure><ul><li>然后用文本编辑器去编辑_posts/这是一篇新的博文.md里的内容即可，注意要使用Markdown格式书写。</li><li>详细使用方法可以查阅 <a href="https://hexo.io/zh-cn/docs/writing">https://hexo.io/zh-cn/docs/writing</a><h3 id="2-2编辑完文章保存后可以使用如下命令，生成本地页面-http-localhost-4000-，进行预览"><a href="#2-2编辑完文章保存后可以使用如下命令，生成本地页面-http-localhost-4000-，进行预览" class="headerlink" title="2.2编辑完文章保存后可以使用如下命令，生成本地页面 http://localhost:4000/ ，进行预览"></a>2.2编辑完文章保存后可以使用如下命令，生成本地页面 <a href="http://localhost:4000/">http://localhost:4000/</a> ，进行预览</h3></li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">// Git BASH终端</span><br><span class="line">hexo cl &amp;&amp; hexo s</span><br><span class="line"></span><br><span class="line">// 或者</span><br><span class="line"></span><br><span class="line">// VSCODE终端</span><br><span class="line">hexo cl; hexo s</span><br><span class="line"></span><br></pre></td></tr></table></figure><h3 id="2-3确认无误后使用以下命令，将本地文章推送至GitHub仓库即可"><a href="#2-3确认无误后使用以下命令，将本地文章推送至GitHub仓库即可" class="headerlink" title="2.3确认无误后使用以下命令，将本地文章推送至GitHub仓库即可"></a>2.3确认无误后使用以下命令，将本地文章推送至GitHub仓库即可</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">// Git BASH终端</span><br><span class="line">hexo cl &amp;&amp; hexo g &amp;&amp; hexo d</span><br><span class="line"></span><br><span class="line">// 或者</span><br><span class="line"></span><br><span class="line">// VSCODE终端</span><br><span class="line">hexo cl; hexo g; hexo d</span><br><span class="line"></span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;1-打开Cloudflare&quot;&gt;&lt;a href=&quot;#1-打开Cloudflare&quot; class=&quot;headerlink&quot; title=&quot;1.打开Cloudflare&quot;&gt;&lt;/a&gt;1.打开Cloudflare&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;没有的注册一个&lt;/li&gt;
&lt;/u</summary>
      
    
    
    
    <category term="教程" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="hexo" scheme="https://blog.helijike.eu.org/tags/hexo/"/>
    
    <category term="部署" scheme="https://blog.helijike.eu.org/tags/%E9%83%A8%E7%BD%B2/"/>
    
  </entry>
  
  <entry>
    <title>建站教程一（hexo零基础建站）</title>
    <link href="https://blog.helijike.eu.org/posts/3c3c884d.html"/>
    <id>https://blog.helijike.eu.org/posts/3c3c884d.html</id>
    <published>2025-11-15T03:10:31.000Z</published>
    <updated>2025-11-15T03:46:31.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="1-事前准备"><a href="#1-事前准备" class="headerlink" title="1.事前准备"></a>1.事前准备</h2><ol><li>GitHub（必须，你需要注册一个GitHub帐号）</li><li>Cloudflare（非必须，你需要注册一个Cloudflare帐号，这样你就可以将博客部署在CF的CDN里加速，但是你也可以直接使用GitHub.io分配的域名）</li></ol><h2 id="2-软件支持"><a href="#2-软件支持" class="headerlink" title="2.软件支持"></a>2.软件支持</h2><ol><li>安装Git（必须）</li><li>安装Node.js（必须）</li><li>VSCode（非必须，这是一款轻量型的代码编辑器）</li></ol><h2 id="3配置-Git-密钥并连接至-Github"><a href="#3配置-Git-密钥并连接至-Github" class="headerlink" title="3配置 Git 密钥并连接至 Github"></a>3配置 Git 密钥并连接至 Github</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">git config -l  //查看所有配置</span><br><span class="line">git config --system --list //查看系统配置</span><br><span class="line">git config --global --list //查看用户（全局）配置</span><br></pre></td></tr></table></figure><h3 id="3-1-配置用户名和邮箱"><a href="#3-1-配置用户名和邮箱" class="headerlink" title="3.1 配置用户名和邮箱"></a>3.1 配置用户名和邮箱</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">git config --global user.name &quot;你的用户名&quot;</span><br><span class="line">git config --global user.email &quot;你的邮箱&quot;</span><br></pre></td></tr></table></figure><blockquote><p>通过git config -l 检查是否配置成功</p></blockquote><h3 id="3-2-配置公钥连接Github"><a href="#3-2-配置公钥连接Github" class="headerlink" title="3.2 配置公钥连接Github"></a>3.2 配置公钥连接Github</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh-keygen -t rsa -C &quot;你的邮箱&quot;</span><br></pre></td></tr></table></figure><blockquote><p>提示Enter file in which to save the key直接一路回车即可，新手小白不推荐设置密钥<br>生成公钥文件成功后，将公钥文件里的内容复制到GitHub的SSH Keys里，然后输入命令：ssh -T git@github.com</p></blockquote><h3 id="3-3-私钥和公钥文件在C盘下用户文件夹下的-ssh的文件夹"><a href="#3-3-私钥和公钥文件在C盘下用户文件夹下的-ssh的文件夹" class="headerlink" title="3.3 私钥和公钥文件在C盘下用户文件夹下的.ssh的文件夹"></a>3.3 私钥和公钥文件在C盘下用户文件夹下的.ssh的文件夹</h3><ul><li>id_rsa私钥</li><li>id_rsa.pub公钥</li></ul><blockquote><p>用记事本打开公钥id_rsa.pub，复制里面的内容，然后开始在github中配置ssh密钥。</p></blockquote><h3 id="3-4-将-SSH-KEY-配置到-GitHub"><a href="#3-4-将-SSH-KEY-配置到-GitHub" class="headerlink" title="3.4 将 SSH KEY 配置到 GitHub"></a>3.4 将 SSH KEY 配置到 GitHub</h3><p>进入github，点击右上角头像 选择settings，进入设置页后选择 SSH and GPG keys，名字随便起，公钥填到Key那一栏。</p><h3 id="3-5-测试是否成功"><a href="#3-5-测试是否成功" class="headerlink" title="3.5 测试是否成功"></a>3.5 测试是否成功</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh -T git@github.com</span><br></pre></td></tr></table></figure><h2 id="4-创建GitHub-io仓库-也可以不用GitHub-io"><a href="#4-创建GitHub-io仓库-也可以不用GitHub-io" class="headerlink" title="4.创建GitHub.io仓库(也可以不用GitHub.io)"></a>4.创建GitHub.io仓库(也可以不用GitHub.io)</h2><ol><li>创建仓库</li><li>创建分支<br><img src="https://img.090227.xyz/file/3d9274644460cd1ffeb26.png" alt="github"></li></ol><h2 id="5-初始化Hexo"><a href="#5-初始化Hexo" class="headerlink" title="5.初始化Hexo"></a>5.初始化Hexo</h2><h3 id="5-1-在win桌面运行git，输入如下命令"><a href="#5-1-在win桌面运行git，输入如下命令" class="headerlink" title="5.1 在win桌面运行git，输入如下命令"></a>5.1 在win桌面运行git，输入如下命令</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-cli -g</span><br><span class="line">hexo init blog</span><br><span class="line">cd blog</span><br><span class="line">npm install</span><br><span class="line">hexo server</span><br><span class="line"></span><br></pre></td></tr></table></figure><h3 id="5-2初始化项目后，blog有如下结构："><a href="#5-2初始化项目后，blog有如下结构：" class="headerlink" title="5.2初始化项目后，blog有如下结构："></a>5.2初始化项目后，blog有如下结构：</h3><p><img src="https://blog.nanyu.xin/api/f/RgeK/1763204463751417490.png" alt=""></p><blockquote><p>node_modules：依赖包<br>scaffolds：生成文章的一些模板<br>source：用来存放你的文章<br>themes：主题<br>.npmignore：发布时忽略的文件（可忽略）<br>_config.landscape.yml：主题的配置文件<br>config.yml：博客的配置文件<br>package.json：项目名称、描述、版本、运行和开发等信</p></blockquote><h3 id="5-3在命令行输入hexo-cl-amp-amp-hexo-s启动项目"><a href="#5-3在命令行输入hexo-cl-amp-amp-hexo-s启动项目" class="headerlink" title="5.3在命令行输入hexo cl &amp;&amp; hexo s启动项目"></a>5.3在命令行输入hexo cl &amp;&amp; hexo s启动项目</h3><blockquote><p>打开浏览器，输入地址：<a href="http://localhost:4000/">http://localhost:4000/</a> ，看到下面的效果，说明你的博客已经构建成功了。</p></blockquote><h2 id="6-将静态博客挂载到-GitHub-Pages"><a href="#6-将静态博客挂载到-GitHub-Pages" class="headerlink" title="6.将静态博客挂载到 GitHub Pages"></a>6.将静态博客挂载到 GitHub Pages</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-deployer-git --save</span><br><span class="line"></span><br></pre></td></tr></table></figure><blockquote><p>这个命令很重要，不能运行blog文件部署不到GitHub上</p></blockquote><h3 id="修改-config-yml-文件"><a href="#修改-config-yml-文件" class="headerlink" title="修改 _config.yml 文件"></a>修改 _config.yml 文件</h3><ol><li><p>在blog目录下的_config.yml，就是整个Hexo框架的配置文件了。可以在里面修改大部分的配置。详细可参考官方的配置描述。</p></li><li><p>修改最后一行的配置，将xxx修改为你自己的github项目地址即可，还有分支要改为main代表主分支（注意缩进）。</p></li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">deploy:</span><br><span class="line">  type: git</span><br><span class="line">  repository: git@github.com:xxxx/xxxx.github.io.git</span><br><span class="line">  branch: main</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>修改好配置后，运行如下命令，将代码部署到 GitHub（Hexo三连）。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">// Git BASH终端</span><br><span class="line">hexo clean &amp;&amp; hexo generate &amp;&amp; hexo deploy  </span><br><span class="line"></span><br><span class="line">// 或者</span><br><span class="line"></span><br><span class="line">// VSCODE终端</span><br><span class="line">hexo cl; hexo g; hexo d</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="VSCODE-终端首次执行报错（如果你使用的是win系统自带的命令行需运行如下命令）"><a href="#VSCODE-终端首次执行报错（如果你使用的是win系统自带的命令行需运行如下命令）" class="headerlink" title="VSCODE 终端首次执行报错（如果你使用的是win系统自带的命令行需运行如下命令）"></a>VSCODE 终端首次执行报错（如果你使用的是win系统自带的命令行需运行如下命令）</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">Set-ExecutionPolicy RemoteSigned</span><br><span class="line"></span><br></pre></td></tr></table></figure><ul><li>hexo clean：删除之前生成的文件，可以用hexo cl缩写。</li><li>hexo generate：生成静态文章，可以用hexo g缩写</li><li>hexo deploy：部署文章，可以用hexo d缩写<br><u><strong>如果出现Deploy done，则说明部署成功了。</strong></u></li></ul><p><img src="https://blog.nanyu.xin/api/f/W70l/1763205371810958670.png" alt="部署到GitHub成功"></p><blockquote><p>稍等两分钟，打开浏览器访问：<a href="https://xxxx.github.io">https://xxxx.github.io</a> ，这时候我们就可以看到博客内容了。(xxx就是你的仓库名）</p></blockquote>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;1-事前准备&quot;&gt;&lt;a href=&quot;#1-事前准备&quot; class=&quot;headerlink&quot; title=&quot;1.事前准备&quot;&gt;&lt;/a&gt;1.事前准备&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;GitHub（必须，你需要注册一个GitHub帐号）&lt;/li&gt;
&lt;li&gt;Cloudflare（非</summary>
      
    
    
    
    <category term="教程" scheme="https://blog.helijike.eu.org/categories/%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="hexo" scheme="https://blog.helijike.eu.org/tags/hexo/"/>
    
    <category term="建站" scheme="https://blog.helijike.eu.org/tags/%E5%BB%BA%E7%AB%99/"/>
    
  </entry>
  
</feed>
