<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>DDverse - 咕咕咕~</title><link>https://blog.wemoez.com/</link><description>Recent content on DDverse - 咕咕咕~</description><generator>Hugo -- gohugo.io</generator><language>zh</language><copyright>MasterDD</copyright><lastBuildDate>Sat, 21 Mar 2026 14:12:02 +0800</lastBuildDate><atom:link href="https://blog.wemoez.com/index.xml" rel="self" type="application/rss+xml"/><item><title>DDverse博客升级日志 - 依靠Github Action自动推送至私有服务器</title><link>https://blog.wemoez.com/post/ddverse-update/</link><pubDate>Sat, 21 Mar 2026 14:12:02 +0800</pubDate><guid>https://blog.wemoez.com/post/ddverse-update/</guid><description>&lt;img src="https://blog.wemoez.com/" alt="Featured image of post DDverse博客升级日志 - 依靠Github Action自动推送至私有服务器" /&gt;&lt;h2 id="前言"&gt;前言
&lt;/h2&gt;&lt;p&gt;本博客从前都是在我的本地电脑上编辑并构建，再通过SFTP等程序上传到服务器目录，这整个流程都需要手动操作且十分繁琐耗时&lt;/p&gt;
&lt;p&gt;最近 Stack主题 更新到 &lt;code&gt;v4&lt;/code&gt; 版本， 就想着把这些问题优化一下，并使用更加规范的方式管理项目&lt;/p&gt;
&lt;p&gt;Stack主题提供了官方入门模板 &lt;a class="link" href="https://github.com/CaiJimmy/hugo-theme-stack-starter" target="_blank" rel="noopener"
 &gt;Starter template&lt;/a&gt; 可以快速创建一个实例并部署至 Github Pages&lt;/p&gt;
&lt;p&gt;本文所述的方法适用于从Stack主题源代码构建并使用Github Action推送至私有服务器，不使用Github Pages的读者，部分内容参考 &lt;strong&gt;&lt;a class="link" href="https://stack.cai.im/zh/" target="_blank" rel="noopener"
 &gt;Stack - 为博客设计的卡片式主题&lt;/a&gt;&lt;/strong&gt; ，请优先阅读 Stack主题官方文档&lt;/p&gt;
&lt;h2 id="起步"&gt;起步
&lt;/h2&gt;&lt;h3 id="1让我们从零开始---环境搭建"&gt;1.让我们从零开始 - 环境搭建
&lt;/h3&gt;&lt;p&gt;本博客早期发布过一篇在本地电脑搭建Stack静态博客的文章，其中很多操作不符合规范且导致后续维护面临很多麻烦，因此在这里我们从头开始，创建一个新的项目&lt;/p&gt;
&lt;p&gt;在开发环境中安装 &lt;code&gt;Hugo&lt;/code&gt;，在使用 Stack v4主题时，必须确保 Hugo 的版本 ≥ &lt;strong&gt;v0.157.0&lt;/strong&gt; 且使用 &lt;strong&gt;&lt;code&gt;extended version&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;确定你的开发目录，按照读者喜欢的方式，使用&lt;code&gt;hugo new site &amp;lt;项目名称&amp;gt;&lt;/code&gt; 来创建一个项目文件夹，并创建一个私有的Github存储库，将此项目的文件托管于Github中&lt;/p&gt;
&lt;p&gt;使用以下命令将 Stack主题 以一个 &lt;code&gt;submodule&lt;/code&gt; 的形式添加到项目中。至此一个最简单的开发环境就搭建完成了&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 如果您已经为站点使用了 Git，可以运行以下命令将主题添加为子模块：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git submodule add https://github.com/CaiJimmy/hugo-theme-stack/ themes/hugo-theme-stack
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="2修改主题并丰富你的博客"&gt;2.修改主题并丰富你的博客
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;注意：任何情况下都不要直接修改 &lt;code&gt;themes/hugo-theme-stack&lt;/code&gt; 下的任何文件&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote class="alert alert-important"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;📌&lt;/span&gt;
 &lt;span class="alert-title"&gt;重要&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;如果您通过 Git / Git 子模块安装了主题，您可以直接修改主题文件并在本地站点中查看更改。&lt;/p&gt;
&lt;p&gt;但是，&lt;strong&gt;您不能直接提交并推送更改&lt;/strong&gt;，因为您没有推送到主题存储库的权限。&lt;/p&gt;
&lt;p&gt;如果读者通过 &lt;strong&gt;fork&lt;/strong&gt; 的方式存储自己的主题文件，那就可以直接修改主题文件，不过可能影响未来拉取更新&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;p&gt;将你需要修改的一切文件都按照 &lt;code&gt;themes/hugo-theme-stack&lt;/code&gt; 下相同的文件路径复制到项目根目录中，比如需要修改&lt;code&gt;themes/hugo-theme-stack/layouts/404.html&lt;/code&gt; 这个文件，就将其复制到&lt;code&gt;项目目录/layouts/404.html&lt;/code&gt; ，对此文件进行修改即可，Hugo在构建时会优先查找项目目录&lt;/p&gt;
&lt;p&gt;在 Stack v4版本中，移除了一些原有的规范并引入了新的功能，读者可以根据新的规范，调整自己的文章内容、布局。具体变更详见 &lt;a class="link" href="https://stack.cai.im/zh/guide/upgrade-to-v4" target="_blank" rel="noopener"
 &gt;升级到 v4 | Stack&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;完成你所需的所有修改后，使用Github Desktop或者命令行工具，将你的项目文件全部推送至Github存储库中，后续的新文章，主题修改、更新等操作都只需要将更改的文件推送至存储库即可，且&lt;code&gt;submodule&lt;/code&gt;的形式能够确保每次构建都使用Stack主题的最新版本&lt;/p&gt;
&lt;p&gt;&lt;img alt="库" class="gallery-image" data-flex-basis="594px" data-flex-grow="247" height="366" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.wemoez.com/post/ddverse-update/repositories.webp" srcset="https://blog.wemoez.com/post/ddverse-update/repositories_hu_29eb8fc941ee2018.webp 800w, https://blog.wemoez.com/post/ddverse-update/repositories.webp 906w" width="906"&gt;&lt;/p&gt;
&lt;h3 id="3创建-github-action-工作流"&gt;3.创建 Github Action 工作流
&lt;/h3&gt;&lt;p&gt;在Github网站中选择博客存储库对应的 &lt;strong&gt;&lt;code&gt;Actions&lt;/code&gt;&lt;/strong&gt; -&amp;gt; &lt;strong&gt;&lt;code&gt;New workflow&lt;/code&gt;&lt;/strong&gt; 搜索 &lt;strong&gt;Hugo&lt;/strong&gt; 并&lt;code&gt;Configure&lt;/code&gt;，此时会在项目中创建一个名为&lt;code&gt;hugo.yml&lt;/code&gt;的文件，向其中写入以下内容&lt;/p&gt;
&lt;blockquote class="alert alert-note"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;📝&lt;/span&gt;
 &lt;span class="alert-title"&gt;备注&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;此示例只基于 Stack v4主题测试，早期版本或其他版本未经测试，请读者自行尝试&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;span class="lnt"&gt;42
