<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Hugo on CHEN 的博客</title>
        <link>https://blog.chen-api.cloud/tags/hugo/</link>
        <description>Recent content in Hugo on CHEN 的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Tue, 26 May 2026 13:05:00 +0800</lastBuildDate><atom:link href="https://blog.chen-api.cloud/tags/hugo/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>从 0 到上线：我如何搭建自己的 Hugo 博客</title>
            <link>https://blog.chen-api.cloud/posts/from-zero-to-hugo-blog/</link>
            <pubDate>Tue, 26 May 2026 13:05:00 +0800</pubDate>
            <guid>https://blog.chen-api.cloud/posts/from-zero-to-hugo-blog/</guid>
            <description>&lt;p&gt;这篇笔记记录了我从一台空白 Ubuntu 服务器开始，搭建并发布自己 Hugo 博客的全过程。&lt;/p&gt;&#xA;&lt;p&gt;这次没有走现成面板，也没有用一键脚本，而是一步一步把域名、Nginx、HTTPS、Hugo 和主题都接起来。中间踩了不少坑，但也因此把整个链路摸清了。&lt;/p&gt;&#xA;&lt;h2 id=&#34;一准备工作&#34;&gt;一、准备工作&#xA;&lt;/h2&gt;&lt;p&gt;开始之前，服务器上已经跑着一个现有站点 &lt;code&gt;sub2api&lt;/code&gt;，域名是 &lt;code&gt;chen-api.cloud&lt;/code&gt;。因此这次部署博客时，有一个约束条件很明确：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;不能影响现有的 &lt;code&gt;sub2api&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;博客要部署到新子域名 &lt;code&gt;blog.chen-api.cloud&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;这个前提决定了后面的 Nginx 配置不能覆盖原站点，只能新增一个独立 &lt;code&gt;server&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;h2 id=&#34;二先把-hugo-站点跑起来&#34;&gt;二、先把 Hugo 站点跑起来&#xA;&lt;/h2&gt;&lt;p&gt;一开始最先遇到的是两个典型问题。&lt;/p&gt;&#xA;&lt;p&gt;第一个问题是命令本身输错了。我先输入了大写的 &lt;code&gt;HUGO&lt;/code&gt;，系统直接报错：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HUGO: command not found&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;后来确认应该使用小写命令：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hugo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;第二个问题是配置文件 &lt;code&gt;config.toml&lt;/code&gt; 写坏了。因为我最开始用 heredoc 写文件时，把 &lt;code&gt;EOF&lt;/code&gt; 缩进了，结果它真的被写进了文件里，Hugo 解析时报错：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;unmarshal failed: toml: expected character &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;修正之后，最小配置大概是这样：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;baseURL&lt;/span&gt; = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://blog.chen-api.cloud/&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;locale&lt;/span&gt; = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;zh-cn&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;title&lt;/span&gt; = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;CHEN 的博客&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里最大的教训是：如果不熟悉 shell heredoc，短文件直接用 &lt;code&gt;printf&lt;/code&gt; 或者 &lt;code&gt;nano&lt;/code&gt; 会稳很多。&lt;/p&gt;&#xA;&lt;h2 id=&#34;三给博客准备最小内容&#34;&gt;三、给博客准备最小内容&#xA;&lt;/h2&gt;&lt;p&gt;为了先验证整条发布链路，我没有一开始就上复杂主题，而是先做了一个最小首页。&lt;/p&gt;&#xA;&lt;p&gt;最早的问题并不是 Nginx，而是 Hugo 内容文件 &lt;code&gt;_index.md&lt;/code&gt; 写坏了。比如：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;YAML 头信息没有正确闭合&lt;/li&gt;&#xA;&lt;li&gt;每行前面多了空格&lt;/li&gt;&#xA;&lt;li&gt;文件末尾多写了一行 &lt;code&gt;EOF&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;这会导致 Hugo 报错：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;EOF looking &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; end YAML front matter delimiter&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;修正之后，一个最小可用首页类似这样：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;title: &amp;#34;首页&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;这是我的 Hugo 博客，已经部署成功。&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;等 Hugo 能正常构建出 &lt;code&gt;index.html&lt;/code&gt; 之后，才适合继续往下接 Nginx。&lt;/p&gt;&#xA;&lt;h2 id=&#34;四nginx-配置必须与现有业务并存&#34;&gt;四、Nginx 配置必须与现有业务并存&#xA;&lt;/h2&gt;&lt;p&gt;由于服务器上已经有 &lt;code&gt;sub2api&lt;/code&gt;，部署前先检查了当前站点配置：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;sites-enabled&lt;/code&gt; 里已有 &lt;code&gt;sub2api&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;它处理的是 &lt;code&gt;chen-api.cloud&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;没有占用 &lt;code&gt;blog.chen-api.cloud&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;这说明博客可以安全新增一个站点，而不必修改原服务。&lt;/p&gt;&#xA;&lt;p&gt;博客对应的 Nginx 配置逻辑非常简单：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;server&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;listen&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;listen&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;[::]:80&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;server_name&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;blog.chen-api.cloud&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;root&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;/var/www/blog&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;index&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;index.html&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;location&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;/&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;try_files&lt;/span&gt; $uri $uri/ &lt;span style=&#34;color:#e6db74&#34;&gt;/index.html&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里有个关键判断过程。当时博客域名第一次访问并不是 &lt;code&gt;404&lt;/code&gt;，而是：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl: &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;6&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; Could not resolve host: blog.chen-api.cloud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这说明问题根本不在 Nginx，而在 DNS。&lt;/p&gt;&#xA;&lt;h2 id=&#34;五域名解析是最容易忽略的一步&#34;&gt;五、域名解析是最容易忽略的一步&#xA;&lt;/h2&gt;&lt;p&gt;之后用 &lt;code&gt;nslookup&lt;/code&gt; 检查，发现子域名一开始是 &lt;code&gt;NXDOMAIN&lt;/code&gt;，也就是根本没有这条记录。&lt;/p&gt;&#xA;&lt;p&gt;必须先去 DNS 后台添加：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;类型：&lt;code&gt;A&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;主机记录：&lt;code&gt;blog&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;记录值：服务器公网 IP&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;等 DNS 生效之后，再次检查：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nslookup blog.chen-api.cloud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;已经能正确解析到服务器 IP，这时候再访问 HTTP，才真正走到了 Nginx。&lt;/p&gt;&#xA;&lt;h2 id=&#34;六403-的根因不是权限而是没生成首页&#34;&gt;六、403 的根因不是权限，而是没生成首页&#xA;&lt;/h2&gt;&lt;p&gt;DNS 生效之后，博客域名开始返回 &lt;code&gt;403 Forbidden&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;p&gt;这一步很容易误判成目录权限问题，但实际排查后发现根因是：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;/var/www/blog&lt;/code&gt; 目录里没有 &lt;code&gt;index.html&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Hugo 因为内容文件错误，根本没有生成首页&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;也就是说，&lt;code&gt;403&lt;/code&gt; 只是结果，真正的问题还是构建失败。&lt;/p&gt;&#xA;&lt;p&gt;这次部署最大的经验之一就是：先看生成目录里有没有实际产物，再怀疑 Nginx。&lt;/p&gt;&#xA;&lt;h2 id=&#34;七https-比部署本身更顺利&#34;&gt;七、HTTPS 比部署本身更顺利&#xA;&lt;/h2&gt;&lt;p&gt;当 &lt;code&gt;http://blog.chen-api.cloud&lt;/code&gt; 能返回 &lt;code&gt;200 OK&lt;/code&gt; 后，HTTPS 基本就是顺水推舟了。&lt;/p&gt;&#xA;&lt;p&gt;直接使用 &lt;code&gt;certbot --nginx&lt;/code&gt; 申请并挂载证书。过程中系统提示这个域名已经存在证书，于是选择了“重新安装已有证书”，而不是重新签发。&lt;/p&gt;&#xA;&lt;p&gt;最终验证结果：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;https://blog.chen-api.cloud&lt;/code&gt; 返回 &lt;code&gt;200 OK&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;certbot.timer&lt;/code&gt; 已启用&lt;/li&gt;&#xA;&lt;li&gt;证书会自动续期&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;到这里，博客已经算正式上线。&lt;/p&gt;&#xA;&lt;h2 id=&#34;八换主题时又踩到了-hugo-版本坑&#34;&gt;八、换主题时又踩到了 Hugo 版本坑&#xA;&lt;/h2&gt;&lt;p&gt;博客最初虽然可用，但只是一个临时首页，不像正式博客。后来我选择切换到 &lt;code&gt;Hugo Theme Stack&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;p&gt;主题装上之后，新的问题出现了：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;hash&amp;#34;&lt;/span&gt; not defined&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;排查后发现并不是主题坏了，而是服务器自带 Hugo 版本太旧：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;当前版本：&lt;code&gt;0.92.2&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Stack&lt;/code&gt; 主题最低要求：&lt;code&gt;0.157.0&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;所以必须升级 Hugo。&lt;/p&gt;&#xA;&lt;h2 id=&#34;九普通版-hugo-还不够必须用-extended&#34;&gt;九、普通版 Hugo 还不够，必须用 extended&#xA;&lt;/h2&gt;&lt;p&gt;升级到新版本之后，构建又报了另一个错误：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TOCSS: failed to transform &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/scss/style.scss&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这说明我虽然把 Hugo 升级了，但装的是普通版，不是 &lt;code&gt;extended&lt;/code&gt; 版。&lt;/p&gt;&#xA;&lt;p&gt;而 &lt;code&gt;Stack&lt;/code&gt; 主题会编译 SCSS，因此必须安装官方 &lt;code&gt;extended&lt;/code&gt; 版本。&lt;/p&gt;&#xA;&lt;p&gt;替换完成后，最终版本变成：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hugo v0.161.1+extended&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;到这一步，主题才真正构建成功，博客首页也切换成了卡片式布局。&lt;/p&gt;&#xA;&lt;h2 id=&#34;十最终结果&#34;&gt;十、最终结果&#xA;&lt;/h2&gt;&lt;p&gt;现在这套博客已经具备了基础可用状态：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;域名：&lt;code&gt;blog.chen-api.cloud&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Web 服务：&lt;code&gt;Nginx&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;证书：&lt;code&gt;Let&#39;s Encrypt&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;博客引擎：&lt;code&gt;Hugo&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;主题：&lt;code&gt;Stack&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;自动续期：&lt;code&gt;certbot.timer&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;而且整个过程没有影响服务器上原来的 &lt;code&gt;sub2api&lt;/code&gt; 服务。&lt;/p&gt;&#xA;&lt;h2 id=&#34;十一这次部署里最有价值的几个经验&#34;&gt;十一、这次部署里最有价值的几个经验&#xA;&lt;/h2&gt;&lt;p&gt;最后总结几条我这次最有体感的经验：&lt;/p&gt;&#xA;&lt;h3 id=&#34;1-不要过早怀疑-nginx&#34;&gt;1. 不要过早怀疑 Nginx&#xA;&lt;/h3&gt;&lt;p&gt;访问异常不一定是 Nginx 配错了，也可能是：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;DNS 没生效&lt;/li&gt;&#xA;&lt;li&gt;Hugo 没生成文件&lt;/li&gt;&#xA;&lt;li&gt;内容文件格式写坏&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;2-heredoc-对新手并不友好&#34;&gt;2. heredoc 对新手并不友好&#xA;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;cat &amp;lt;&amp;lt;EOF&lt;/code&gt; 看起来方便，但实际非常容易因为缩进、结尾位置或者误输入，把 &lt;code&gt;EOF&lt;/code&gt; 写进文件里。&lt;/p&gt;&#xA;&lt;p&gt;短配置更推荐：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;printf&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;nano&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;3-主题和-hugo-版本必须一起看&#34;&gt;3. 主题和 Hugo 版本必须一起看&#xA;&lt;/h3&gt;&lt;p&gt;很多 Hugo 主题页面能打开，不代表你的本地环境就能跑。&lt;/p&gt;&#xA;&lt;p&gt;一定要先确认：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;主题最低支持版本&lt;/li&gt;&#xA;&lt;li&gt;是否要求 &lt;code&gt;extended&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;4-先打通最小链路再追求美观&#34;&gt;4. 先打通最小链路，再追求美观&#xA;&lt;/h3&gt;&lt;p&gt;这次如果一开始就折腾主题、菜单、页面细节，排障会困难很多。&lt;/p&gt;&#xA;&lt;p&gt;正确顺序应该是：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Hugo 能构建&lt;/li&gt;&#xA;&lt;li&gt;Nginx 能访问&lt;/li&gt;&#xA;&lt;li&gt;DNS 正常&lt;/li&gt;&#xA;&lt;li&gt;HTTPS 正常&lt;/li&gt;&#xA;&lt;li&gt;再换主题和美化&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;十二下一步&#34;&gt;十二、下一步&#xA;&lt;/h2&gt;&lt;p&gt;博客虽然已经上线，但现在还只是第一阶段。接下来我准备继续补这些内容：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;关于页&lt;/li&gt;&#xA;&lt;li&gt;归档页&lt;/li&gt;&#xA;&lt;li&gt;搜索页&lt;/li&gt;&#xA;&lt;li&gt;头像和侧边栏资料&lt;/li&gt;&#xA;&lt;li&gt;更多正式文章&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;这篇文章本身，就是这个博客发布出去的第一篇“建站记录”。&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>博客已切换到 Stack 主题</title>
            <link>https://blog.chen-api.cloud/posts/hello-stack/</link>
            <pubDate>Tue, 26 May 2026 12:00:00 +0800</pubDate>
            <guid>https://blog.chen-api.cloud/posts/hello-stack/</guid>
            <description>&lt;p&gt;博客已经部署完成，并切换到了 Hugo Theme Stack。&lt;/p&gt;&#xA;&lt;p&gt;接下来会逐步补充文章、页面和更多配置。&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
