Shiro,一个极简主义的个人网站,如纸的纯净和雪的清新。
innei 大佬与
Shiro : Shiro - 全新风格,再次起航
Shiro/Shiroi 为 Mix-Space 前端主题,其中,Shiroi 为闭源版本,通过赞助 Innei Innei获取。
开源闭源在部分功能上有所区别,可在官方文档看到部分闭源版本功能。
Shiro 及相关项目#
Vercel 部署#
Shiro Vercel 部署请参阅官方文档
https://mx-space.js.org/themes/shiro
云服务器 / 本地部署#
系统 / 环境要求#
- Linux, 内核版本 > 4.19 (推荐 Debian11 / 12) 教程以 Debian11 / 12 为例
- 服务器内存需 2~4Gib,构建完成运行只需 512Mib 甚至更低 (内存小 or 可用内存不足的可在本地构建或者配置 2~4G 的 Swap):博主服务器为 2H-2G,故配置了 4G Swap。
- 使用 NVM 安装 Node.js v20.12.2,以及 PNPM / PM2 /sharp
- Screen 实现后台保活(可选)
- 采用 1Panel+OpenResty(可选)
必要的准备#
-
域名:本篇所采用~~双二级域名模式,即前端
www.vlo.cc
,后端api.vlo.cc
~~ -
前后端域名所需 SSL 证书:需要全站 HTTPS (前端访问 API 问题,可以尝试后端配置文件 ALLOWED_ORIGINS 加上
localhost,127.0.0.1
壹・NodeJS 等相关环境#
刷新系统包缓存与安装常用 / 必备软件包
2、运行 source ~/.profile 命令将环境变量重新加载到当前会话中。
3、列出 Node.JS 的可用版本。
4、确定版本后,运行 nvm install version 命令下载并安装它。例如,安装 Node.JS 20.12.2 ,
强烈推荐 V20.12.2 版本
5、安装 pnpm pm2
6、安装 sharp
贰・Shiro 的配置与构建#
一・Core 后端云函数配置#
具体可参考官方文档:
** 后端设置主题配置 **
进入 Mix Space 后台,进入「配置与云函数」页面,点击右上角的新增按钮,在编辑页面中,填入以下设置:
- 名称:shiro
- 引用:theme
- 数据类型:JSON
- 数据:右侧复制以下示例,更改为自己的信息
二・拉取 Shiro/Shiroi#
三・配置 .env#
复制 .env.example 为 .env 并编辑 .env 文件
.env 示例
四・开始构建 Shiro/Shiroi 项目#
::: warning
若服务器所在区域无法访问 NPM 官方源,可能导致依赖安装失败而出现如下报错
解决:构建前手动修改项目 .npmrc 配置文件
:::
构建时间较慢长,需耐心等待...
::: gallery
:::
叁・Shiro 启动!#
1、直接前台启动,在 Shiro 根目录直接运行
pnpm prod:pm2
,可使用 nohup 或其他使其后台运行
2、使用 Screen 实现后台保活 (推荐)
启动完成后 按 Ctrl +A+D即可退出并挂起 shiro 对话,完成 Shiro 后台运行。
** 注意:** 两种启动方式重启 servers 后都需重新启动下 Shiro
Screen 食用教程:https://www.mintimate.cn/2021/09/02/howToUseScreen/
很不错的教程
肆・反代与更新#
一・反向代理#
以 1Panel+OpenResty 为例
- 新建静态网站
- 配置 SSL 证书开启 HTTPS
- 在
add_header Strict-Transport-Security "max-age=31536000";
下方或者最后一个}
的上方另起一行 CV 反代配置
双域名前端反代示例
单域名前端反代示例
二・Shiro 更新#
上面更新方法没试过,试过了,很棒!是参考Arthals大佬的文章 偷来的
国内服务器拉不到 git 的话我就只能用笨方法更新:本地拉取 git 在上传服务器,然后从上文的 贰・Shiro 的配置与构建中二到四 流程再走一遍🤣(🥹
三・Markdown 扩展语法#
请阅读 https://shiro.innei.in/#/markdown
伍・踩坑#
一・字体拉取失败#
Shiro 构建时会拉取字体文件,
若服务器无法 Ping 通 fonts.googleapis.com/fonts.gstatic.com,
可能会出现如下报错,最终构建失败
大概是服务器解析到的 IP 不太行.....
解决:更改 hosts 文件,为 fonts.googleapis.com/fonts.gstatic.com 指定一个服务器可以 Ping 通的 IP
可以用 itdog 查下字体域名的 ip,然后服务器尝试 ping 一下,哪个 ping 的通就改哪个
二・OAuth2 相关问题#
- 回调报错 redirect_uri
第一种方法:切换单域名
以下问题已有新的解决方法
如果你是跟我一样最开始使用了双域名,那么配置 OAuth2 时会出现如下报错,目前只能切换为单域名了,因为 OAuth 所接入的 Github/Google, 都只能同一域名下(二级也只能是同一个二级)
切换方法:
- 前端域名重新配置反代,上面给出了示例配置
- 进入后台设置 - 网站设置:把
API,GW,后台
地址改为前端同 二级 / 顶级域名,如原 API 地址:api.vlo.cc/api/v2
,改为:www.vlo.cc/api/v2
第二种方法:复制 Core/Shiro 部署两篇文章内新的双域名反代配置
FAQ:
新的配置文件有什么更改呢?
我在原前后端反代配置示例文件的每个 location 中都添加了如下配置(貌似后端添加就行,我为了保险前后端全部添加了)。
做完这些仍然redirect_uri
怎么办?
大概率是缓存问题,清除缓存 OR 浏览器开隐私模式测试是否正常。
- 后端不认主
如果你的后端 core 版本在 7.0.3-7.0.6, 或 7.0.6 之后的某版本开始配置 OAuth 的, 一直无法成功(猜测原因可能是某个版本有 BUG,Core 升级无法解决,回退版本可解)
包括不限于:后端不认主人,前后端主人无法登录,redirect_url 错误等,
可以尝试 Core 退回7.0.2-alpha.0
版本:配置 oauth 并验证设为主人账户,前后端使用 OAuth 进行登录测试(仍然有redirect_url
的 问题可能有缓存作怪,可以尝试新环境测试),测试没问题后直接升级latest
版本
参考文章#
感谢官方以及社区大佬们的贡献!
Arthals + Shiro:如纸一般纯净的新博客
官方文档
Yukina
此文由 Mix Space 同步更新至 xLog
原始链接为 https://www.vlo.cc/posts/jc/shiro