博客搭建过程(二)
1 静态博客搭建(Hugo)
选择Hugo
的原因前面有写,没想到本来以为很简单的静态博客也会遇到坑,无语,还是自己太菜了啊。
1.1 Hugo本地安装
- 首先通过
homebrew
安装Hugo
。 - 然后通过
hugo version
命令检查一下Hugo
的版本。 - 然后是通过
hugo new site <blog>
命令生成项目目录。 - 然后是安装主题,这是必须的。
- 通过
Git
安装比较方便,要先在Github
上创建一个仓库,用来存放博客源文件。 - 然后执行
git init
命令。 - 然后安装主题(这里用的是Anubis主题)。
git submodule add https://github.com/mitrichius/hugo-theme-anubis.git themes/anubis
- 安装后需要启用主题,方法是将主题名称写入到根目录下的默认配置文件 config.yml 中
echo 'theme = “anubis”’ >> config.toml
。 - 现在可以生成第一篇文章了
hugo new posts/my-first-post.md
。 - 想本地看的话,就执行
hugo server
,然后去1313端口查看,不过要把markdown
里的draft
改成false
。
1.2 托管到Github Pages(后期放弃)
-
发布到
GitHub Pages
上去,稍微有点复杂,容易踩坑。 -
先去
GitHub
上再建一个仓库,名字有要求,不想花钱就得public
。 -
这里有个超级大坑,就是静态目录的仓库创建的时候,不能是空仓库,不然之后添加
Git
子模块会报错,手动搞非常麻烦,解决方法是创建的时候,选择添加readme
文件。 -
然后把配置文件里的
baseUrl
改成自己的地址,很容易忘记。 -
先去到项目文件夹,这个时候只有
git init
,没有添加远程仓库git remote add origin XXX.git
。 -
然后推送一波:
git init
git remote add origin https://github.com/Github 用户名/Github 用户名.github.io.git
git add .
git commit -m '[介绍,随便写点什么,比如日期]'
git push -u origin master
-
然后如果你这个时候,生成了
public
文件夹,要先删掉,这一步不能少。 -
然后执行
git submodule add -b main https://github.com/<USERNAME>/<USERNAME>.github.io.git public
-
如果远程仓库是空的,会失败。
1 2 3
warning: You appear to have cloned an empty repository. fatal: 'origin/main' is not a commit and a branch 'main' cannot be created from it Unable to checkout submodule 'public'
-
如果之前创建仓库的之后,添加了
readme
文件就不会有这个问题。 -
然后编辑自动执行脚本,运行,成功!
1.3 实现博客的中英文切换
- 首先,
Hugo
本身是支持多语言的。 - 如果用的主题,原生不支持多语言的话,关键在于
Hugo
的TOML
配置文件的修改,可以实现博客整体的多语言切换。 - 某一篇文章单独的双语言切换,需要主题的原生支持。
- 例如,我最开始用的主题,
Anubis
,支持全站的语言切换,但是不支持单独一篇文章的语言切换,后来联系作者,他表示需要他做一些工作,然后就可以单篇文章切换语言。
1.4 主题变更
- 一开始我用的是一个在
Hugo
主题网站随便找的一个比较简洁的主题,叫Anubis
,但是过于简单,主要还是多语言这里做的不是太好。 - 后面试过Eureka,也是一个非常不错的主题,不过设计这块没有戳中我。
- 最终选择了LoveIt,一个非常强大非常灵活的主题。
1.5 LoveIt主题报错无法使用
- 大坑报错什么
failed to render pages
1.6 托管到Vercel
-
GitHub Pages
托管简单,但是有国内访问慢,不容易被百度收录等问题,可考虑其他托管平台,例如Vercel
或者Netlify
,查了点资料似乎前者更好。 -
(经实际测验,同时部署的情况下,
Netlify
的DNS会优先于Vercel
,遂放弃Netlify
) -
值得注意的是,
Vercel
的Hugo
版本比较低,不支持LoveIt
主题,需要手动指定一下,在项目根目录添加vercel.json
文件,并加入以下内容。
|
|
Netlify
也是一样的问题 在项目根目录添加netlify.toml
文件,并加入以下内容。
|
|
1.7 托管后国内无法访问
- 解决国内无法访问的问题,关键在于添加的域名,要带
www
,然后把阿里云的解析,解析道Vercel
的DNS
,而不是IP
地址,可实现国内正常访问,自带Https
,舒服。
1.8 Valine评论系统异常
- 还要解决一个
Valine
评论异常:Code 403: 访问被API域名白名单拒绝,请检查你的安全域名设置
,原因是Valine
评论基于LeanCloud
,主题里默认用的是别人的账户,没有自己注册,自然不在别人的白名单里。
- Valine有隐私问题,目前尚未解决,但是可以手动处理一下,实测已经可以用了。
1.9 更换Waline评论系统
Valine
许久不更新,还有各种各样的问题,决定换成Waline
,毕竟是为了解决Valine
的问题而生,而且更好看一点。
按照大佬的指导,一步一步完成
serverUrl
不要忘了https://
,不然不行。。。- 多语言支持,页面顶部的评论数没有修改,需要改一下。
|
|
- 下一步是改评论框的样式,现在这样太丑了,原来
Valine
的样式比较好看,而且支持明暗主题变化,写在后面。
1.10 LoveIt主题样式修改
1.10.1 图标删除
- 删除主页的头像,配置文件中
avatarURL = ""
即可。 - 删除页脚主题的图标,找到
/themes/LoveIt/layouts/partials/footer.html
这个文件,删除15
行的标签<i class="far fa-kiss-wink-heart fa-fw"></i>
即可。 - 删除文章作者前的头像图标
- 删除
/themes/LoveIt/layouts/_default/summary.html
中第30
行的”Icon" (dict "Class" "fas fa-user-circle fa-fw")
- 删除
/themes/LoveIt/layouts/_default/single.html
中第36
行的"Icon" (dict "Class" "fas fa-user-circle fa-fw")
- 删除
- 删除标签页的图标,去到
/themes/LoveIt/layouts/partials/link.html
,把4
到17
行的href
后的路径全部干掉即可。
1.10.2 许可证协议更改
- 协议链接改为
https://creativecommons.org/licenses/by-nc-nd/4.0/
1.10.3 背景颜色修改
- 感觉浅色主题背景颜色太白,刺眼,改灰一点
- 修改
/themes/LoveIt/assets/css/_variable.scss
中的13
行颜色变量即可,改成#f1f0f0
- 再把
/themes/LoveIt/assets/css/_variable.scss
中第56
行的Header
颜色加深一点,改成#f9f9f9
- 修改
- 感觉深色主题背景颜色不好看,模仿少数派
- 修改
/themes/LoveIt/assets/css/_variable.scss
中的14
行颜色变量即可,改成#232222
- 再把
/themes/LoveIt/assets/css/_variable.scss
中第57
行的Header
颜色加深一点,改成#2F2D2D
- 修改
1.10.4 字体修改
- 字体大小修改
- 把页面标题的字体改大一点
/themes/LoveIt/assets/css/_page/home.scss
中第116
行,改成1.6rem
/themes/LoveIt/assets/css/_page/_single.scss
中第6
行,改成1.8rem
- 把副标题的字体改小一点,主题的
/themes/LoveIt/assets/css/_page/_home.scss
文件里中第34
行,修改为font-size: 2rem;
- 把作者名字字体改小一点,
/themes/LoveIt/assets/css/_page/_single.scss
中的第34
行,改成0.875rem
- 把文章目录字体改小一点,
/themes/LoveIt/assets/css/_variable.scss
中的第75
行,改成0.8rem
- 把菜单字体改粗一点,
/themes/LoveIt/assets/css/partial/_header.scss
中的第50
行,增加font-weight: 400;
- 把页面标题的字体改大一点
- 字体粗细修改
- 正文字体改细一点,修改
/themes/LoveIt/assets/css/_variable.scss
中的9
行字体粗细即可,改成300
- 首页标题字体改细一点,
/themes/LoveIt/assets/css/_home.scss
中的119
加入font-weight: 400;
- 单篇文章标题字体改细一点,
/themes/LoveIt/assets/css/_page/_single.scss
中的第7
行改成font-weight: 400;
- 正文字体改细一点,修改
- 字体颜色修改
- 暗色背景下,把字体颜色改亮一点,修改
/themes/LoveIt/assets/css/_variable.scss
中的18
行字体颜色即可,改成#B6B6B6
- 浅色背景下,修改摘要字体颜色,注释
/themes/LoveIt/assets/css/_home.scss
中的130
行即可
- 暗色背景下,把字体颜色改亮一点,修改
1.10.5 标题目录修改
_custom.scss
实现,基本靠雨临大佬的博客。-
把
/themes/LoveIt/assets/css/_single.scss
中的第106
行到108
行,111
行,117
行全部注释掉 -
把
/themes/LoveIt/assets/css/_partial/_single/_toc.scss
中的17
行注释掉,28
行改成padding-left: 1rem;
-
这里是我的
_custom.scss
|
|
1.10.6 Waline评论框样式修改
LoveIt
主题默认不支持Waline
,需要手动加入。
- 默认的Waline,样式不是很喜欢,想改成默认Valine的样式。
_custom.scss
文件里是不会生效的,至少我这里是这样,会被覆盖,不知道如何解决,只能去修改引入的Waline.min.js
,配置文件里的路径为https://cdn.jsdelivr.net/npm/@waline/client/dist/Waline.min.js
,把这个文件下载下来,修改完再上传到某个地方,重新引入配置文件即可(我用的是阿里云OSS)。- 修改评论框背景:删除.
v[data-class=v] .vpanel {}
中的background: var(--waline-bgcolor);
- 修改输入框高亮:删除
.v[data-class=v] .veditor:focus, .v[data-class=v] .vinput:focus {}
中的background: var(--waline-bgcolor-light);
- 修改字体颜色:删除
:root {}
中的--waline-text-color: #444;
- 修改评论者名称颜色:删除
v[data-class=v] .vcard .vhead span.vnick {}
中的color: var(--waline-dark-grey);
1.10.7 增加二级菜单
1.10.8 添加站点运行时间
大佬的博客中只给出了中文的站点运行时间,这里给出根据主题切换的中英文站点运行时间。
custom.js
文件
|
|
footer.html
文件
|
|
1.10.9 增加标签页效果与点击效果
1.10.10 增加正文宽度
- 在
/themes/LoveIt/assets/css/_core/_media.scss
中的第3
行与第9
行,将宽度改为150%
。
1.11 图片展示
- 有两种方式,一是在文档的同目录下,建立
images
文件夹,把图片放进去,使用相对路径放到markdown
中,这样的好处是编写的时候可以预览,缺点是部署到网页后,图片不会自适应,会保持原大小,居左。 - 另一种方式是使用内置
Shortcodes
的figure
标签,或者扩展Shortcodes
中的image
标签,图片必须放在assets
目录下的images
目录中,缺点是不能预览,好处是可以自适应。 - 比较各种样式之后,选择
figure
。 - 【2021/11/15更新】figure标签不生效,需要使用image,原因未知。
1.12 显示数学公式
-
不知道为什么,按照文档的默认方式无法显示数学公式。
-
参考大佬的解决方法解决了这一问题。
-
在
/themes/LoveIt/layouts/partial/
目录下,加入mathjax.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
<script type="text/javascript" async src="https://cdn.bootcss.com/mathjax/2.7.3/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [['$$','$$'], ['\[','\]']], processEscapes: true, processEnvironments: true, skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'], TeX: { equationNumbers: { autoNumber: "AMS" }, extensions: ["AMSmath.js", "AMSsymbols.js"] } } }); MathJax.Hub.Queue(function() { // Fix <code> tags after MathJax finishes running. This is a // hack to overcome a shortcoming of Markdown. Discussion at // https://github.com/mojombo/jekyll/issues/199 var all = MathJax.Hub.getAllJax(), i; for(i = 0; i < all.length; i += 1) { all[i].SourceElement().parentNode.className += ' has-jax'; } }); </script> <style> code.has-jax { font: inherit; font-size: 100%; background: inherit; border: inherit; color: #515151; } </style>
-
修改同一目录下的
header.html
,第二行加入{{ partial "mathjax.html" . }}
1.13 博客收录
-
让
Internet Archive
收录自己的网站,比较简单 -
让搜索引擎能检索到自己的网站,要先验证自己是网站所有者,要去
DNS
解析服务商那边提供验证,粘贴谷歌给的TXT
,然后主题自带的sitemap
,在谷歌的控制台上传即可。 -
百度收录竟然要真实姓名,手机QQ微信等,不想弄了,就让百度搜索不到吧。
1.14 文章链接与SEO
-
LoveIt
默认的文章链接使用标题,而中文标题会乱码且不利于SEO,所以使用slug
的方式。 -
先在配置文件里将
Permalinks
改成posts = “:slug.html”
,然后在每篇文章的yaml头信息里添加slug
即可。