&lt;/span&gt;&lt;span class="lnt"&gt;43
&lt;/span&gt;&lt;span class="lnt"&gt;44
&lt;/span&gt;&lt;span class="lnt"&gt;45
&lt;/span&gt;&lt;span class="lnt"&gt;46
&lt;/span&gt;&lt;span class="lnt"&gt;47
&lt;/span&gt;&lt;span class="lnt"&gt;48
&lt;/span&gt;&lt;span class="lnt"&gt;49
&lt;/span&gt;&lt;span class="lnt"&gt;50
&lt;/span&gt;&lt;span class="lnt"&gt;51
&lt;/span&gt;&lt;span class="lnt"&gt;52
&lt;/span&gt;&lt;span class="lnt"&gt;53
&lt;/span&gt;&lt;span class="lnt"&gt;54
&lt;/span&gt;&lt;span class="lnt"&gt;55
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Deploy Hugo site&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;push&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;branches&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;main&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;workflow_dispatch&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;FORCE_JAVASCRIPT_ACTIONS_TO_NODE24&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;defaults&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;shell&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;bash&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;jobs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Build job&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;build&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;runs-on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ubuntu-latest&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;#截至发文 Hugo 的最新版本，最低≥0.157.0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;HUGO_VERSION&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.158.0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Install Hugo CLI&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="sd"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; &amp;amp;&amp;amp; sudo dpkg -i ${{ runner.temp }}/hugo.deb&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Install Dart Sass&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;sudo snap install dart-sass&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Checkout&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;actions/checkout@v4&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;with&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;submodules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;recursive&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Install Node.js dependencies&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;[[ -f package-lock.json || -f npm-shrinkwrap.json ]] &amp;amp;&amp;amp; npm ci || true&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Build with Hugo&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;HUGO_CACHEDIR&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ runner.temp }}/hugo_cache&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;HUGO_ENVIRONMENT&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;production&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;#注意修改域名&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="sd"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; hugo \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; --minify \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; --baseURL &amp;#34;https://yourdomain.com/&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#以下内容注意按照自己的服务器实际情况更改，花括号内的是环境变量，默认不用更改&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Deploy to VPS via SSH&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;easingthemes/ssh-deploy@main&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;SOURCE&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;public/&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;REMOTE_HOST&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ secrets.SERVER_IP }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;REMOTE_USER&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ secrets.SERVER_USER }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;REMOTE_PORT&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ secrets.SERVER_PORT }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;SSH_PRIVATE_KEY&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ secrets.SERVER_SSH_KEY }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;TARGET&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/var/www/html/&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ARGS&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;-avz --delete&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;保存这个文件后 Github Action 将立即开始执行一次构建，因为暂时还没有配置所需的环境变量，所以会在 &lt;code&gt;Deploy&lt;/code&gt; 这一步卡住并报错，不用理会&lt;/p&gt;
&lt;p&gt;前往 &lt;code&gt;项目库&lt;/code&gt; -&amp;gt; &lt;code&gt;Settings&lt;/code&gt; -&amp;gt; &lt;code&gt;Secrets and variables&lt;/code&gt; -&amp;gt; &lt;code&gt;Actions&lt;/code&gt; -&amp;gt; &lt;code&gt;New repository secret&lt;/code&gt;，分别创建4个名为&lt;code&gt;SERVER_IP&lt;/code&gt; &lt;code&gt;SERVER_USER &lt;/code&gt; &lt;code&gt;SERVER_PORT&lt;/code&gt; &lt;code&gt;SERVER_SSH_KEY&lt;/code&gt; ，并填入自己的私有服务器的信息，此类信息将保存在你的Github账户中且不会被二次展示，保护好自己的账户&lt;/p&gt;
&lt;p&gt;一切就绪后可在&lt;code&gt;Actions&lt;/code&gt;一栏中再次运行工作流，构建成功&lt;/p&gt;
&lt;p&gt;&lt;img alt="构建成功" class="gallery-image" data-flex-basis="1097px" data-flex-grow="457" height="479" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.wemoez.com/post/ddverse-update/success.webp" srcset="https://blog.wemoez.com/post/ddverse-update/success_hu_19a5afeb2dab93ec.webp 800w, https://blog.wemoez.com/post/ddverse-update/success_hu_29c124498ba1e153.webp 1600w, https://blog.wemoez.com/post/ddverse-update/success.webp 2190w" width="2190"&gt;&lt;/p&gt;
&lt;p&gt;此时，构建的网页文件也一站式推送到了服务器上，Nginx可以直接读取它们了&lt;/p&gt;
&lt;h3 id="4进阶设置"&gt;4.进阶设置
&lt;/h3&gt;&lt;h4 id="1在服务器上创建一个专属于-github-action-操纵的账户"&gt;1.在服务器上创建一个专属于 Github Action 操纵的账户
&lt;/h4&gt;&lt;p&gt;此举可避免直接给予Github虚拟机root权限所带来的安全隐患，在私有服务器上执行以下命令即可，此处以 &lt;strong&gt;Ubuntu 24.04&lt;/strong&gt; 系统并使用 &lt;strong&gt;Nginx&lt;/strong&gt; 网关为例&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo adduser github-deploy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo usermod -aG www-data github-deploy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo chown -R www-data:www-data /var/www/html
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo chmod -R &lt;span class="m"&gt;775&lt;/span&gt; /var/www/html
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo chmod g+s /var/www/html
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo su - github-deploy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh-keygen -t ed25519 -C &lt;span class="s2"&gt;&amp;#34;github-action-deploy&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p ~/.ssh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat ~/.ssh/id_ed25519.pub &amp;gt;&amp;gt; ~/.ssh/authorized_keys
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod &lt;span class="m"&gt;700&lt;/span&gt; ~/.ssh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod &lt;span class="m"&gt;600&lt;/span&gt; ~/.ssh/authorized_keys
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#显示私钥&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat ~/.ssh/id_ed25519
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;此时将前文为&lt;code&gt;Actions&lt;/code&gt;配置的环境变量修改为新的用户和新的SSH私钥即可实现最小权限设计原则&lt;/p&gt;
&lt;h4 id="2自动清理cdn缓存"&gt;2.自动清理CDN缓存
&lt;/h4&gt;&lt;p&gt;一般静态博客站点都使用CDN服务来加快访问速度，但此举可能导致网站更新了但访问者依旧处于缓存期的情况，此时可以通过 &lt;code&gt;Actions&lt;/code&gt;在每次构建成功后调用CDN服务商提供的API来清理指定域名的缓存实现网站更新后实时刷新，这里以 &lt;strong&gt;Cloudflare CDN&lt;/strong&gt; 为例，在工作流中新增一个&lt;code&gt;job&lt;/code&gt;，注意调整 yaml 的缩进规范&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;runs-on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ubuntu-latest&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Checkout&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;actions/checkout@v4&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Purge cache&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;jakejarvis/cloudflare-purge-action@master&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;if&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;success()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 仅在之前步骤成功时执行&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;CLOUDFLARE_ZONE&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ secrets.CLOUDFLARE_ZONE_ID }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;CLOUDFLARE_TOKEN&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ secrets.CLOUDFLARE_API_TOKEN }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 指定具体的 URL，支持多个，用逗号分隔&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;CLOUDFLARE_URL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ secrets.CLOUDFLARE_URL }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;按照内容所示的变量设置好对应自己Cloudflare账户的令牌即可&lt;/p&gt;
&lt;h2 id="结语"&gt;结语
&lt;/h2&gt;&lt;p&gt;这次优化使整体项目结构更加规范且易于管理维护，把很多操作自动化，可以将更多的精力放在对文章内容的打磨上&lt;/p&gt;
&lt;h2 id="版权"&gt;版权
&lt;/h2&gt;&lt;p&gt;本文章隶属于 &lt;a class="link" href="https://blog.atri.pw" target="_blank" rel="noopener"
 &gt;DDverse&lt;/a&gt; ，遵循 © CC BY-NC-SA 4.0 协议，如需转载请保留来源并在必要的时候告知我&lt;/p&gt;</description></item><item><title>部署你的第一个通用机器人框架--QQ篇</title><link>https://blog.wemoez.com/post/install-qqbot-on-your-server/</link><pubDate>Sun, 01 Feb 2026 13:05:04 +0800</pubDate><guid>https://blog.wemoez.com/post/install-qqbot-on-your-server/</guid><description>&lt;img src="https://blog.wemoez.com/" alt="Featured image of post 部署你的第一个通用机器人框架--QQ篇" /&gt;&lt;h2 id="前言"&gt;前言
&lt;/h2&gt;&lt;p&gt;本文所有操作基于 &lt;strong&gt;Ubuntu server 24.04&lt;/strong&gt; 系统进行部署，全程需要在Shell环境下操作，无图形交互界面（WebUI除外），使用 &lt;strong&gt;&lt;a class="link" href="https://napneko.github.io/" target="_blank" rel="noopener"
 &gt;Napcat&lt;/a&gt;&lt;/strong&gt; + &lt;strong&gt;&lt;a class="link" href="https://nonebot.dev/" target="_blank" rel="noopener"
 &gt;NoneBot&lt;/a&gt;框架&lt;/strong&gt; 架构部署，请自行准备好相关环境&lt;/p&gt;
&lt;p&gt;优先选择阅读官方文档，本文中部分文本节选自官方文档&lt;/p&gt;
&lt;h2 id="起步"&gt;起步
&lt;/h2&gt;&lt;h3 id="1安装napcat----登录机器人qq号"&gt;1.安装Napcat &amp;amp; 登录机器人QQ号
&lt;/h3&gt;&lt;p&gt;Napcat 官方文档中提供了较为完整的且适用于各个操作系统的安装说明，在Linux平台上，Napcat提供了三种安装方式：&lt;/p&gt;
&lt;p&gt;1.&lt;a class="link" href="https://github.com/NapNeko/napcat-linux-installer" target="_blank" rel="noopener"
 &gt;NapCat.Linux.Launcher - 新式非入侵式启动器&lt;/a&gt; | 2.&lt;a class="link" href="https://github.com/NapNeko/NapCatAppImageBuild/releases" target="_blank" rel="noopener"
 &gt;NapCat.AppImage&lt;/a&gt; | 3.&lt;a class="link" href="https://github.com/NapNeko/NapCat-Docker" target="_blank" rel="noopener"
 &gt;NapCat.Docker - Linux容器化部署&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本文基于第一种方式进行部署，读者注意根据自身管理方式选择最佳安装方式，此部分可直接使用&lt;a class="link" href="https://napneko.github.io/guide/boot/Shell#napcat-linux-launcher-%E6%96%B0%E5%BC%8F%E9%9D%9E%E5%85%A5%E4%BE%B5%E5%BC%8F%E5%90%AF%E5%8A%A8%E5%99%A8" target="_blank" rel="noopener"
 &gt;官方文档&lt;/a&gt;中的安装命令&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -o napcat.sh https://raw.githubusercontent.com/NapNeko/napcat-linux-installer/refs/heads/main/install.sh &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; bash napcat.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;官方脚本可以完美的一键安装在当前目录中，我们看到如下提示代表一切就绪&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;2026-02-01 02:12:52&lt;span class="o"&gt;]&lt;/span&gt;: 启动步骤: 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;2026-02-01 02:12:52&lt;span class="o"&gt;]&lt;/span&gt;: 输入 Xvfb :1 -screen &lt;span class="m"&gt;0&lt;/span&gt; 1x1x8 +extension GLX +render &amp;gt; /dev/null 2&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="p"&gt;&amp;amp;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;2026-02-01 02:12:52&lt;span class="o"&gt;]&lt;/span&gt;: 输入 &lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;DISPLAY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;:1 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;2026-02-01 02:12:52&lt;span class="o"&gt;]&lt;/span&gt;: 输入 sudo su 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;2026-02-01 02:12:52&lt;span class="o"&gt;]&lt;/span&gt;: 输入 &lt;span class="nv"&gt;LD_PRELOAD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;./libnapcat_launcher.so qq --no-sandbox 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;2026-02-01 02:12:52&lt;span class="o"&gt;]&lt;/span&gt;: 或直接运行 sudo bash ./launcher.sh 启动 NapCat Shell
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;此时，在安装目录下会包含有napcat插件、脚本以及QQ程序本体等文件，我们根据目录找到 &lt;code&gt;安装目录/napcat/config&lt;/code&gt; 文件夹下，创建一个名为 &lt;code&gt;onebot11_机器人QQ.json&lt;/code&gt; 的文件，&lt;strong&gt;注意此文件名字中的 &amp;ldquo;机器人QQ&amp;rdquo; 部分要替换成你所登录的QQ号，一串仅由数字构成的字符串&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;向文件中写入以下内容&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;network&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;httpServers&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;httpClients&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;websocketServers&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;websocketClients&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;WsClient&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;enable&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ws://localhost:8080/onebot/v11/ws&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;messagePostFormat&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;array&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;reportSelfMessage&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;reconnectInterval&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;token&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;napcat&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;debug&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;heartInterval&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;musicSignUrl&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;enableLocalFile2Url&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;parseMultMsg&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;按照自己的个性化设定，注意更改其中的token值，以及nonebot对应的正确url，安装完成后在安装目录中执行启动命令&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo bash ./launcher.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Napcat会自行引导QQ启动并弹出登录二维码，使用手机QQ登录对应的账号即可&lt;/p&gt;
&lt;p&gt;至此 Napcat 框架搭建完成&lt;/p&gt;
&lt;p&gt;对于拓展机器人数量，按照上述过程创建不同的onebot11配置文件即可，但不建议在同一台设备上登录过多QQ账户&lt;/p&gt;
&lt;p&gt;另外，Napcat本身自带一个暴露在6099端口的WebUI服务，可以直观的管理napcat的各项配置以及占用状况，本文基于Shell环境，故此部分不展开，只需通过对应公网地址与端口即可访问这个页面&lt;/p&gt;
&lt;h3 id="2部署nonebot"&gt;2.部署Nonebot
&lt;/h3&gt;
 &lt;blockquote&gt;
 &lt;p&gt;NoneBot2 是一个现代、跨平台、可扩展的 Python 聊天机器人框架（下称 NoneBot），它基于 Python 的类型注解和异步优先特性（兼容同步），能够为你的需求实现提供便捷灵活的支持。同时，NoneBot 拥有大量的开发者为其开发插件，用户无需编写任何代码，仅需完成环境配置及插件安装，就可以正常使用 NoneBot。&lt;/p&gt;
