<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
<channel>
<atom:link href="https://tuolanzhiren.site/feed" rel="self" type="application/rss+xml"/>
<title>拖懒之人的自留地</title>
<link>https://tuolanzhiren.site</link>
<description>哈喽~欢迎光临</description>
<language>zh-CN</language>
<copyright>© tuolanzhiren </copyright>
<pubDate>Sun, 10 May 2026 11:52:19 GMT</pubDate>
<generator>Mix Space CMS (https://github.com/mx-space)</generator>
<docs>https://mx-space.js.org</docs>
<image>
    <url>https://s21.ax1x.com/2025/03/05/pEYJssg.jpg</url>
    <title>拖懒之人的自留地</title>
    <link>https://tuolanzhiren.site</link>
</image>
<item>
    <title>网站部署杂记</title>
    <link>https://tuolanzhiren.site/posts/default/shiro-deploy</link>
    <pubDate>Wed, 05 Mar 2025 15:06:28 GMT</pubDate>
    <description>技术选型

前端模板：Shiro
后端服务：Mix Space
反向代理：Caddy（支持自动 HT</description>
    <content:encoded><![CDATA[
      <blockquote>该渲染由 marked 生成，可能存在排版问题，最佳体验请前往：<a href='https://tuolanzhiren.site/posts/default/shiro-deploy'>https://tuolanzhiren.site/posts/default/shiro-deploy</a></blockquote>
      <h2>技术选型</h2>
<ul>
<li>前端模板：<a href="https://github.com/innei/Shiro">Shiro</a></li>
<li>后端服务：<a href="https://mx-space.js.org/">Mix Space</a></li>
<li>反向代理：<a href="https://caddyserver.com/">Caddy</a>（支持自动 HTTPS 证书申请）</li>
<li>域名和服务器均在腾讯云上</li>
<li>docker compose部署</li>
</ul>
<h2>部署步骤</h2>
<ol>
<li>进行域名备案，如果不备案腾讯云dns会劫持域名解析，同时也会让caddy的自动申请证书功能失败</li>
<li>docker compose先部署caddy和mix space服务，进入后台管理界面对网站进行基础配置，特别是<a href="https://mx-space.js.org/docs/themes/shiro/deploy#%E8%AE%BE%E7%BD%AE%E4%B8%BB%E9%A2%98%E9%85%8D%E7%BD%AE">此配置</a>，然后再部署shiro服务；也可三个服务一起部署，但是<strong>在后台配置完成前，一定不要访问前端服务</strong> (原因下文会讲)</li>
</ol>
<h2>遇到的问题</h2>
<h3>caddy无法自动申请证书</h3>
<p>caddy无法申请证书，会报如下图的acme的错误，查询后发现是因为腾讯云购买的域名的dns解析为dnspod，caddy需要安装对应的dns解析插件。
</p>
<p>参考caddy的官方镜像的<a href="https://hub.docker.com/_/caddy">文档</a> ，知道如何build加入dnspod组件的镜像，重新build一个定制镜像即可，这是<a href="https://caddyserver.com/download?package=github.com%2Fcaddy-dns%2Fdnspod">dnspod</a> 需要的插件</p>
<p>Dockerfile如下：</p>
<pre><code class="language-undefined">[object Object]</code></pre><p>也可以使用我已经build好的镜像<code>chen1yuan2/caddy-dnspod:2.9.1-alpine</code></p>
<h3>前端页面报【禁止访问或者API服务出现问题】的错误</h3>
<p>在部署完三个服务后，在根据此<a href="https://mx-space.js.org/docs/themes/shiro/deploy#%E8%AE%BE%E7%BD%AE%E4%B8%BB%E9%A2%98%E9%85%8D%E7%BD%AE">基础设置</a>在后台管理页面进行配置之前就访问了shiro前端页面，会出现这个<a href="https://github.com/Innei/Shiro/issues/495#issuecomment-2495777283">issue</a>提到的错误</p>
<p>通过翻源码<a href="https://github.com/Innei/Shiro/blob/8a9bad3b4ffba42dc57ec0b16ccc64a2f10bf159/src/app/(app)/api.tsx#L14">https://github.com/Innei/Shiro/blob/8a9bad3b4ffba42dc57ec0b16ccc64a2f10bf159/src/app/(app)/api.tsx#L14</a> 发现是使用了<code>react</code>的<a href="https://react.dev/reference/react/cache">cache</a>这个api导致的，初次访问时会调用后端接口获取上文提到的配置的内容，然后把结果缓存下来，因为此函数调用没有参数，所以后续的请求都会命中react的缓存，导致获取值一直为空，即便后续在后台配置了对应配置也无用，除非重启shiro这个前端服务</p>
<h3>caddy反代无法找到前后端服务</h3>
<p>因为使用了3个docker compose 分别进行部署，<code>network</code>不通用，需要使用一个统一的<code>network</code>,解决方案就是需要在mix space的compose文件里声明一个网络，然后在其他两个服务的<code>docker-compose.yaml</code>中使用这个网络，这样才能保证三个服务之间的通信。</p>
<h2>参考部署配置</h2>
<h3>mix space的配置</h3>
<p>mix-space的<code>docker-compose.yml</code></p>
<pre><code class="language-undefined">[object Object]</code></pre><h3>shiro的配置</h3>
<p>shiro的<code>docker-compose.yml</code></p>
<pre><code class="language-undefined">[object Object]</code></pre><h3>caddy的配置</h3>
<p>caddy的<code>docker-compose.yml</code></p>
<pre><code class="language-undefined">[object Object]</code></pre><p>caddy的<code>Caddyfile</code></p>
<pre><code class="language-undefined">[object Object]</code></pre><h2>总结</h2>
<h2>常见问题排查</h2>
<table>
<thead>
<tr>
<th>问题现象</th>
<th>解决方案</th>
</tr>
</thead>
<tbody><tr>
<td>HTTPS 证书申请失败</td>
<td>检查 DNSPod 插件是否正确安装</td>
</tr>
<tr>
<td>前端配置不生效</td>
<td>重启 Shiro 服务清除 React 缓存</td>
</tr>
<tr>
<td>接口 404 错误</td>
<td>验证网络配置和路由规则</td>
</tr>
</tbody></table>
<h2>扩展阅读</h2>
<ol>
<li><a href="https://mx-space.js.org">MX Space 官方文档</a></li>
<li><a href="https://caddyserver.com/download">Caddy 插件列表</a></li>
<li><a href="https://docs.docker.com/network/">Docker 网络配置指南</a></li>
<li><a href="https://github.com/innei/Shiro">Shiro</a></li>
</ol>

      <p style='text-align: right'>
      <a href='https://tuolanzhiren.site/posts/default/shiro-deploy#comments'>看完了？说点什么呢</a>
      </p>
    ]]>
    </content:encoded>
  <guid isPermaLink="false">67c86874d25b70015c215f9b</guid>
  <category>posts</category>
<category>默认分类</category>
 </item>
  
</channel>
</rss>