&lt;p&gt;需要注意的是，NoneBot 仅支持 &lt;strong&gt;Python 3.9 以上版本&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;基于Ubuntu 24.04版本，系统出厂已包含Python 3.12，故不再需要安装Python，只需安装所需额外支持库，并修改pip安装源来加快国内下载速度(以清华源为例)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt install python3-pip python3-venv
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip config &lt;span class="nb"&gt;set&lt;/span&gt; global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;便于集中管理，在安装目录下新建一个 &lt;code&gt;nonebot&lt;/code&gt; 文件夹，使用Python3-venv库创建一个虚拟环境并激活虚拟环境，此时目录下会多出一个名为nonebot-venv的文件夹，不必打开它，它是我们使用虚拟环境时，pip安装的软件包的存储路径。看到shell命令行的前缀出现了(环境名)即代表成功&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python3 -m venv nonebot-venv
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#Nonebot框架相关操作全程都需在虚拟环境中进行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;source&lt;/span&gt; nonebot-venv/bin/activate
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;(&lt;/span&gt;nonebot-venv&lt;span class="o"&gt;)&lt;/span&gt; root@test-env:/opt/QQ/nonebot &lt;span class="c1"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;此时按照Nonebot官方文档给出的安装命令进行安装即可&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python -m pip install pipx
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python -m pipx ensurepath
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#如果在此步骤的输出中出现了“open a new terminal”或者“re-login”字样，那么请关闭当前终端并重新打开一个新的终端。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pipx install nb-cli
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#创建项目&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nb create
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;过程中会让我们自行选择附带安装的模板，对于QQ以及Napcat来说，按照如下安装选择参考&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;选择一个要使用的模板&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;bootstrap&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;初学者或用户&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;项目名称&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;awesome&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;bot&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;要使用哪些适配器&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="n"&gt;OneBot&lt;/span&gt; &lt;span class="n"&gt;V11&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;OneBot&lt;/span&gt; &lt;span class="n"&gt;V11&lt;/span&gt; &lt;span class="n"&gt;协议&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;要使用哪些驱动器&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="n"&gt;FastAPI&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;FastAPI&lt;/span&gt; &lt;span class="n"&gt;驱动器&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;websockets&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;websockets&lt;/span&gt; &lt;span class="n"&gt;驱动器&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;要使用什么本地存储策略&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="n"&gt;Current&lt;/span&gt; &lt;span class="n"&gt;project&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;suitable&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;multiple&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;portable&lt;/span&gt; &lt;span class="n"&gt;instances&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;立即安装依赖&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Y&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;Y&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;创建虚拟环境&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Y&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;要使用哪些内置插件&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="n"&gt;single_session&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;Which&lt;/span&gt; &lt;span class="n"&gt;official&lt;/span&gt; &lt;span class="n"&gt;plugins&lt;/span&gt; &lt;span class="n"&gt;would&lt;/span&gt; &lt;span class="n"&gt;you&lt;/span&gt; &lt;span class="n"&gt;like&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;use&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="n"&gt;本地数据存储&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;存储插件数据至本地文件&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安装完成后在机器人目录下编辑机器人配置文件 &lt;code&gt;nano .env.prod&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;DRIVER&lt;/span&gt;&lt;span class="o"&gt;=~&lt;/span&gt;&lt;span class="nx"&gt;fastapi&lt;/span&gt;&lt;span class="o"&gt;+~&lt;/span&gt;&lt;span class="nx"&gt;websockets&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;NICKNAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;bot&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;COMMAND_START&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;COMMAND_SEP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34; &amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;LOCALSTORE_USE_CWD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;SUPERUSERS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;ONEBOT_ACCESS_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;napcat&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;SUPERUSERS为超级管理员的QQ号，设置为自己的，最下面的TOKEN要和前文与napcat配置的一致，这是建立通信的关键。在机器人目录下执行 &lt;code&gt;nb run --reload&lt;/code&gt; 一切无误&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;02-01 02:50:14 &lt;span class="o"&gt;[&lt;/span&gt;INFO&lt;span class="o"&gt;]&lt;/span&gt; uvicorn &lt;span class="p"&gt;|&lt;/span&gt; Uvicorn running on http://127.0.0.1:8080 &lt;span class="o"&gt;(&lt;/span&gt;Press CTRL+C to quit&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;至此Nonebot框架安装完成&lt;/p&gt;
&lt;h3 id="3安装个性化插件"&gt;3.安装个性化插件
&lt;/h3&gt;&lt;p&gt;Nonebot框架拥有十分丰富的插件社区 &lt;a class="link" href="https://nonebot.dev/store/plugins" target="_blank" rel="noopener"
 &gt;插件商店 | Nonebot&lt;/a&gt; ，找到自己想要安装的插件并复制安装命令在机器人目录下安装即可，例如&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nb plugin install nonebot-plugin-abcdefg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安装命令会自动启用此插件，使用者仅需前往插件项目页面查询可配置的内容，并在 &lt;code&gt;.env.prod&lt;/code&gt; 文件中添加相关变量&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意：使用以及编辑Nonebot框架与机器人项目的过程中，务必全程在前文提到的虚拟环境中操作&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="版权"&gt;版权
&lt;/h2&gt;&lt;p&gt;本文章隶属于 &lt;a class="link" href="https://blog.wemoez.com" target="_blank" rel="noopener"
 &gt;DDverse&lt;/a&gt; ，遵循 © CC BY-NC-SA 4.0 协议，如需转载请保留来源并在必要的时候告知我&lt;/p&gt;</description></item><item><title>再见2025</title><link>https://blog.wemoez.com/post/hello-2026/</link><pubDate>Fri, 02 Jan 2026 00:15:39 +0800</pubDate><guid>https://blog.wemoez.com/post/hello-2026/</guid><description>&lt;h2 id="时间过得真的好快"&gt;时间过得真的好快
&lt;/h2&gt;&lt;p&gt;有时候盯着日历会有种 CPU 宕机的错觉。&lt;/p&gt;
&lt;p&gt;从 2020 年那个分水岭开始，时间线的采样率似乎被强行调低了。这五年里，生活像是一场没有经过剪辑的 Long Take（长镜头）：感觉什么都没发生，因为日子确实是在&lt;strong&gt;日复一日的早八、永远填不满的睡眠赤字、以及和损友们插科打诨&lt;/strong&gt;中复读；但细看又觉得什么都发生了，脑子里蹦出过无数个“这绝对能火”的幻想 Demo，学业在焦虑中螺旋上升，那些和朋友翻山越岭出去疯的瞬间，成了记忆里唯一的亮色。&lt;/p&gt;
&lt;p&gt;至于具体的成就？别问，问就是“在运行了”。我能记起的不是什么宏大叙事，而是那些细碎的、高饱和度的碎片。虽然现在的记性烂得像只有 8G 内存的旧电脑，很多细节得靠翻相册才能“热启动”，但那种&lt;strong&gt;真实折腾过&lt;/strong&gt;的感觉还在。&lt;/p&gt;
&lt;h2 id="2025年"&gt;2025年
&lt;/h2&gt;&lt;p&gt;2025 这一年，我把自己丢进了不少陌生的坐标系里。&lt;/p&gt;
&lt;p&gt;认识了一票有趣的新人类，在没去过的城市刷了副本。剩下的时间，基本都在&lt;strong&gt;高强度折腾&lt;/strong&gt;和&lt;strong&gt;打游戏&lt;/strong&gt;之间反复横跳。折腾技术架构时的那种成就感，和打赢一场高难度对局后的多巴胺，是我对抗生活平庸的唯二良药。虽然看起来是在“虚度”，但这种随性而活的纯粹，本身就是一种奢侈。&lt;/p&gt;
&lt;h2 id="2026年"&gt;2026年
&lt;/h2&gt;&lt;p&gt;对于 2026，我没打算立什么惊天动地的 Flag。&lt;/p&gt;
&lt;p&gt;大概率还是会维持现在的**“出厂设置”**：继续保持对这个世界的低位观察，接触点没碰过的领域，学点能让自己觉得“卧槽这也有趣”的新玩意。最重要的，是把那份该死的、不随大流的“自我”给坚持住。&lt;/p&gt;
&lt;p&gt;哦对了，今年唯一的硬性 KPI：&lt;strong&gt;每天必须睡个好觉！&lt;/strong&gt; 毕竟只有离线待机充好电，第二天才能继续在这操蛋又精彩的世界里带载运行。&lt;/p&gt;
&lt;h2 id="版权"&gt;版权
&lt;/h2&gt;&lt;p&gt;本文章隶属于 &lt;a class="link" href="https://blog.wemoez.com" target="_blank" rel="noopener"
 &gt;DDverse&lt;/a&gt; ，遵循 © CC BY-NC-SA 4.0 协议，如需转载请保留来源并在必要的时候告知我&lt;/p&gt;</description></item><item><title>【急救手册】苯二氮卓类药物中毒识别与应急处置指南：关键时刻的救命知识</title><link>https://blog.wemoez.com/post/bzdsrescue/</link><pubDate>Thu, 25 Dec 2025 23:55:14 +0800</pubDate><guid>https://blog.wemoez.com/post/bzdsrescue/</guid><description>&lt;img src="https://blog.wemoez.com/" alt="Featured image of post 【急救手册】苯二氮卓类药物中毒识别与应急处置指南：关键时刻的救命知识" /&gt;
 &lt;blockquote&gt;
 &lt;h1 id="声明-必读"&gt;声明 (必读)
&lt;/h1&gt;&lt;p&gt;本文节选自 &lt;strong&gt;&lt;a class="link" href="https://luluv.wiki/zh/BZDFirstAid" target="_blank" rel="noopener"
 &gt;苯二氮卓中毒急救指南 | 让我们手牵手探索生活的光点&lt;/a&gt;&lt;/strong&gt; ，选取其中适合大众群体阅读与理解的部分进行展示与说明&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;有条件的请优先前往阅读源站文章！&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;本节选不构成对原文的完整呈现，亦不应被视为对原作者全部观点、立场或论述的替代，本站不以任何形式歪曲、篡改或断章取义原作者观点&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一切著作权、权利与解释权归 &lt;a class="link" href="https://luluv.wiki/" target="_blank" rel="noopener"
 &gt;原作者&lt;/a&gt; 所有！&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;本文仅用于信息分享与交流之目的，不代表本站或本站作者对原文观点的认同、反对或任何立场表达。&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h1 id="始苯二氮卓类镇静药过量--自杀中毒现场急救指南"&gt;始：苯二氮卓类镇静药过量 / 自杀中毒现场急救指南
&lt;/h1&gt;&lt;p&gt;（旁人优先版：安定、阿普唑仑、劳拉西泮、氯硝西泮等）&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;⚠️ &lt;strong&gt;最重要的一句先说在最前面：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;只要怀疑有人因为吞了大量苯二氮卓类镇静药（下文简称“BZD”）而昏睡、叫不醒、呼吸变慢，
&lt;strong&gt;第一步永远是：立刻拨打 120（或当地急救电话）。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;请以急救调度员和医生的指示为最高优先级。
本页面只是帮你把他们可能会说的话讲得更清楚、更有条理，
&lt;strong&gt;不能代替专业诊断和治疗。&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="0-使用说明--适用范围"&gt;0. 使用说明 &amp;amp; 适用范围
&lt;/h2&gt;&lt;p&gt;面向两类人：
1）旁人 / 朋友 / 家属：刚发现有人吞了大量 BZD 或怀疑 BZD 过量；
2）本人：你自己刚吞了大把镇静药，还能打开手机看字。&lt;/p&gt;
&lt;p&gt;范围包括常见的：阿普唑仑（Xanax）、劳拉西泮、艾司唑仑、地西泮、氯硝西泮、氯硝安定、三唑仑、溴西泮、右佐匹克隆 / 唑吡坦等 &lt;strong&gt;“安眠药 / 抗焦虑药 / 镇静药”&lt;/strong&gt;。
（不区分“传统 BZD”和“Z-drug”，对你来说处理原则一样。）&lt;/p&gt;
&lt;p&gt;本页面&lt;strong&gt;只谈中毒后的急救与求生&lt;/strong&gt;，不会提供任何关于：&lt;/p&gt;
&lt;p&gt;购买渠道&lt;/p&gt;
&lt;p&gt;具体剂量&lt;/p&gt;
&lt;p&gt;配方和“成功率”&lt;/p&gt;
&lt;p&gt;任何时候，只要你觉得情况危急，&lt;strong&gt;别在 wiki 上纠结细节，直接听 120 调度和医生的。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一旁人视角现在立刻可以做的事按时间顺序"&gt;一、旁人视角：现在立刻可以做的事（按时间顺序）
&lt;/h2&gt;&lt;h3 id="1-立刻拨打-120--急救电话"&gt;1. 立刻拨打 120 / 急救电话
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;不要纠结“吃的到底是不是致命剂量”。&lt;/strong&gt;
BZD 单药过量死亡率相对不算高，但&lt;strong&gt;严重昏迷、呼吸变慢、误吸呕吐物&lt;/strong&gt;都足以要命，尤其是：&lt;/p&gt;
&lt;p&gt;合并喝酒、阿片类止痛药、其他安眠药；&lt;/p&gt;
&lt;p&gt;本人有心肺基础病、肥胖、睡眠呼吸暂停、年纪大等。&lt;/p&gt;
&lt;p&gt;可参考这个话术（照念就行）：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;“这里是（地址/大概位置）。
有一名&lt;strong&gt;疑似大量吞服苯二氮卓类镇静药（安眠药 / 抗焦虑药）的病人，&lt;/strong&gt;
&lt;strong&gt;现在表现为：非常嗜睡 / 叫不醒 / 说话含糊 / 走路不稳 / 呼吸变慢。&lt;/strong&gt;
&lt;strong&gt;可能还一起吃了（如：酒、止痛药、抗抑郁药等，如不确定就说“不清楚可能有其他药”）。&lt;/strong&gt;
&lt;strong&gt;请尽快派车。&lt;/strong&gt;
&lt;strong&gt;若可能合并阿片类止痛药，请提醒急诊准备好气道管理设备、必要时纳洛酮等抢救措施&lt;/strong&gt;。”&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;（后半句讲“阿片类 / 纳洛酮”的那部分，如果你不确定 TA 有没有吃阿片类止痛药，可以不说；重点是让急诊知道这可能是&lt;strong&gt;多药混合镇静&lt;/strong&gt;。）&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;通话建议：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;开免提 / 耳机，一边听调度员指导，一边动手；&lt;/p&gt;
&lt;p&gt;不要隐瞒“这是自杀”的事实，这会影响急诊优先级和医生的判断。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="2-快速判断意识和呼吸摆好体位"&gt;2. 快速判断意识和呼吸，摆好体位
&lt;/h3&gt;
 &lt;blockquote&gt;
 &lt;p&gt;简化为三档：还能交谈 / 模糊但有反应 / 完全叫不醒。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h4 id="21-还能说话有反应--清醒但危险"&gt;2.1 还能说话、有反应 → “清醒但危险”
&lt;/h4&gt;&lt;p&gt;BZD 过量的典型就是：&lt;strong&gt;说话含糊、走路晃、瞌睡&lt;/strong&gt;。这时候：&lt;/p&gt;
&lt;p&gt;让 TA 坐在&lt;strong&gt;安全地点&lt;/strong&gt;（床上、地上靠墙），不要让 TA 自己走动、上厕所、洗澡，防止跌倒撞伤。&lt;/p&gt;
&lt;p&gt;松开衣领和腰带，保持室内空气流通。&lt;/p&gt;
&lt;p&gt;盯着 TA 的呼吸和意识，&lt;strong&gt;如果变得越来越难叫醒、呼吸变慢或不规则，要立即再次告知 120 调度&lt;/strong&gt;。&lt;/p&gt;
&lt;h4 id="22-说话含糊反应迟钝--反复呕吐--意识模糊"&gt;2.2 说话含糊、反应迟钝 / 反复呕吐 → “意识模糊”
&lt;/h4&gt;&lt;p&gt;立刻把 TA 摆成&lt;strong&gt;侧卧位&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;头偏向一侧，下巴略抬起，保持气道通畅；&lt;/p&gt;
&lt;p&gt;这样可以防止呕吐物堵住气道。&lt;/p&gt;
&lt;p&gt;用纸巾 / 毛巾轻轻清理口鼻周围的呕吐物和口水。&lt;/p&gt;
&lt;p&gt;持续观察胸廓起伏、听有没有异常的鼾声（很粗、像被卡住一样）。&lt;/p&gt;
&lt;h4 id="23-完全叫不醒--怀疑没正常呼吸--极危重"&gt;2.3 完全叫不醒 + 怀疑没正常呼吸 → “极危重”
&lt;/h4&gt;&lt;p&gt;用较大声音叫名，轻拍肩膀，如果&lt;strong&gt;毫无反应&lt;/strong&gt;，同时感觉不到胸部起伏、或呼吸非常浅且极慢：&lt;/p&gt;
&lt;p&gt;立即对 120 说清楚“&lt;strong&gt;叫不醒，怀疑没有正常呼吸&lt;/strong&gt;”；&lt;/p&gt;
&lt;p&gt;如你受过 CPR 培训，马上按流程开始心肺复苏；&lt;/p&gt;
&lt;p&gt;没受过培训，也可以在调度员电话指导下进行&lt;strong&gt;胸外按压&lt;/strong&gt;。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;在这一步，你做得不完美也比不做强。让心肺“勉强工作”一下，比彻底停摆要好得多。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="3-防止情况恶化--明确不要做的事"&gt;3. 防止情况恶化 &amp;amp; 明确“不要做”的事
&lt;/h3&gt;&lt;h4 id="31-不要再给任何额外的药--酒--咖啡"&gt;3.1 不要再给任何额外的&lt;strong&gt;药 / 酒 / 咖啡&lt;/strong&gt;
&lt;/h4&gt;&lt;p&gt;❌ &lt;strong&gt;不要再给更多 BZD / 安眠药&lt;/strong&gt;：“再吃一点就睡过去了”是错误逻辑，只会增加风险。&lt;/p&gt;
&lt;p&gt;❌ &lt;strong&gt;不要给酒 / 其他镇静药 / 大量止痛药&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;酒、阿片类止痛药、其他安眠药（唑吡坦、右佐匹克隆等）都会&lt;strong&gt;叠加呼吸抑制&lt;/strong&gt;，这是导致死亡的关键因素。&lt;/p&gt;
&lt;p&gt;❌ &lt;strong&gt;不要硬灌咖啡、浓茶、能量饮料&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;咖啡因不能“中和” BZD，只会增加心率、加重呕吐和误吸风险。&lt;/p&gt;
&lt;h4 id="32-不要让-ta-独自洗澡--上厕所--在阳台等高危位置活动"&gt;3.2 不要让 TA 独自洗澡 / 上厕所 / 在阳台等高危位置活动
&lt;/h4&gt;&lt;p&gt;BZD 过量会让人极度嗜睡、站立不稳、意识混乱，很容易跌倒、溺水、从高处坠落。&lt;/p&gt;
&lt;p&gt;将 TA 移到安全位置，远离楼梯、窗台、浴室水池等。&lt;/p&gt;
&lt;h4 id="33-不建议自行催吐或灌大量水"&gt;3.3 不建议自行催吐或灌大量水
&lt;/h4&gt;&lt;p&gt;BZD 本身不腐蚀消化道，但&lt;strong&gt;昏昏欲睡的人被强行催吐，很容易把呕吐物吸进肺里&lt;/strong&gt;，导致吸入性肺炎，比药本身还危险。&lt;/p&gt;
&lt;p&gt;灌大量水也会加重呕吐和误吸，不推荐。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="4-帮医生准备的重要信息翻药盒数药板"&gt;&lt;strong&gt;4. 帮医生准备的重要信息：翻药盒、数药板&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;在不影响急救的前提下，尽量做这些：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;收集所有可能相关的药物：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;病人身边、垃圾桶里、桌上，凡是空药板、半空药瓶、撕开的包装，都留着；&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不只看“镇静药”，连止痛药、抗抑郁药、抗精神病药、抗癫痫药、糖尿病 / 心脏药，统统打包。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;尽量搞清楚这些点（大约就行）：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;平时固定吃哪些药？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这次可能多吃了哪一瓶 / 哪几瓶？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;大概是什么时间吞的？是“刚刚”、一小时内，还是更久？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;拍照或直接带着这些药去医院：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;在急诊，交给分诊 / 接诊医生时可以说：&lt;/strong&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;“这些是 TA 平时吃和这次可能过量吃的药，我都带来了。”&lt;/p&gt;

 &lt;/blockquote&gt;

 &lt;blockquote&gt;
 &lt;p&gt;这些信息非常关键：&lt;/p&gt;
&lt;p&gt;对医生判断是否存在&lt;strong&gt;多药过量 / 止痛药 / 抗癫痫药 / 抗抑郁药&lt;/strong&gt;等混合中毒有极大帮助；&lt;/p&gt;
&lt;p&gt;也会直接影响他们是否敢用、怎么用解毒药（比如&lt;strong&gt;氟马西尼 flumazenil&lt;/strong&gt; 对 BZD 的“解药”），因为在多药或长期用药的人身上乱用是会引发抽搐的。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="二本人视角如果你就是那个吞了大把镇静药的人"&gt;二、本人视角：如果你就是那个吞了大把镇静药的人
&lt;/h2&gt;&lt;p&gt;如果你现在一边打瞌睡一边刷手机，就当我在抓你的肩膀说话。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;能拿着手机，说明你离“完全没机会”还有距离。&lt;/strong&gt;
纯 BZD 过量在有条件的医院里，死亡率其实不高，大部分人通过支持治疗可以醒过来。真正要命的是&lt;strong&gt;多药混吃 + 不送医&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;你不需要再用“多吃几颗”来证明你有多绝望。
你能把这些药一把一把吞下去，已经足够说明你的状态有多糟糕了。
&lt;strong&gt;现在最极端、最“硬核”的选择，是：给自己打 120。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你可以照着念给 120 听：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;“我刚刚出于自杀想法，服用了大量安眠药 / 抗焦虑药，是苯二氮卓类的（如果知道名字就说出具体名）。
现在出现非常困倦、头晕、走不稳。
我现在后悔了，想活下去。
地址在（准确地址或能被找到的位置），请尽快派车。
我平时还在吃（简单说：抗抑郁药 / 抗精神病药 / HRT 等），到时候我会把药一起带去。”&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;同时，把你长期在用的&lt;strong&gt;激素药物、抗抑郁药、抗精神病药&lt;/strong&gt;交给医生看。这不是多此一举，而是直接关系到：&lt;/p&gt;
&lt;p&gt;他们敢不敢、怎么敢用解毒药（比如氟马西尼）；&lt;/p&gt;
&lt;p&gt;怎样监测你有没有心律失常、抽搐、血压问题等。&lt;/p&gt;
&lt;p&gt;你已经做了一件足够激烈的事——吞了这些药。
如果你现在再做一件同样激烈的事——&lt;strong&gt;承认自己撑不住了，要求专业帮忙&lt;/strong&gt;，那你未来某一天就有资格回头说：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;“我当年差点没了，后来咬牙把自己送去急诊，&lt;/strong&gt;
&lt;strong&gt;虽然烂活着，但至少还有机会继续重开几次。”&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="三苯二氮卓类过量--中毒它到底会怎样"&gt;三、苯二氮卓类过量 / 中毒：它到底会怎样？
&lt;/h2&gt;
 &lt;blockquote&gt;
 &lt;p&gt;这一段是科普向的，更多是为了帮你对抗“不确定”带来的恐惧。
如果你现在正处在急性现场，前两节就够用了。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="1-机制为什么会睡死过去"&gt;1. 机制：为什么会“睡死过去”
&lt;/h3&gt;&lt;p&gt;BZD 通过增强 GABA-A 受体的抑制作用，让中枢神经系统整体“降噪”，于是：&lt;/p&gt;
&lt;p&gt;焦虑减轻、肌肉放松、容易入睡；&lt;/p&gt;
&lt;p&gt;剂量够大时，会导致&lt;strong&gt;深度嗜睡、昏迷、呼吸中枢抑制&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;单纯 BZD 过量时，典型表现是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;意识下降&lt;/strong&gt;：从嗜睡到昏迷；&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;说话含糊、走路不稳（共济失调）&lt;/strong&gt;；&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;血压、心率往往还算稳定&lt;/strong&gt;，严重心律问题相对少见。&lt;/p&gt;
&lt;p&gt;真正致命的是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;呼吸太慢 / 太浅&lt;/strong&gt; → 缺氧；&lt;/p&gt;
&lt;p&gt;呕吐时没保护反射 → &lt;strong&gt;误吸&lt;/strong&gt; → 窒息 / 重度肺炎；&lt;/p&gt;
&lt;p&gt;合并其他中枢抑制药（酒、阿片类等） → 呼吸抑制叠加。&lt;/p&gt;
&lt;h3 id="2-典型症状和危险信号"&gt;2. 典型症状和危险信号
&lt;/h3&gt;&lt;p&gt;常见表现（不是每个人都有全部）：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;嗜睡、迷糊、反应迟钝；&lt;/p&gt;
&lt;p&gt;说话含糊、眼神涣散、走路摇晃；&lt;/p&gt;
&lt;p&gt;肌张力降低，整个人“软趴趴”；&lt;/p&gt;
&lt;p&gt;记忆受损（事后想不起来发生过什么）&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;需要高度警惕的信号：&lt;/strong&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;叫不醒 / 只能有一点点呻吟反应；&lt;/p&gt;
&lt;p&gt;呼吸频率明显变慢，或者间断性呼吸、打鼾声异常粗重；&lt;/p&gt;
&lt;p&gt;嘴唇 / 指甲发紫；&lt;/p&gt;
&lt;p&gt;合并明显呕吐、抽搐。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;一旦出现这些，&lt;strong&gt;直接按危重病人处理&lt;/strong&gt;，不要继续在家观察。&lt;/p&gt;
&lt;h3 id="3-医院大概会做什么简略版"&gt;3. 医院大概会做什么？（简略版）
&lt;/h3&gt;&lt;p&gt;最终以当地医院实际操作为准，这里只是给一个心理预期：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;监测和初步评估&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;生命体征：血压、心率、呼吸频率、血氧饱和度；&lt;/p&gt;
&lt;p&gt;意识评分（GCS 等）；&lt;/p&gt;
&lt;p&gt;必要时做心电图、血气分析，以排除其他合并中毒或基础疾病。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;支持治疗是核心&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;给予氧气，严重时气管插管 + 呼吸机；&lt;/p&gt;
&lt;p&gt;建立静脉通路，输液维持循环；&lt;/p&gt;
&lt;p&gt;防止压疮、误吸、低体温等并发症。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;是否会用“解毒药”氟马西尼（flumazenil）？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这里需要讲清楚：&lt;/p&gt;
&lt;p&gt;氟马西尼是一个&lt;strong&gt;BZD 受体拮抗剂&lt;/strong&gt;，理论上可以迅速逆转 BZD 造成的意识抑制。&lt;/p&gt;
&lt;p&gt;但多部指南和文献都强调：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;在自杀 / 故意过量、或不确定是否是单纯 BZD 过量的情况下，一般不推荐用氟马西尼。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;原因是它可能在以下情况引发&lt;strong&gt;惊厥（抽搐）和心律问题&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;同时过量服用易致痉挛 / 心律失常的药物（如三环类抗抑郁药等）；&lt;/p&gt;
&lt;p&gt;本人长期大量使用 BZD，有物质依赖，突然拮抗会诱发戒断性癫痫；&lt;/p&gt;
&lt;p&gt;不明原因昏迷，BZD 只是众多成分之一。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;换句话说：
&lt;strong&gt;氟马西尼在现实世界里是“毒理科选手的手术刀”，不是“家属要求打个解药就万事大吉”的灵丹妙药。&lt;/strong&gt;
医生用不用、怎么用，是个非常专业的风险权衡问题。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;时间线与预后&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;许多单纯 BZD 过量的病人，在监护 + 支持治疗下，&lt;strong&gt;几小时到 24 小时内会逐渐清醒&lt;/strong&gt;，具体取决于药物半衰期（比如地西泮和氯硝西泮就比较长）。&lt;/p&gt;
&lt;p&gt;若有多药合用、基础病严重或就医延迟，则可能需要更长时间监护，有时会转入 ICU。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="四联用与特殊情景bzd--其他药物时要特别小心什么"&gt;四、联用与特殊情景：BZD + 其他药物时要特别小心什么？
&lt;/h2&gt;&lt;p&gt;这一节是简版“联用区”，后面你可以在《多药联用过量急救指南》里展开成完整版。&lt;/p&gt;
&lt;h3 id="1-bzd--酒精--阿片类止痛药最危险组合之一"&gt;1. BZD + 酒精 / 阿片类止痛药：&lt;strong&gt;最危险组合之一&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;BZD、酒精、阿片类（吗啡、羟考酮、曲马多、可待因等）都会抑制中枢、减慢呼吸，&lt;strong&gt;叠加效果往往不是 1+1，而是直接堆到危险区&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这一组合是现实世界里&lt;strong&gt;过量死亡最常见的场景之一&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;对旁人来说：&lt;/p&gt;
&lt;p&gt;只要发现 BZD + 明显酒味，或者身边有阿片类止痛药空板/粉末，&lt;strong&gt;全部按最高级别危险处理&lt;/strong&gt;；&lt;/p&gt;
&lt;p&gt;在 120 时说明“&lt;strong&gt;有可能合并阿片类止痛药和酒精&lt;/strong&gt;”，方便急救人员考虑&lt;strong&gt;纳洛酮&lt;/strong&gt;等措施。&lt;/p&gt;
&lt;h3 id="2-bzd--抗抑郁药包括-ssri--snri有没有特殊解法"&gt;2. BZD + 抗抑郁药（包括 SSRI / SNRI）：有没有“特殊解法”？
&lt;/h3&gt;&lt;p&gt;现实里的情况：&lt;/p&gt;
&lt;p&gt;SSRI/SNRI 单药过量，多数预后良好，但部分（如西酞普兰 / 右美沙芬联用、文拉法辛、大量三环类）可能引发&lt;strong&gt;心律失常、惊厥或血清素综合征&lt;/strong&gt;；&lt;/p&gt;
&lt;p&gt;BZD 在毒理学上反而经常被用来&lt;strong&gt;控制血清素综合征和抗抑郁药过量导致的激越 / 抽搐&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这带来一个很重要的结论：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;在 BZD + 抗抑郁药混合过量时，&lt;/strong&gt;
&lt;strong&gt;医生往往会更慎重使用氟马西尼，甚至倾向不用，&lt;/strong&gt;
&lt;strong&gt;因为 BZD 可能正在“压住”潜在的抽搐或血清素综合征。&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;也就是说：&lt;/p&gt;
&lt;p&gt;没有“BZD+SSRI 的特效解法”；&lt;/p&gt;
&lt;p&gt;真正的“特殊处理”是：&lt;strong&gt;不轻易逆转 BZD 作用，以免反而诱发惊厥等更危险的情况&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;对你这边的“救人宗旨”来说，能做的是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;帮医生搞清楚有哪些抗抑郁药、大概多少、什么时候吞的&lt;/strong&gt;；&lt;/p&gt;
&lt;p&gt;在急诊第一时间就把所有药盒递给医生，让他们尽早做心电图、开监护、预判有无血清素综合征 / 心律失常的风险。&lt;/p&gt;
&lt;h3 id="3-bzd--普瑞巴林--加巴喷丁--右美沙芬等辅助镇静止痛止咳药"&gt;3. BZD + 普瑞巴林 / 加巴喷丁 / 右美沙芬等“辅助镇静/止痛/止咳药”
&lt;/h3&gt;&lt;p&gt;普瑞巴林、加巴喷丁本身也具有中枢抑制作用，联用 BZD 会显著增加&lt;strong&gt;嗜睡、共济失调和呼吸抑制&lt;/strong&gt;的风险；&lt;/p&gt;
&lt;p&gt;右美沙芬在高剂量时不仅镇咳，还会产生解离样、兴奋或抑制作用，大剂量联用其他药物时，毒性表现会很混乱。&lt;/p&gt;
&lt;p&gt;这里同样没有所谓“民间解法”，医学上的做法是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;当作“多药中枢抑制 + 可能合并血清素或其他综合征”的复杂中毒处理；&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;重点仍然是&lt;strong&gt;气道 / 呼吸 / 循环支持&lt;/strong&gt;，以及对症处理（镇静、防惊厥、退热、纠正酸中毒等）。&lt;/p&gt;
&lt;p&gt;你这边可以做的，还是那句话：&lt;strong&gt;把所有药盒、包装全部带去。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="五对-tgn--长期用药人群-和同伴的一点固定提醒"&gt;五、对 TGN / 长期用药人群 和同伴的一点固定提醒
&lt;/h2&gt;&lt;p&gt;这段你可以在整个“吞药急救系列”里复用。&lt;/p&gt;
&lt;p&gt;如果 TA 是 TGN / MRT / 正在进行 HRT，同时长期服用抗抑郁药、抗精神病药、情绪稳定剂：&lt;/p&gt;
&lt;p&gt;尽可能把所有激素药、精神科药物&lt;strong&gt;一起装袋带去医院&lt;/strong&gt;；&lt;/p&gt;
&lt;p&gt;在急诊说清楚：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;“TA 是 TGN，长期在用这些药，这次是怀疑 BZD 为主的多药过量。”&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;对医生来说，这能：&lt;/p&gt;
&lt;p&gt;帮助判断是否存在药物相互作用（比如抗抑郁药 + BZD + 可能的解毒药）；&lt;/p&gt;
&lt;p&gt;减少他们在病人昏迷时一遍遍追问，降低对 TA 的二次伤害感。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="六写给正在考虑吃安眠药一睡了之的你"&gt;六、写给正在考虑“吃安眠药一睡了之”的你
&lt;/h2&gt;&lt;p&gt;最后这一段，是写给那些本来就是来搜“安眠药自杀”的人。&lt;/p&gt;
&lt;h3 id="1-现实一点bzd-过量比你想象得更脏"&gt;1. 现实一点：BZD 过量，比你想象得更“脏”
&lt;/h3&gt;&lt;p&gt;单纯 BZD 过量更多时候是&lt;strong&gt;又长又脏的昏迷 + 呕吐 + 尿失禁 / 粪失禁 + 醒来后啥都不记得&lt;/strong&gt;；&lt;/p&gt;
&lt;p&gt;真正“平静走掉”的特别少，大多数要么被人发现拖进急诊，要么在厕所 / 床边摔得一身伤。&lt;/p&gt;
&lt;h3 id="2-现实一点失败结局一点也不体面"&gt;2. 现实一点：失败结局一点也不体面
&lt;/h3&gt;&lt;p&gt;被人发现拖去医院，插针、插管、导尿、监护，醒来后面对一堆医生家属、甚至警察/社工；&lt;/p&gt;
&lt;p&gt;有些人因为吸入性肺炎、低氧、跌倒出血，之后要反复住院、长期咳嗽、活动耐量下降；&lt;/p&gt;
&lt;p&gt;有些人醒来后，因为药物相互作用、戒断、病情恶化，反而要吃更多药、做更长时间的治疗。&lt;/p&gt;
&lt;p&gt;你本来想“干净地消失”，现实却很可能是：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;“把自己弄得一团糟，还不得不继续活着收拾烂摊子。”&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="3-换个角度既然你都狠到能吞这么多药了"&gt;3. 换个角度：既然你都狠到能吞这么多药了
&lt;/h3&gt;&lt;p&gt;你吞这些药的时候，其实是在说：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;“我已经被逼到极限了，我不想再这样活下去。”&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;这个心情是非常真实的，我完全相信。
但既然你已经狠到做这种事了，
那其实你还有一种同样狠的选项：&lt;/p&gt;
&lt;p&gt;狠一点，&lt;strong&gt;承认自己需要专业帮助&lt;/strong&gt;；&lt;/p&gt;
&lt;p&gt;狠一点，把你那些压着不说的东西搬到医生 / 咨询师 / 信得过的人面前；&lt;/p&gt;
&lt;p&gt;狠一点，停下“一个人扛到崩溃”的那套。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;你他妈都有勇气吞一把安眠药了，&lt;/strong&gt;
&lt;strong&gt;还没勇气试试再给这破生活一次机会？&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;我不能保证未来一定会变好，&lt;/strong&gt;
&lt;strong&gt;但如果你现在选择打 120、去医院、接受治疗，&lt;/strong&gt;
&lt;strong&gt;那几年后你至少有资格跟别人讲一个句号不是那天的故事，而是：&lt;/strong&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;“我当年差点死在一堆药瓶旁边，后来想想不甘心，就决定烂活着看看，结果居然活到了今天。”&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h1 id="终"&gt;终
&lt;/h1&gt;&lt;h2 id="我的看法"&gt;我的看法
&lt;/h2&gt;&lt;p&gt;我自己也是一个 苯二氮卓药物 的使用者，主要是应对自己的焦虑状态和失眠吧。感觉服用后睡眠质量真的指数级增长 &lt;strong&gt;(科学安全用药)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在网上刷到 璐璐 的这篇文章真的刷新了认知，原来这些精神药物有着如此复杂的关联性&lt;/p&gt;
&lt;p&gt;相比起其他精神药物，个人感觉日常生活中普通人最容易接触到的安眠药物或许就是 苯二氮卓药物 了，当然这只是我自己的经历，许多医院对于相关轻症状一类的可能会开此类药物&lt;/p&gt;
&lt;p&gt;我自己所处的环境真的感觉压力越来越大，唉~前途渺茫，这些药物以后可能都要成为必需品了&lt;/p&gt;
&lt;p&gt;如果你们身边有服用此类药物的 TA，请务必多留意和关心一下吧，不知道TA是不是承受了很大压力呢 ( ´•̥̥̥ω•̥̥̥` )，在紧急时刻，希望这篇指南能够帮上你的忙&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;真的不要滥用药物！即使你的生活真的很糟糕，别怕，那就像指南里说的，与其痛苦，不如烂活着看看！&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="版权与转载声明"&gt;版权与转载声明
&lt;/h2&gt;&lt;p&gt;本文章仅寄存于站点 &lt;a class="link" href="https://blog.atri.pw" target="_blank" rel="noopener"
 &gt;DDverse&lt;/a&gt; ，文章页面内容著作权、解释权归站点 &lt;strong&gt;&lt;a class="link" href="https://luluv.wiki/zh/home" target="_blank" rel="noopener"
 &gt;主页 | 让我们手牵手探索生活的光点&lt;/a&gt;&lt;/strong&gt; 及其 &lt;strong&gt;原作者&lt;/strong&gt; 所有，&lt;strong&gt;请勿引用本站转载文章！请前往源站点查看！&lt;/strong&gt; 如有任何错误和不当之处，请立即联系我调整或删除！&lt;/p&gt;</description></item><item><title>Hugo Stack 主题进阶配置：避开那些年我踩过的坑，深度定制你的个人博客</title><link>https://blog.wemoez.com/post/hugo-stack-theme-more/</link><pubDate>Sat, 22 Mar 2025 14:41:05 +0800</pubDate><guid>https://blog.wemoez.com/post/hugo-stack-theme-more/</guid><description>&lt;img src="https://blog.wemoez.com/" alt="Featured image of post Hugo Stack 主题进阶配置：避开那些年我踩过的坑，深度定制你的个人博客" /&gt;&lt;h2 id="前言"&gt;前言
&lt;/h2&gt;&lt;p&gt;本文介绍关于本站在使用Stack博客过程中一些配置和遇到的坑&lt;/p&gt;
&lt;p&gt;完整的主题配置说明请详见 &lt;a class="link" href="https://stack.jimmycai.com/" target="_blank" rel="noopener"
 &gt;Stack | Card-style Hugo theme designed for bloggers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;前排提醒：截至发文，本站使用原版Stack v3.33.0主题，所有配置项仅针对该主题有效，其他版本请注意适当修改&lt;/p&gt;
&lt;p&gt;请注意在进行任何改动前备份好稳定版本&lt;/p&gt;
&lt;h2 id="修改新文章的默认模板"&gt;修改新文章的默认模板
&lt;/h2&gt;&lt;p&gt;文件目录 &lt;code&gt;archetypes\default.md&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;为了方便我们写文章，可以模板将顶部变量替换成以下内容，按照所需修改相应变量即可，其中 &lt;code&gt;related&lt;/code&gt; 变量是在你应用了前文的修改后才需要的，如果未使用请移除这个变量&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;title: &amp;#34;{{ replace .Name &amp;#34;-&amp;#34; &amp;#34; &amp;#34; | title }}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;description: 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;date: {{ .Date }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lastmod: {{ .Date }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;image: 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;math: 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;license: true
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;readingTime: true
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;related: true
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hidden: false
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;draft: false
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;categories: [&amp;#34;&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tags: [&amp;#34;&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="创建友链页面"&gt;创建友链页面
&lt;/h2&gt;&lt;p&gt;这部分很简单，创建一个普通的自定义页面即可，关于如何添加友链请前往 &lt;a class="link" href="https://demo.stack.jimmycai.com/links/" target="_blank" rel="noopener"
 &gt;Stack Demo&lt;/a&gt; 查看示例，可以附带一些其他的设置来简化页面，比如按照如下示例修改页面变量，可以移除文章的阅读时长，结尾的版权信息等&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;readingTime: false
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;license: false
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hidden: true
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;draft: false
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="为你的stack主题站点添加隐私政策"&gt;为你的Stack主题站点添加隐私政策
&lt;/h2&gt;&lt;p&gt;效果如本站页脚处的隐私政策入口，隐私政策的内容就是一个普通的自定义页面，这里具体介绍一下如何添加&lt;/p&gt;
&lt;h3 id="1修改i8n翻译配置文件"&gt;1.修改i8n翻译配置文件
&lt;/h3&gt;&lt;p&gt;在 &lt;code&gt;i18n&lt;/code&gt; 目录下编辑你的站点所设置的语言配置文件，在其 &lt;code&gt;footer&lt;/code&gt; 部分仿照上面的格式添加一个 &lt;code&gt;privacypolicy&lt;/code&gt; ，这里以 &lt;code&gt;zh-cn.yaml&lt;/code&gt; 举例&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;footer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;privacyPolicy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;other&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;访问本站即代表您同意本站的 {{ .PrivacyPolicy }}&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; 	&lt;/span&gt;&lt;span class="nt"&gt;other&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;隐私政策&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="2修改页脚html文件"&gt;2.修改页脚html文件
&lt;/h3&gt;&lt;p&gt;文件目录 &lt;code&gt;layouts\partials\footer\footer.html&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;在其 16 ~ 24行之间修改成如下示例代码&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{- $Generator := `&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://gohugo.io/&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;_blank&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;noopener&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Hugo&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;` -}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{- $Theme := printf `&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;b&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://github.com/CaiJimmy/hugo-theme-stack&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;_blank&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;noopener&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;data-version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%s&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Stack&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;b&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;` $ThemeVersion -}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{- $DesignedBy := `&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://jimmycai.com&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;_blank&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;noopener&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Jimmy&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;` -}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{- $pp := T &amp;#34;footer.pp&amp;#34; }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{- $PrivacyPolicy := printf `&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;privacypolicy&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;noopener&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;b&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;%s&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;b&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;` $pp -}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ T &amp;#34;footer.builtWith&amp;#34; (dict &amp;#34;Generator&amp;#34; $Generator) | safeHTML }} &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;br&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ T &amp;#34;footer.designedBy&amp;#34; (dict &amp;#34;Theme&amp;#34; $Theme &amp;#34;DesignedBy&amp;#34; $DesignedBy) | safeHTML }} &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;br&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ T &amp;#34;footer.privacyPolicy&amp;#34; (dict &amp;#34;PrivacyPolicy&amp;#34; $PrivacyPolicy) | safeHTML }}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;具体的顺序可以按照自己的需求来，注意第 4 行中 &lt;code&gt;herf&lt;/code&gt; 标签里的链接更改为自己的隐私政策页面，不建议删除作者&amp;amp;项目信息&lt;/p&gt;
&lt;h2 id="接入-google-analytics-统计代码"&gt;接入 Google Analytics 统计代码
&lt;/h2&gt;&lt;p&gt;编辑文件 &lt;code&gt;layouts\partials\head\script.html&lt;/code&gt; ，初次编辑应该是一个空文件（？），写入你从 &lt;strong&gt;Google Analytics&lt;/strong&gt; 获取到的代码即可&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!--&lt;/span&gt; &lt;span class="nx"&gt;Google&lt;/span&gt; &lt;span class="nx"&gt;tag&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gtag&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;js&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt; &lt;span class="kr"&gt;async&lt;/span&gt; &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;https://www.googletagmanager.com/gtag/js?id=G-114514&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;/script&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dataLayer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dataLayer&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;gtag&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;&lt;span class="nx"&gt;dataLayer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arguments&lt;/span&gt;&lt;span class="p"&gt;);}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;gtag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;js&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;gtag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;config&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;G-114514&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;/script&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="结语"&gt;结语
&lt;/h2&gt;&lt;p&gt;以上是目前本站所用到的一些DIY的设置，希望能对你有些许帮助，以后的变更内容都会在新的文章中更新&lt;/p&gt;
&lt;h2 id="版权"&gt;版权
&lt;/h2&gt;&lt;p&gt;本文章隶属于 &lt;a class="link" href="https://blog.wemoez.com" target="_blank" rel="noopener"
 &gt;DDverse&lt;/a&gt; ，遵循 © CC BY-NC-SA 4.0 协议，如需转载请保留来源并在必要的时候告知我&lt;/p&gt;</description></item><item><title>Hugo Stack 主题搭建指南：从环境配置到静态博客上线全流程</title><link>https://blog.wemoez.com/post/build-hugo-with-stack/</link><pubDate>Thu, 20 Feb 2025 23:30:55 +0800</pubDate><guid>https://blog.wemoez.com/post/build-hugo-with-stack/</guid><description>&lt;img src="https://blog.wemoez.com/" alt="Featured image of post Hugo Stack 主题搭建指南：从环境配置到静态博客上线全流程" /&gt;&lt;h2 id="前言"&gt;前言
&lt;/h2&gt;&lt;p&gt;参考站点&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://github.com/CaiJimmy/hugo-theme-stack" target="_blank" rel="noopener"
 &gt;GitHub - CaiJimmy/hugo-theme-stack: Card-style Hugo theme designed for bloggers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://stack.jimmycai.com/" target="_blank" rel="noopener"
 &gt;Stack | Card-style Hugo theme designed for bloggers&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="起步"&gt;起步
&lt;/h2&gt;&lt;h3 id="1环境准备"&gt;1.环境准备
&lt;/h3&gt;&lt;p&gt;分为本地开发环境和服务器工作环境两个部分&lt;/p&gt;
&lt;h3 id="本地开发环境windows平台"&gt;&lt;strong&gt;本地开发环境(Windows平台)&lt;/strong&gt;
&lt;/h3&gt;&lt;h3 id="1安装hugo-framework"&gt;1.安装Hugo Framework
&lt;/h3&gt;&lt;p&gt;前往 &lt;strong&gt;&lt;a class="link" href="https://github.com/gohugoio/hugo/releases/" target="_blank" rel="noopener"
 &gt;Hugo Github Releases&lt;/a&gt;&lt;/strong&gt; 页面下载最新版本的Hugo extended版本&lt;/p&gt;
&lt;p&gt;​	hugo_extended_{version id}_windows-amd64.zip&lt;/p&gt;
&lt;p&gt;下载完后将其内部的 hugo.exe 程序解压至 &amp;lt;你自己的开发目录&amp;gt; 文件夹中，可以直接在目录中打开终端使用或添加环境变量&lt;/p&gt;
&lt;h3 id="2安装powershell-7--命令行环境"&gt;2.安装PowerShell 7 —— 命令行环境
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;(注意：这不是Windows默认安装的Windows PowerShell，而是PowerShell 7，后者是更新的版本)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;右键任务栏 Windows 徽标，打开终端(管理员)，并键入以下指令来安装PowerShell 7&lt;/p&gt;
&lt;p&gt;&lt;code&gt;winget install --id Microsoft.PowerShell --source winget&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;等待安装完成后点击 终端窗口顶部右侧的折叠栏 &amp;ndash;&amp;gt; 进入设置 &amp;ndash;&amp;gt; 将默认配置文件改为 PowerShell&lt;/p&gt;
&lt;p&gt;&lt;img alt="powershell" class="gallery-image" data-flex-basis="1467px" data-flex-grow="611" height="181" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.wemoez.com/post/build-hugo-with-stack/powershell.webp" srcset="https://blog.wemoez.com/post/build-hugo-with-stack/powershell_hu_134fc80a83c2beb5.webp 800w, https://blog.wemoez.com/post/build-hugo-with-stack/powershell.webp 1107w" width="1107"&gt;&lt;/p&gt;
&lt;h3 id="3安装git--拉取主题"&gt;3.安装Git —— 拉取主题
&lt;/h3&gt;&lt;p&gt;前往 &lt;a class="link" href="https://git-scm.com/downloads" target="_blank" rel="noopener"
 &gt;Git 官方页面&lt;/a&gt; 下载并安装最新版本的Git&lt;/p&gt;
&lt;h3 id="4安装winscp--上传构建文件"&gt;4.安装WinSCP —— 上传构建文件
&lt;/h3&gt;&lt;p&gt;前往 &lt;a class="link" href="https://winscp.net/eng/download.php" target="_blank" rel="noopener"
 &gt;WinSCP Download Page&lt;/a&gt; 下载并安装最新版本的WinSCP&lt;/p&gt;
&lt;h3 id="服务器工作环境debian为例"&gt;&lt;strong&gt;服务器工作环境(Debian为例)&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;通过SSH远程连接上你的服务器，并获取root用户权限，键入以下代码安装 Nginx&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;deb http://nginx.org/packages/&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;lsb_release -is &lt;span class="p"&gt;|&lt;/span&gt; tr &lt;span class="s1"&gt;&amp;#39;[:upper:]&amp;#39;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;[:lower:]&amp;#39;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;lsb_release -cs&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; nginx&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/apt/sources.list.d/nginx.list
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://nginx.org/keys/nginx_signing.key &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/apt/trusted.gpg.d/nginx.asc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt install nginx -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chown -R www-data:www-data /var/www/html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="2站点构建"&gt;2.站点构建
&lt;/h2&gt;&lt;p&gt;在本地文件夹内打开PowerShell，并键入以下代码新建一个站点，并拉取Stack主题&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cmd" data-lang="cmd"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo new site mysite
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;cd&lt;/span&gt; mysite
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/CaiJimmy/hugo-theme-stack/ themes/hugo-theme-stack
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;编辑目录下的 &lt;code&gt;hugo.toml&lt;/code&gt; 中添加以下内容&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;theme&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;hugo-theme-stack&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;随后即可在PowerShell中运行如下命令来运行本地开发服务端进行预览，浏览器访问&lt;a class="link" href="http://localhost:1313" target="_blank" rel="noopener"
 &gt;http//:localhost:1313&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cmd" data-lang="cmd"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo server -buildDrafts
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img alt="example" class="gallery-image" data-flex-basis="315px" data-flex-grow="131" height="996" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.wemoez.com/post/build-hugo-with-stack/example.webp" srcset="https://blog.wemoez.com/post/build-hugo-with-stack/example_hu_180b756c6eeec07b.webp 800w, https://blog.wemoez.com/post/build-hugo-with-stack/example.webp 1308w" width="1308"&gt;&lt;/p&gt;
&lt;p&gt;使用以下命令来构建站点文件，默认保存在目录的public文件夹下&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo --cleanDestinationDir
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;通过此方法安装的主题，请务必记住任何时刻不要直接修改themes目录下的主题文件，如果你需要自定义主题，请按照相同的路径复制到项目根目录进行编辑，Hugo会优先使用根目录的内容以覆盖主题默认内容&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;举个例子，你要修改&lt;code&gt;themes\hugo-theme-stack\layouts\index.html&lt;/code&gt;这个文件，不要直接进行编辑，而是将此文件复制到&lt;code&gt;根目录\layouts\index.html&lt;/code&gt;后再进行编辑&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意：主题配置文件格式为yaml与hugo的toml不同，修改的时候请注意！网络上有很多两者格式的转换器，可自行转换成相同格式&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="3站点部署"&gt;3.站点部署
&lt;/h2&gt;&lt;h3 id="1将构建好的文件上传至服务器"&gt;1.将构建好的文件上传至服务器
&lt;/h3&gt;&lt;p&gt;在你的项目目录内创建一个 &lt;code&gt;upload.txt&lt;/code&gt; 和 &lt;code&gt;upload.bat&lt;/code&gt; (与mysite文件夹同级)&lt;/p&gt;
&lt;p&gt;向 &lt;code&gt;upload.txt&lt;/code&gt; 中添加以下内容&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;open&lt;/span&gt; &lt;span class="n"&gt;sftp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;yourserveripordomain&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;hostkey&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;*&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;your_password&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;synchronize&lt;/span&gt; &lt;span class="n"&gt;remote&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;mirror&lt;/span&gt; &lt;span class="n"&gt;myblog&lt;/span&gt;\&lt;span class="n"&gt;public&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;html&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;注意将服务器IP、账户密码、部分文件目录路径等修改为你自己的&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;向 &lt;code&gt;upload.bat&lt;/code&gt; 中添加以下内容&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;echo&lt;/span&gt; &lt;span class="n"&gt;off&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;C:\Program Files (x86)\WinSCP\WinSCP.com&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;script&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;upload&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;txt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;pause&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;此处WinSCP的安装位置是默认安装目录&lt;/p&gt;
&lt;p&gt;运行 BAT 文件即可自动上传至服务器站点目录&lt;/p&gt;
&lt;h3 id="2nginx配置"&gt;2.Nginx配置
&lt;/h3&gt;&lt;p&gt;以下仅提供一份示例配置文件，具体的内容和安全措施请自行配置&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-nginx" data-lang="nginx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;server&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;listen&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;server_name&lt;/span&gt; &lt;span class="s"&gt;yourdomain.com&lt;/span&gt; &lt;span class="s"&gt;www.yourdomain.com&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 强制 HTTPS 重定向
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;301&lt;/span&gt; &lt;span class="s"&gt;https://&lt;/span&gt;&lt;span class="nv"&gt;$host$request_uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;server&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;listen&lt;/span&gt; &lt;span class="mi"&gt;443&lt;/span&gt; &lt;span class="s"&gt;ssl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;server_name&lt;/span&gt; &lt;span class="s"&gt;yourdomain.com&lt;/span&gt; &lt;span class="s"&gt;www.yourdomain.com&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;http2&lt;/span&gt; &lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;root&lt;/span&gt; &lt;span class="s"&gt;/var/www/html&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;index&lt;/span&gt; &lt;span class="s"&gt;index.html&lt;/span&gt; &lt;span class="s"&gt;index.htm&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 证书路径（示例：Let’s Encrypt）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;ssl_certificate&lt;/span&gt; &lt;span class="s"&gt;/cert/yourdomain.com/fullchain.pem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;ssl_certificate_key&lt;/span&gt; &lt;span class="s"&gt;/cert/yourdomain.com/privkey.pem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# SSL 配置（安全加固）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;ssl_protocols&lt;/span&gt; &lt;span class="s"&gt;TLSv1.2&lt;/span&gt; &lt;span class="s"&gt;TLSv1.3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;ssl_prefer_server_ciphers&lt;/span&gt; &lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;ssl_ciphers&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;server_tokens&lt;/span&gt; &lt;span class="no"&gt;off&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 限制请求方法（只允许 GET、HEAD、POST）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;if&lt;/span&gt; &lt;span class="s"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$request_method&lt;/span&gt; &lt;span class="s"&gt;!~&lt;/span&gt; &lt;span class="s"&gt;^(GET|HEAD|POST)&lt;/span&gt;$&lt;span class="s"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;444&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 禁止访问隐藏文件（以 . 开头的文件，如 .htaccess）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;location&lt;/span&gt; &lt;span class="p"&gt;~&lt;/span&gt; &lt;span class="sr"&gt;/\.(?!well-known)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;deny&lt;/span&gt; &lt;span class="s"&gt;all&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 日志
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;access_log&lt;/span&gt; &lt;span class="s"&gt;/var/log/nginx/access.log&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;error_log&lt;/span&gt; &lt;span class="s"&gt;/var/log/nginx/error.log&lt;/span&gt; &lt;span class="s"&gt;warn&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;注意：这份配置文件理论上只是参考不建议直接使用，其中请修改SSL证书路径、你的域名，以及要开放80与443端口的TCP协议防火墙&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果有SSL协议上的错误请确保服务器OpenSSL的版本为较新的版本，并能够被Nginx正确调用&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;随后使用如下命令验证Nginx配置文件是否正确&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nginx -t
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;没问题的话就使用如下命令重新加载Nginx以启用站点，随后就可以使用 https://你的域名 来访问站点了&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nginx -s reload
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="结语"&gt;结语
&lt;/h2&gt;&lt;p&gt;希望对你有帮助，本指南可能忽略了许多细节，请多多包涵！&lt;/p&gt;
&lt;h2 id="版权"&gt;版权
&lt;/h2&gt;&lt;p&gt;本文章隶属于 &lt;a class="link" href="https://blog.atri.pw" target="_blank" rel="noopener"
 &gt;DDverse&lt;/a&gt; ，遵循 © CC BY-NC-SA 4.0 协议，如需转载请保留来源并在必要的时候告知我&lt;/p&gt;</description></item></channel></rss>